본문 바로가기

.NET/.NET Framework

.NET Framework 4.0 마이그레이션 이슈 아마 .NET Framework 4.0 을 출시로 향상된 프레임워크의 API 를 사용하기 위해 .NET Framework 4.0 으로 개발하거나 마이그레이션의 계획을 할 예정이라면 반드시 아래의 문서를 보시기 바랍니다. .NET Framework 4.0 으로 마이그레이션 이슈 .NET Framework 4.0 은 구조적으로 전혀 새로워지고 향상된 프레임워크입니다. 그로 인하여 .NET Framework 4.0 은 기존의 구조 또는 API 들이 호환되지 않는 경우가 있습니다. 어플리케이션 레벨과 코어 레벨에서 변경된 사항들로 인한 이슈와 변경 방법을 참고 하십시오. .NET Framework 4 Migration Issues .NET Franework 4.0 호환성 특히 .NET Framework 4.0 .. 더보기
[Techdays2010] .NET Framework 4.0 Managed Extensibility Framework 이제 점점 Visual Studio 2010 RTM 의 출시 시기가 가까워 집니다. 이제 보름 남짓하여 기다리던 Visual Studio 2010 정식 버전이 출시가 됩니다. 몇 번 블로그를 통해 언급한 적이 있지만 '가치를 아는 자만이 가치를 누릴 수 있다' 라는 것이죠. 더불이 .NET Framework 도 이제 .NET Framework 4.0 시대를 도래하게 됩니다. .NET Framework 4.0 을 몰라도 개발에 전혀 지장이 없습니다. 단지, 가치를 누릴 수 없을 뿐입니다. 이번 세미나는 .NET Framework 4.0 의 Managed Extensibility Framework(MEF) 에 대해 세미나를 진행하였습니다. MEF 는 이제 .NET Framework 에 굉장히 중요한 부분을 .. 더보기
MEFGeneric 코드 플랙스에 공개합니다. .NET Framework 4.0 에 포함될 MEF(Managed Extensibility Framework) 은 컴포넌트를 조합하는 방식으로 컴포넌트의 재사용성과 보다 컴포넌트를 동적으로 사용할 수 있는 프레임워크입니다. 하지만 MEF 는 기존에 제네릭 타입(Generic Types) 을 지원하지 않습니다. 이미 C# 2.0 부터 지원하는 Generic Type 을 MEF 에서 지원하지 않는 것도 참 아이러니 합니다. 여기에 대한 내용은 아래의 링크를 참고하십시오. [.NET/.NET Framework] - MEF 에 Generic Type 을 지원하기 위해서..? [.NET/.NET Framework] - MEF 는 Generic Type 을 지원하지 않는다! MEFGeneric 이란? 안타깝게도, .. 더보기
MEF 에 Generic Type 을 지원하기 위해서..? 먼저 이전 포스트의 "MEF 는 Generic Type 을 지원하지 않는다!" 에서 언급했고, .NET CLR 2.0 부터 Generic Type 을 지원함에도 불구하고, .NET Framework 4.0 에 포함되는 MEF 가 Generic Type 을 지원하지 않는다는 것은 솔직히 납득하기가 어렵습니다. MEF 개발 PM 이 말하는 강력한 계약 기반(Strongly Contract Based) 의 모델이라는 점은 머리로는 이해는 되지만, 사실 안될 것도 없습니다. -_-; MEF 가 갖는 대표적인 키워드인 Composable 은 현재 Generic Type 을 지원하지 않지만, 상당히 매력이 있습니다. 이미 현대적인 프레임워크는 Modular 에 집중하고 있고, MEF 는 더 나아가 Modular +.. 더보기
MEF 는 Generic Type 을 지원하지 않는다! .NET Framework 4.0 에 포함이 될 Managed Extensibility Framework(이하 MEF) 는 Generic Type 을 지원하지 않습니다. ( MEF is not supporting Generic Type!!!! ) 상당히 충격입니다. MEF 는 현재 Generic Type 을 지원하지 않습니다. 이것을 가지고 현재 중요한 프로젝트를 진행하기 위해 여러 가지 리뷰를 해 보고 있습니다만, MEF 가 Generic Type 을 지원하지 않는 것은 쉽게 말해 'MEF 는 아직…' 이라는 결론이 나는군요. Managed Extensibility Framework Basic 이것을 이해하기 위해서는 MEF 의 기본부터 이해해야 할 필요가 있습니다. 자세한 내용은 아래의 필자의 블로그.. 더보기
MEF Preview 6 공개 MEF(Managed Extensibility Framework) 이 2009년 7월 13일에 릴리즈되어 14일에 공개가 되었습니다. 특히 MEF 는 .NET Framework 4.0 에 포함이 되어있으며, CodePlex 에서 굉장히 빠른 속도로 발전하고 있는 프레임워크 중에 하나 입니다. CodePlex MEF 사이트에 등록된 릴리즈 노트 입니다. 그 중에서 몇 가지만 살펴보도록 하겠습니다. 실버라이트 3 지원 특히 이번에 눈여겨 볼 만한 것이 Silverlight 3 를 지원하는 것입니다. 이미 Preview 5 이전의 MEF 에서는 실버라이트를 지원하기 위해 코드에서 전처리 명령 구문을 사용하여 프레임워크 실버라이트가 지원되긴 했습니다. 그것을 기반으로 이번 Preview 6 버전에서는 실버라이트.. 더보기
MEF 세미나 동영상 - 6월 10일 지난 6월 10일 VSTS 2010 팀에서 세미나를 진행하였습니다. 세미나 프레젠테이션은 MEF 세미나 자료 에서 볼 수 있습니다. 그리고 얼마 전에 촬영한 동영상도 공개가 되었습니다. VSTS 2010 은 굉장히 큰 규모의 개발 도구, 개발 플랫폼 등의 버전 업으로 아직도 많은 부분을 알려드리지 못했고, 미처 저희들도 모두 알지 못하는 부분도 많습니다. 하지만 남들보다 먼저 접해본 분야이고 이것을 알려드리기 위해 진행한 세미나입니다. 아래의 동영상을 시청하시고 VSTS 2010 에 많은 관심을 가져주세요. ^^ 엄준일 - Managed Extensibility Framework 그리고 저희 팀원들이 진행한 세미나도 굉장히 볼만합니다. 그리고 전혀 중복되지 않는 분야의 세미나이기 때문에, 하나 하나씩 시.. 더보기
CodeFx 프로젝트 CodePlex 에 재미있는 프로젝트가 올라왔네요. CodeFx 라는 프로젝트인데 .NET 의 다양한 분야의 코드에 대한 예제를 굉장히 체계적으로 정리하였네요. 그 중 일부는 재활용 가능한 수준으로 모듈화를 시켰구요. 특히 첨부되는 예제 코드는 자주 사용되거나 중심으로 작성이 되었습니다. 아마도 이 정도 자료면 어디가서 교육이나 강의를 해도 될 정도로 자료를 잘 정리했고, 특히 .NET 을 배우는 입장에서는 더 없이 좋은 레퍼런스 코드가 상당할 듯 합니다. 와우~ 상당히 많은 내용이네요. 웬만한 책 한 권 안부럽겠는데요? COM Data Access Office (VSTO) Language (VB.NET, C#, C++) Library (Reflection, Hook, CodeDom 등) IPC/RPC .. 더보기
MEF 세미나 자료 2009년 6월 10일, 저희 VSTS 2010 공식 팀 블로그에서 에 다양한 분야의 전문가들이 세미나를 진행하였습니다. 강보람님의 C# 연대기 - C# 의 Before/After 공성의님의 VSTS 2010 의 소프트웨어 품질 관리 김병진님의 VSYS 2010 Architecture & UML 엄준일 Managed Extensibility Framework 최흥배님의 Visual C++ 10, C++0x 그리고 Concurrency Runtime 위의 모든 세미나는 I am a Developer 사이트에서 프레젠테이션을 다운로드 받을 수 있고, 조만간 저희 세미나 동영상도 업로드 될 예정입니다. 그리고 저희 VSTS 2010 공식 팀 블로그에서도 웹으로 프레젠테이션을 감상할 수 있습니다. 그리고 아래는.. 더보기
[MEF] 10. Querying the Composition Container Querying the CompositionContainer CompositionContainer 의 Exported 구성 요소를 취득하기 위해서는 컨테이너에 하나의 구성 요소만이 존재해야 합니다. 쿼리(Query) 를 통해 이러한 객체들이 여러 개 존재할 경우 MEF 는 예외를 발생하게 됩니다. 바로 아래와 같은 경우이죠. l 하나의 인스턴스를 요청할 때, 인스턴스를 찾지 못했을 경우 l 하나의 인스턴스를 요청할 때, 인스턴스가 여러 개일 경우 GetExportedObject 일반적으로 ExportAttribute 에 인자가 전달되지 않은 경우는 클래스의 타입이 키 값이 되어, 아래와 같이 구성 요소를 취득할 수 있습니다. class Program { static void Main(string[] ar.. 더보기
[MEF] 9. Recomposition Recomposition 이전 포스트의 MEF 의 특징 중에 MEF 의 플러그인 모델(Plugin Model) 은 교체가 용이하다고 하였습니다. Composable Part 는 구성 요소로써 고유의 기능을 구현합니다. 그리고 MEF 는 각각의 Composable Part 를 조립하여 다양한 컴포넌트 또는 애플리케이션을 완성합니다. 어떠한 경우에는 특정한 구성 구성요소를 사용하다가 그것이 필요 없어질 경우 구성 요소를 언로드(Unload) 하거나 다른 구성요소로 교체할 필요가 있습니다. MEF 의 이러한 유연함의 예를 들어보죠. 예를 들어, 어플리케이션의 로그(Log) 기능을 생각해볼 수 있습니다. 만약 어플리케이션이 동작하는 환경이 인터넷에 연결되지 않는 환경이라면 사용자의 컴퓨터 로컬에 로그를 기록하다.. 더보기
[MEF] 8. Strongly Typed Metadata Strongly Typed Metadata [.NET/.NET Framework] - [MEF] 7. Exports and Metadata 를 통해 Export 의 Contract 에 Metadata 를 제공하는 방법을 알아보았습니다. MetadataAttribute 을 선언하여 Export 의 Metadata 를 제공하는 방법입니다. [Export(typeof(IMessageSender))] [ExportMetadata("SenderType", "Email")] [ExportMetadata("Logging", true)] public class EmailMessageSender : IMessageSender { public void Say() { Console.WriteLine("Import Email.. 더보기
[MEF] 7. Exports and Metadata Exports and Metadata Export 에 Metadata 를 등록하고 제어하는 방법입니다. 지난 포스트에서 알 수 있듯이 Export 는 구성 요소간에 Contact 를 제공하여 이들을 구성(Composition) 할 수 있는 플러그인 모델(Plugin Model) 을 제공해 줍니다. 하지만 Contract 가 제공되어 구성 요소를 확장하고 구성하는 것은 매우 용이하다는 것을 알게 되었으나 Contract 로 인해 파생된 다양한 구성 요소를 어떻게 제어하느냐의 고민을 하게 됩니다. 즉, 다양한 구성 요소 가운데 내가 필요로 하는 구성 요소를 골라낼 수 있도록 Metadata 를 제공하여 구성 요소를 질의(Query)할 수 있도록 하는 것입니다. 예를 들어 아래와 같은 Export 구성 요소 .. 더보기
[MEF] 6. Lazy Exports 일반적인 Exports Composable Part 를 구성하는 동안 특정 Part 에 대한 요청으로 객체 내부의 객체가 필요할 때가 있습니다. 만약 객체가 이런 연관 관계가 있을 경우 객체 내부에 ImportAttribute 을 선언하여 외부 Part 를 Import 할 수 있습니다. 이런 경우는 객체 내부에 Export 간의 Related 관계를 갖게 됨으로써 자동적으로 객체를 초기화할 수 있게 됩니다. ([MEF] 3. Export 선언 참조) 일반적인 Export 를 통해 객체 내부에 Import 를 선언하는 방법입니다. class Program { static void Main(string[] args) { Program p = new Program(); p.Run(); } void Run() .. 더보기
MEF Preview 5 Released MEF Preview 5 Released MEF Preview 5 Released http://mef.codeplex.com/ Managed Extensibility Framework(이하 MEF) 의 Preview 5 가 릴리즈 되었습니다. 새로운 기능적인 면 보다는 기존의 체제에 약간의 변경 내역과 불필요한 기능들의 제거 등이 대부분입니다. 그리고 Caching 의 새로운 Infrastructure 로 개량되었으며, Import/Export 의 Contract 방법도 개선된 방법이 추가가 되었습니다. 아래는 MEF Preview 5 의 Release Notes 입니다. Namespace changes System.ComponentModel.Composition – For part authors. Th.. 더보기
[MEF] 4. Import 선언 Import 선언 MEF 의 구성 요소에 System.ComponentModel.Composition.ImportAttribute 특성을 선언하여 Import 를 선언할 수 있습니다. Import 는 Export 와 사용 방법이 매우 유사합니다. Import 는 프로퍼티(Properties), 필드(Fields), 생성자(Constructors) 에 선언할 수 있으며, 계약된 Export 구성 요소들을 Import 할 수 있습니다. Property Import 프로퍼티로 값을 가져오기 위해 ImportAttribute 특성을 선언하면 됩니다. Import 특성은 세 가지의 시그너처(Signature) 를 제공합니다. public ImportAttribute(); public ImportAttribute(.. 더보기
ASP.NET 에서 Entity Framework 바인딩 문제 Entity Framework 란? Entity Framework 은 논리적인 데이터베이스를 EDM(Entity Data Model) 을 사용하여 추상적인 단계로 끌어올릴 수 있습니다. 보다 쉽게 EDM(Entity Data Model) 을 만들 수 있지만, 운영, 관리적인 면에서는 아직은 미흡한 면이 있네요. 아마도 v2 버전에서는 이러한 고민을 해결할 수 있지 않을까 합니다. Entity Framework 를 보다 자세히 알고 싶으면 아래의 링크를 참조하시기 바랍니다. [.NET/Visual Studio] - 마소10월호 - Visual Studio 2008 서비스 팩 1 알아보기 EDM(Entity Data Model) 바인딩 문제 시작부터 문제가 발생합니다. 우선 Entity Framework 로.. 더보기
[MEF] 3. Export 선언 Exports 선언 MEF 는 Export 를 통해 외부로 구성요소를 노출할 수 있습니다. Export 는 System.ComponentModel.Composition.ExportAttribute 특성을 통해 선언합니다. 이 특성은 클래스 뿐만 아니라 프로퍼티와 메서드에도 선언을 할 수 있습니다. 구성요소 Export 하기 ExportAttribute 특성을 사용하여 아래와 같이 구성요소를 외부로 노출하게 됩니다. ExportAttribute 은 몇 가지의 시그너처(Signature) 를 제공하는데 매개변수를 생략하게 될 경우 MEF 은 클래스의 타입으로 Contract 를 매핑하게 됩니다. [Export] class MessageSender { } 프로퍼티 Export 프로퍼티를 Export 하는 방법.. 더보기
[MEF] 2. Parts 와 Contracts 선언 시작하기 전에 MEF 는 이미 CodePlex 사이트의 Wiki 에 코드를 중심으로 설명이 잘되어 있습니다. 그렇기 때문에 저도 CodePlex 의 사이트를 참고하여 나름대로 각색하여 작성을 하고자 합니다. 레퍼런스가 이미 CodePlex 에 충분하지만, 저는 나만의 시각에서 바라보고 느낀 바를, 그리고 소스 코드를 만들어 가고자 합니다^^ (사실 Wiki 의 설명은 미약할 다름입니다^^;) CodePlex 의 Wiki 를 먼저 보실 분은 최신 버전이 적용이 되지 않은 예제도 있으니 이런 부분은 조심해서 리뷰하시기 바랍니다. 어플리케이션에 MEF 호스팅하기 [그림1] Composition Container Composable Part MEF 에 어플리케이션을 호스팅하기 위해서는 몇 가지의 반복적인 절차를.. 더보기
[MEF] 1. Managed Extensibility Framework 이란? MEF (Managed Extensibility Framework) 란? Menaged Extension Framewkr(이하 MEF) 란? 가장 쉽게 얘기하자면, 어플리케이션과 컴포넌트의 재사용성을 높일 수 있는 프레임워크입니다. 기존의 어플리케이션은 하나의 목적을 하나의 어플리케이션으로 구현한 정적인(Statically) 어플리케이션이라면, MEF 는 보다 동적인(Dynamically) 어플리케이션을 구축할 수 있는 새로운 라이브러리를 제공합니다. 기존의 정적인 어플리케이션은 새로운 요구사항으로 기능을 확장할 필요가 있을 경우 새로운 빌드 버전을 필요로 합니다. 그리고 새로운 빌드 버전은 기존 어플리케이션과 확장된 기능간에 종속적인 관계를 탈피할 수 없었습니다. 이미 프로그램 언어를 사용하여 코드를 .. 더보기
.NET Framework 4.0 의 특징 .NET Framework 4.0 은 Visual Studio 2010 에 포함되는 최신 프레임워크입니다. 이전에는 .NET Framework 의 새로운 특징이라면 .NET Framework 의 기능 향상과 안정성, 그리고 기능 개선이었습니다. 하지만 .NET Framework 4.0 은 탄탄한 Based .NET Framework 를 통해 여러 가지 새로운 변화를 가져옵니다. 이제는 .NET Framework 가 Win32 API 와 같이(Win32 API 와 비교하기 적절하지는 않지만…) 라이브러리의 집합이 아닌, 어플케이션의 차원에서 보다 견고하고 세련된 빌딩(Building) 을 할 수 있는 진정한 프레임워크로 거듭납니다. .NET Framework 4.0 의 특징을 살펴 봅니다. Base Cla.. 더보기
Enterprise Library 4.0 릴리즈 Enterprise Library 4.0 버전이 릴리즈 되었습니다 참고 : Enterprise Library 4.0 - Get it while it's hot! 다운로드 : Enterprise Library 4.0 - May 2008 더보기
.NET 3.5 Enhancements Training Kit .NET 3.5 Enhancements Training Kit Microsoft 에서 .NET 3.5 Enhancements Training Kit 을 내놓았습니다. 소식이 늦은 감이 있지만, 이제서야 포스팅 하게 되었네요. 이 Kit 에는 다음과 같은 내용이 포함되어 있습니다. ADO.NET Data Services ADO.NET Entity Framework ASP.NET Ajax History ASP.NET Dynamic Data ASP.NET MVC ASP.NET Silverlight Controls 다운로드 : http://www.microsoft.com/downloads/thankyou.aspx?familyId=355c80e9-fde0-4812-98b5-8a03f5874e96&displayLa.. 더보기
대기 핸들을 사용하여 ADO.NET 응용 프로그램을 만들자 오늘은 비동기 ADO.NET 을 알아볼까 합니다. 아티클을 이해하기 위해서는 비동기 호출에 대한 지식이 약간 필요합니다. 우리는 다음과 같은 시간이 오래 걸리는 쿼리를 날릴것입니다. WAITFOR DELAY '00:00:03'; SELECT * FROM Titles WAITFOR DELAY '00:00:05'; SELECT * FROM Titles WAITFOR DELAY '00:00:10'; SELECT * FROM Titles 위의 WAITFOR DELAY 는 명령문이 암시하듯 이유없는 대기를 하라는 명령입니다. 3초후에 SELECT, 5초후에 SELECT, 10초후에 SELECT 쿼리를 날려 시간이 오래걸리는 작업을 대체하기 위해서 이지요~ 다음의 쿼리를 쿼리분석기를 통해 실행시켜 보겠습니다. 예상.. 더보기