Prism 4.0 공개

프레임웍 2010. 11. 26. 10:48

UI 개발 프레임웍으로 국내 개발자 사이에서도 관심의 대상이 되고 있는 Prism이 4.0이 지난 11월 13일 공개되었다. Prism은Standalone 형태의 Composite Application 개발에 적합한 UI 프레임웍이다. 백엔드의 다양한 리소스로부터 정보를 취합하여 한 화면에서 사용자의 눈높이에 맞도록, 사용자의 접근 권한에 맞도록, 그리고 사용자의 업무 스타일과 맞도록 화면 구성을 하고, 필요한 리소스를 동적으로 로딩하며, 모듈화된 각 업무 단위 사이의 종속성을 최대한 배제할 수 있도록 구성된 UI 프레임웍이다. (Composite Application의 예로 웹의 경우 포털 화면을 생각하면 쉽게 이해가 된다.) Prism 4.0에서 가장 눈에 띄는 특징은 지원 환경이 WPF, Silverlight 뿐만아니라, Windows Phone 7까지 확대되었다는 점이다.

이번 Prism 4.0에 포함되어 제공되는 것들은 아래와 같다.
1. WPF, Silverlight, Windows Phone 7용 라이브러리
   - Signed Assembly
   - 소스 코드 전부
2. 예제와 Reference Implementation 등 소스코드
   - MVVM과 StockTrader RI
   - 10개의 QuickStart 예제 : 신규 (MVVM, Unity, MEF, Navigation, UI composition 등), Prism 2.0 포팅 (Commanding, Event Aggregation, Multi-targeting, Hello World 등)
3. Prism 사용에 대한 개발자 가이드 (PDF 버전은 CodePlex를 통해 다운로드 가능)
4. 커스텀 Prism 라이브러리 만드는 배치파일, Visual Studio에 Prism 라이브러리 등록해주는 배치파일 등

Prism 4.0을 설치하기 위해 필요한 조건은 기본적으로 .NET Framework 4.0과 Visual Studio 2010이다.
Prism 개발과 상관없지만, Silverlight 개발을 위해서는 Microsoft Silverlight 4 Tools for Visual Studio 2010이 설치되어야 한다.

관련 싸이트는 아래와 같다.
Prism 4.0 다운로드
Prism 4.0 개발자 가이드
Prism 4.0 CodePlex 싸이트

설치하고난 후 디렉토리 구조는 아래와 같다. 대충 어떤 내용이 담겨있는지 추측해볼 수 있다.
image

현재 국내에서도 금융쪽에 Prism을 사용하여 진행중인 대규모 WPF 프로젝트가 있는 것으로 확인되고 있으며, 제조쪽에서도 설비 관련하여 Prism의 도입을 검토중인 것으로 파악되고 있다. Windows Phone 7이 시장에서 좋은 평판을 얻고 있고, 국내에 출시가 되는 시점이면 좀 더 많은 레퍼런스가 생길 것으로 기대하고 있다.

Posted by 장현춘

댓글을 달아 주세요

NuPack v1 CTP 공개

프레임웍 2010. 10. 28. 16:22

마이크로소프트의 오픈 소스에 대한 애정을 엿볼수 있는 툴로서, 이달 초에 ASP.NET MVC 3 베타와 WebMatrix 베타 2를 공개할 때, 함께 공개한 NuPack이다. NuPack은 닷넷 기반의 오픈 소스 패키지를 관리해주는 툴이다. 비주얼 스튜디오에 통합되어 있으며 Power Shell 기반으로 동작한다. 이 툴의 출시를 두고 Scott Hanselman 같은 친구는 지금껏 이런 것 없이 어떻게 살았을까 싶다고 했을 정도로 반기는 분위기이다.

image

코드플렉스에서 다운로드 받아 설치하면 비주얼스튜디오 메뉴의 View –> Other Windows –> Package Manager Console을 클릭하면 위와 같은 PowerShell 창을 볼 수 있다. NuPack은 현재 시장에서 주목받는 오픈 소스 패키지를 명령어 한줄 입력함으로써 내 프로젝트내에 손쉽게 가져와 쓸 수 있도록 만들어주며,  이 과정에서 필요한 dependency 체크를 하여 필요한 패키지를 함께 다운로드 받도록 한다. 또한 다운로드 된 패키지를 web.config 등 설정 파일에 필요한 정보를 기록해준다.

현재 List-Package 명령어를 통해 확인해보니 총 151개의 오픈 소스 패키지가 등록되어 있으며, 여기에는 Unity, Autofac, Castle의 Windsor, Ninject 등 시장에서 관심을 끌고 있는 DI 컨테이너들 뿐만 아니라, Moq, NLog, log4net, NHibernate, NUnit 등 눈에 익은 것들이 다수 포함되어 있다.

image

Posted by 장현춘

댓글을 달아 주세요

많은 개발자들이 기다려온 Enterprise Library (EntLib) 5.0이 출시되었다. EntLib는 개발  과정에서 늘 고민하게 되는 공통적인 코드 블럭들을 마이크로소프트가 전세계 개발자들과 함께 고민하면서 발전시켜 나가고 있는 라이브러리성 프레임웍의 모음집이다. 시장에는 이미 많은 오픈 소스 기반의 라이브러리들이 있어 개발자의 노가다를 줄여주고, 시장에서 검증된 성능의 품질 좋은 코드셋을 앞다투어 쏟아내고 있다. 여기에 마이크로소프트도 거대 닷넷 생태계에 일원으로 참여하고 있는 것이다.

EntLib 5.0은 이전 4.1버전과 마찬가지로 아래와 같은 9개의 application block들로 구성되어 있다.

  • Caching Application Block. Developers can use this application block to incorporate a cache in their applications. Pluggable cache providers and persistent backing stores are supported.
  • Cryptography Application Block. Developers can use this application block to incorporate hashing and symmetric encryption in their applications.
  • Data Access Application Block. Developers can use this application block to incorporate standard database functionality in their applications, including both synchronous and asynchronous data access and returning data in a range of formats.
  • Exception Handling Application Block. Developers and policy makers can use this application block to create a consistent strategy for processing exceptions that occur throughout the architectural layers of enterprise applications.
  • Logging Application Block. Developers can use this application block to include logging functionality for a wide range of logging targets in their applications. This release further improves logging performance.
  • Policy Injection Application Block. Powered by the Interception mechanism built in Unity, this application block can be used to implement interception policies to streamline the implementation of common features, such as logging, caching, exception handling, and validation, across a system.
  • Security Application Block. Developers can use this application block to incorporate authorization and security caching functionality in their applications.
  • Unity Application Block. Developers can use this application block as a lightweight and extensible dependency injection container with support for constructor, property, and method call injection, as well as instance and type interception.
  • Validation Application Block. Developers can use this application block to create validation rules for business objects that can be used across different layers of their applications.
  • 각 application block 사이의 dependency는 아래와 같다.

    image

    이전 버전에 비해 달라진 점 몇가지를 들면...
    * 아키텍처 리팩토링을 통해 DI 기능을 충실히 지원하여 테스트 및 유지보수성이 좋아짐
    * DI 컨테이너 비종속성. (기본은 Unity이며 Objectbuilder와 Unity가 하나로 합쳐져서 더이상 ObjectBuilder가 존재치 않음)
    * 비동기 데이타 접근 지원
    * 캐시 기능 향상
    * Unity 자체 성능 향상
    * 로깅 속도 향상
    * 어셈블리 숫자 감소
    * .NET Framework 4.0 지원, VS2010 통합  지원

    좀 더 상세한 정보를 볼 수 있는 싸이트로는 다음과 같은 곳이 있다.
    * MSDN
    * CodePlex
    * EntLib 5.0 개발 가이드
    * EntLib 5.0 문서

    Posted by 장현춘

    댓글을 달아 주세요

    약간은 formal한 글을 포스팅하고 싶었지만, 차분히 앉아 이런 저런 형식을 갖춰가며 한편의 논문 쓰듯 글을 올린다는 것이 점점 불가능해짐을 느낀다. 블로그의 어원이 의미하듯 그냥 로그 남기듯 그때 그때 쓰고 싶을 글을 끄적임이 더 어울리는 것인지도 모른다.

    미팅을 준비하다가 지루하여 잠시 twitter에 올라온 글들을 보다 Channel9의 트윗 중 MEF에 관한 글을 보고나니, 한번쯤은 정리하고자 했지만 큰맘 먹고 다가서야할 것 같은 느낌에 미루던 것인지라 그냥 편한 마음으로 들어보았다.

    MEF가 무엇인지 알고 싶지만 많은 시간을 투자할 수 없는 분이라면 20여분 짜리 영문이지만, 아주 천천히 또박 또박 강의하는 아래 동영상을 추천한다.
    http://channel9.msdn.com/shows/10-4/10-4-Episode-26-Creating-Extensible-Applications-with-the-Managed-Extensibility-Framework/

    소개와 더불어 MEF를 통해 어떻게 코드가 만들어지는지를 보고싶은 분이라면 아래 Codeplex의 짤막한 글들을 참고하면 좋을 듯 하다.
    http://mef.codeplex.com/wikipage?title=Guide&referringTitle=Home

    영어라면 질색인 분이라면 Visual Studio 2010 공식 팀 블로그에 엄준일씨가 올린 글을 보면 좋을 듯 하다.
    http://vsts2010.net/category/.NET%20Framework%204.0/Managed%20Extensibility%20Framework 

    MEF가 처리하고 싶은 세상의 문제는 애플리케이션을 개발함에 있어서 수많은 모듈로 인한 복잡성을 관리하고, 개발에 필요한 모듈을 찾아 적절한 시점에 생성하는 수고를 개발자가 아닌 MEF가 처리할 수 있게 해주는 것이 아닐까한다.

    마이크로소프트가 Unity라는 DI 컨테이너를 내놓기 이전부터 닷넷 오픈 소스 개발자 생태계내에서는 이미 dependency를 줄여주어 유지보수를 용이하게 하는 많은 프레임웍이 생겨나 번성해왔다. 대표적인 것으로는 StructureMap, Windsor, Spring.net, NInject, Autofac 등.. 이런 즈음에 마이크로소프트가 닷넷 프레임웍 4.0에 기본으로 포함될 DI 컨테이러라고 할 수 있는 MEF 라이브러리를 내놓고 있는 것이다. 어찌 보면 개발자 입장에서 또 하나의 선택의 가짓수가 늘어났다고 할 수 있지만, 시장의 반응은 어떨지...

    1. 시장에서 오픈 소스 프레임웍인 NHibernate, iBatis.NET이 세를 불리고 있을 즈음 LINQ, Entity Framework 등을 마이크로소프트가 내놓았을 때, 그다지 인정을 받지 못하다가  조만간 정식 출시될 새 버전의 Entity Framework에 대해서는 개발자 사이에 기대가 점차 높아지는 것을 느낄 수가 있었는데...

    2. 아울러 시장에서 StructureMap, Windsor를 거쳐, Spring.net이 DI 컨테이너로 급부상하던 즈음에 마이크로소프트가 ObjectBuilder에 Wrapper 씌여 Unity를 내놓았다. 버전이 올라갈수록, Enterprise Library를 선호하는 사람일 수록 점차 Unity에 빠져드는데.... 한술 더떠 아예 닷넷 프레임웍에 기본 탑재되는 DI 기능의 라이브러리를 출시한다는데...

    얼마전 모회사의 아키텍트가 했던 섬뜩했던 말이 떠오른다.

    "마이크로소프트가 이것 저것 다 내놓는데, 굳이 시장에 있는 오픈 소스 프레임웍들이 필요할까요 ?"

    아직까지 공고하지 못해 개발자 생태계인지라 마이크로소프트라는 일개(?) 회사에 의해 휘둘리는 것이 아닌지... 그렇지 않으리라 기대해본다.

    Posted by 장현춘

    댓글을 달아 주세요

    “Velocity"는 현재 마이크로소프트가 만들고 있는 분산 캐시 솔루션으로 엔터프라이즈 애플리케이션에서 필수적인 확장성과 고성능을 제공해 줄 수 있으며, 일반 CLR 객체 뿐만아니라 XML이나 바이너리 데이타 등 메모리상에서 관리될 수 있는 데이터에 대해 캐싱 기능을 제공해주며, 분산되어 있는 여러 서버사이에 자동 동기화 기능도 함께 제공되고 있다. “Velocity"가 주안점으로 두고 있는 것은 성능, 확장성, 가용성을 제공하는 분산 캐시 솔루션으로 자리매김하는 것이다.

    image

    "Velocity”는 당연히 무료로 배포될 것이며, 아래 그림에서와 같이 Web/App Tier와 Data Tier 사이에 위치하게 된다.

    image

    CTP3는 CTP2에 비해 몇 가지 변경된 사항이 있다.
    1. Cache Notificaiton - 캐시에 저장되어 있는 객체에 대한 변경이 자주 일어나지 않는 경우, 캐시 클러스터에 저장되어 있는 객체에 변경이 일었나게 되면 로컬 캐시에 Notification이 뜨게 되고 즉시 로컬 캐시에 있는 객체는 유효하지 않음으로 변경된다. 잦은 변경이 있는 경우 Notification을 시작으로 다양한 activity를 일으키는 trigger를 설정할 수 있다.
    2. 성능 향상 - 이전 버전에 비해 메모리 사용량이나 응답성 면에서 성능 개선이 있었다.
    3. 보안 기능 보완 – 윈도우 서비스 형태로 띄는 cache host를 실행하는 권한이 낮아져 Network Service 계정으로 가능하게 되었다.
    4. 설치 용이 - 설치가 쉬워지고 cache host 설정까지 간편하게 진행된다.
    5. 네임스페이스 변경 - “Velocity” 전체 네임스페이스가 System.Data.Caching에서 Microsoft.Data.Caching으로 변경되었다. 네임스페이스의 변경으로 전체 API가 영향을 받게 된다.

    그 밖에도 소소한 변경 사항들이 있으며 이에 대해서는 아래 링크를 참고하시길...
    http://msdn.microsoft.com/en-us/data/cc655792.aspx

    “Velocity”에 대한 상세한 소개는 아래 링크를 참고하시고
    http://msdn.microsoft.com/en-us/library/cc645013.aspx

    “Velocity” CTP 3는 아래 링크에서 다운로드 받을 수 있다.
    http://www.microsoft.com/downloads/details.aspx?FamilyId=B24C3708-EEFF-4055-A867-19B5851E7CD2&displaylang=en
    설치 시 캐시 설정 위치를 네트워크 공용 폴더로 할 것인지 SQL Server로 할 것인지 등 결정해야하는 것이 있기 때문에 다운로드 싸이트에 있는 velocity_help.exe를 다운받아 도움말을 보면서 진행하는 것이 도움이 된다.

    개발자들에게 있어서 성능 향상은 늘 염두해두어야 하는 품질 요소이며, 언제나 따라다니는 꼬리표같은 존재이다. 이미 국내 개발자들 사이에도 “Velocity”에 대한 관심이 확산되고 있으며, 일부 솔루션 업체에서는 정식 버전 출시를 손꼽아 기다리고 있는 곳도 있다.

    “Velocity”에 대해 한 줄만 기억해 두면 필요시 요긴하게 쓸 수 있을 것이다. “Velocity”는 닷넷 개발에 쓸 수 있는 분산 캐시 솔루션이라고.

    Posted by 장현춘

    댓글을 달아 주세요

    Enterprise Library 4.1 (EL) 과 Unity Application Block 1.2 (Unity) 에 대한 Hands-on Lab이 공개됐다. 국내 닷넷 개발 진영에도 범용 개발 프레임웍에 대한 관심이 고조되고 있고, 점차 많은 적용 사례가 공유되어 신규 개발에 힘을 실어주고 있는 시점에 EL과 Unity에 대한 HOL의 발표는 참으로 적절한 타이밍이라 여겨진다.

    Enterprise Library는 이름이 의미하듯이 엔터프라이즈 애플리케이션 개발에 늘 고려하는, 즉 cross-cutting concern이라할 수 있는 기능을 모아 쉽게 적용할 수 있게 만든 라이브러리 모음집이다.

    image

    현재 EL 4.1에 포함되어 있는 Application block들로는 PIAB (Policy Injection Application Block), Logging, Caching, Cryptography, Data Access, Exception handling, Security, Validation 그리고 Unity가 있다. EL 4.1 HOL은 바로 이들 각각에 대한 HOL을 C#과 VB로 제공하여 쉽게 따라하며 익힐 수 있게 구성되어 있다.

    image

    좌측 그림 가운데 Interception (w/ PIAB and Unity), Unity, Validation은 새롭게 추가된 것들이며, 그외 나머지 HOL은 이전 버전의 것을 업데이트한 것이다.

    EL과 Unity가 호스팅되고 있는 Codeplex를 방문하면 좀 더 상세한 정보를 알아 볼수 있다.
    EL 4.1 ": http://www.codeplex.com/entlib
    Unity : http://www.codeplex.com/unity

    각각의 HOL의 다운로드 위치는 다음과 같다.
    EL 4.1 HOL
    Unity 1.2 HOL

    MSDN에서도 EL과 Unity에 대한 상세한 정보를 찾을 수 있다.
    EL 4.1
    Unity 1.2

    참고로 EL과 Unity를 포함하여 p&p에서 제공하는 각종 asset들을 활용하여 개발자 생산성이 40%까지 향상될 수 있다는 조사 보고서도 여기서 살펴볼 수 있다.

     

    p&p 팀에서는 또한 Enterprise Library 다음 버전에 담고 싶은 기능에 대한 온라인 설문 조사를 진행하고 있다. 평소에 담고 싶었던 내용이 있었다면 한번쯤 의견을 전달하는 것도 좋을 것으로 생각된다.

    EntLib_voting_2

    Posted by 장현춘

    댓글을 달아 주세요

    약간 철 지난 이야기일 수 있겠지만, ASP.NET MVC 1.0 정식 버전이 공개된 시점이기에 무료 e-book을 다운로드 받을 수 있는 곳을 안내하고자 한다.

    ASP.NET MVC 1.0 e-book은 Scott Hanselman, Rob Conery, Phil Haack 등 쟁쟁한 사람들이 지었으며 여기에 Scott Guthrie가 도움을 주는 형식을 빌어 만들어진 책이며 아마존에서 31달러에 구입할 수 있다.

    image

    이 책에 대한 좀 더 상세한 설명은 Scott Guthrie 블로그를 참조하시길...

    Download Links
    Posted by 장현춘

    댓글을 달아 주세요

    .NET Framework 3.5 SP1에 포함되어 발표되었으며, 데이터베이스의 테이블, 컬럼 등을 REST 방식으로 노출시겨 원격지의 클라이언트가 HTTP verb 만으로 접근할 수 있는 기능을 제공하고 있는 ADO.NET Data Services 가 버전 1.5 CTP1을 공개하였다. 서비스는 WCF를 통해 노출되며 전송되는 데이터는 JSON이나 AtomPub 이 기본 형식이라서 AJAX, Silverlight 등 다양한 형태의 클라이언트와 연동이 자유롭다.

    image

    이전 버전과 달라진 1.5의 특징은 다음과 같다.

    1. Row Count
    그림에서와 같이 paging parameter를 요청 말미에 추가하여 분필요한 네트웍 자원의 낭비를 줄일 수 있다. 전체 갯수만을 원할 경우 $count를 이용하면 된다.

    image 

    2. Server-driven paging
    사용자가 데이터베이스 테이블의 전체 데이터를 요청할 경우 서버에서 강제로 paging을 부여할 수 있다. 이경우 서버가 전달하고자 하는 만큼만 전달하게 된다. 서버측에서 Data Service Configuration에 대해 SetResourceSetPageSize(“Product”, 20)를 호출하여 클라이언트의 요청에 대해 무조건 20개만을 전달하도록 설정할 수 있기 때문에 아래 그림에서처럼 /Products라고 요청하더라도 500,000건의 데이터가 넘어오는 것이 아니라 자동적으로 20건과 Next 링크가 보내지게 된다.

    image

    3. Frendly feeds
    ADO.NET Data Services가 엔티티를 AtomPub 형태로 노출시키고자 할 경우 APP (Atom Publishing Protocol) 형식에 해당 property를 자동으로 매핑해주는 것을 말한다.

    image

    4. Blob streams
    사진과 같은 큰 용량의 바이너리 데이터를 아래와 같이 요청할 경우, 실제로 돌아오는 응답은 해당 사진에 대한 메타데이터 (링크)이며, 사진 자체를 원할 경우 아래와 같이 요청 말미에 $value를 붙이면 실제 바이러리 사진 데이터가 넘어온다. 이는 사용자에 따라서 바이너리 데이터를 실제 사용하지 않은 경우에도 무조건 전송함으로서 낭비되는 네트웍 자산을 보호하기 위함이다.

    image

    5. WPF/Silverlight Data binding
    ADO.NET Data Service의 API를 통해 엔티티를 가져오고자 할 경우 그림에서와 같이 먼저 DataServiceContext를 얻고 이로부터 원하는 엔티티를 조회를 통해 가져오게 된다. 이렇게 획득한 엔티티를 WPF나 Silverlight의 FrameworkElement 및 이의 하위 클래스 인스턴스에 바이딩하게 된다. 이때, 바이딩된 엔티티에 변경을 가하였을 경우 이전 버전까지는 변경 사항을 저장하기 위해 Data Service에 수동으로 notify를 해야하는 번거로움이 있었다. 새로운 버전 1.5에서는 엔티티 자체가 특정 인터페이스 (INotifyPropertyChanged)를 구현하고 있다면 FrameworkElement가 자동으로 DataServiceContext에 변경 사실을 알려주어 저장토록 한다.

    image

    ADO.NET Data Services 1.5 CTP1은 아래 링크에서 다운로드 받을 수 있다.
    다운로드 바로가기

    좀 더 자세한 정보를 원한다면 ADO.NET Data Services를 개발하고 있는 Astoria 팀 블로그를 방문하시길...

     

    참고로, 어제 공식 발표된 Silverlight 3 베타가 제공하는 많은 기능 중에 .NET RIA Services라는 것이 포함되어 있는데, 여기에는 데이터베이스 내의 테이블 중에서 사용하고자 하는 것들을 명시하는 것만으로도 클라이언트에게로 데이터가 전송될 수 있도록 하는 기능을 자동으로 부여하는 것을 포함하고 있다. 이는 내부적으로  ADO.NET Data Services 기능을 이용하여 (WCF) 데이터베이스 테이블을 REST로 노출해주는 것이다.

    Posted by 장현춘

    댓글을 달아 주세요

    잘 알려지지 않았지만, MSE는 마이크로소프트가 SOA 영역, 특히 SOI (Service Oriencted Infrastructure) 영역에서 자신있게 내세우고 있는 서비스 가상화 솔루션으로 Codeplex를 통해 오픈 소스 (Ms-PL)로 제공하고 있다. MSE는 어느날 갑자기 세상에 나온 것이 아니라, 마이크로소프트 컨설팅 서비스가 다년간 서비스 인프라측면에서 자산으로 발전시키며 컨설팅에 활용해온 것이며 이를 오픈 소스로 공개한 것이다. 많은 mission-critical 시스템 구축에 사용되어 그 가치가 입증되었으며 현재 Codeplex에 공개된 최신 버전이 무려 7.0.0.6이다.

    MSE는 외부로 노출된 서비스가 버전 업이 되면서 이전 wsdl 기반의 고객과 새로운 wsdl 기반의 고객이 아무 불편함이 없이 서비스를 받을 수 있도록 중간에서 서비스 버전닝을 제공하는데 이 또한 구성의 변경을 통해서 가능하게 한다. 또한 이전에 없던 새로운 정책을 일괄적으로 노출된 서비스들 즉, 시스템 전체 혹은 endpoint 레벨로 혹은 더 세밀하게 Operation 단위로 적용하고자 할 경우에도 구현에는 전혀 변경이 없으면서 drag-and-drop을 통해 정책을 강제할 수 있도록 WS-Policy를 지원하고 있다.

    MSE는 위 그림에서 보듯이 사용자의 요청에 대해 적절한 타겟으로 서비스를 전송하기 위해 Messenger, Broker, Dispatcher로 구성되어 있으며 SQL Server 2005/2008을 Service Catalog로 사용하며 관리도구는 WPF로 구현되어 있다. (즉, MSE 설치시 관리도구를 선택하면 .NET Framework 3.5 SP1을 요구한다.) 실질적인 엔진은 설치와 함께 설치되는 MSE Catalog Service와 MSE Runtime Service이며 이들은 윈도우 서비스 형태로 구동되어 가상화 기능을 제공한다. 아래 그림과 같은 MSE 관리도구는 MSE Catalog Service에 접속하여 등록되어 있는 각 요소들과 기본 제공 요소들, 가령 각종 binding이나 정책들을 보여주며 이들을 이용하여 외부에 노출될 새로운 endpoint를 손쉽게 작성하게 한다.

    아래와 같이 WCF로 구현된 서비스가 있을 경우, (이는 설치와 함께 제공되는 샘플이다.)

    관리도구에서 wsdl을 통해 해당 서비스를 읽어 들일 수 있다. 또한 REST 기반의 웹 서비스도 가능하며 추후 데이터베이스에서 노출된 웹 서비스도 직접 읽어들일 수 있게 할 예정이다.

    읽어들인 서비스의 개별 기능들을 원하는 조합으로 엮어 아래와 같이 Endpoint를 작성할 수 있다. 즉, 실제 서비스되고 있는 구현체의 포트나 URL과는 전혀 상관없는 임의의 포트와 URL을 주어 서비스 레이어를 구현체와 분리시켜 관리하는 것이다.

    이렇게 drag-and-drop을 통해 서버단의 여러 서비스들로부터 조합된 새로운 endpoint가 MSE Messenger기능을 통해 외부로 노출되는 것이며, MSE는 이렇게 노출된 서비스를 테스트할 수 있는 테스트 클라이언트도 제공하고 있다.

    웹 서비스 몇 개 노출시키는 것이 전부인 경우나 배치 작업과 같이 서버의 프로세싱이 전부인 경우 MSE를 적용하는 것은 무의미하다. 하지만, 서비스 노출하는 수가 증가하고 고객의 요구에 따라 공통 서비스의 버전이 달라지고, 예전에 없던 각종 규제등으로 인해 혹은 비지니스 환경의 변화로 인해 각종 정책을 다운 타임없이 적용하고자 할 경우 MSE는 중요한 역할을 한다. 미국내 많은 mission-critial 시스템의 경우 MSE가 BizTalk 서버 혹은 ESB guidance 와 함께 사용되고 있으며 곧 오픈 예정인 모(某)사의 항공 업무 시스템은 잠깐 동안의 다운타임에도 수백만 달러의 손실을 유발하는 mission-critical한 시스템인데 MSE와 WF/WCF를 이용하여 구축되었다. (Case Study 곧 공개 예정)

    아래 그림과 같이사용자의 요청은 서비스 가상화를 제공하는 MSE를 통과하여 routing 기능을 제공하는 ESB 거쳐 실제 서비스 제공자에게 전달된다.

     

    SQL Server 2005 혹은 2008과 .NET Framework 3.5 SP1이 설치되어 있다면, Codeplex에서 MSE를 다운로드 받아 설치해보길 권장하는 바이다. 설치 매뉴얼과 기술 문서가 codeplex에 함께 공유되고 있으며, 설치한 후에는 서너개의 웹 서비스 샘플과 정책 샘플들이 함께 제공되기 때문에 손쉽게 테스트해볼 수 있다.

    [업데이트] 2009-03-23
    본문에서 언급된 항공사 관련 SOA 적용사례에 대한 정보를 다음 링크에서 확인할 수 있다. EDS가 IBM 솔루션을 걷어 내고 마이크로소프트 닷넷 기반의 솔루션 기반으로 개발하여 오픈한 항공 산업 관련 시스템에 대한 내용을 확인해볼 수 있다.
    - Service-Oriented Architecture In the Airline Industry
    - Real World SOA 사례

    [업데이트] 2009-03-25
    읽어볼 만한 서비스 가상화에 대한 짤막한 아티클이 있어 소개한다.
    Why Service Virtualization Matters

    [업데이트] 2009-04-22
    MSDN 매거진 5월호에 MSE 관련하여 "Service Virtualization With The Managed Services Engine"이라는 주제의 글이 게재되었다. 마이크로소프트의 SOA Infrastructure 전략과 연계하여 MSE가 어떤 역할을 하는지, MSE에 대한 간단한 소개 등을 볼 수 있다.

    [업데이트] 2010-08-26
    현재 Codeplex에 공개된 최신 버전 2009년 12월 CTP 버전으로 v.7.5이다. 마이크로소프트 컨설팅 부서에서 사용하고 있는 최신 버전은 2010년 7월자 v.7.6.1로 확인된다. 조만간 MSDN Code Gallery를 통해 공개되지 않을까 기대해본다. WCF 4.0이 나오고 Windows Server AppFabric이 공개되면서 MSE가 제공하는 기능과 중복되는 일부 기능이 AppFabric에서 제공하고 있어 향후 두 제품(?)의 포지셔닝을 궁금해하는 분들이 있다. 현재 v7.6.1의 Release Note를 보면 Windows Azure platform AppFabric을 지원한다고만 언급되었을 뿐, Windows Server AppFabric과의 관계에 대해서는 나와 있지 않다. 개인적인 의견으로는 Windows Server AppFabric이 MSE의 많은 기능을 흡수하는 것이 바람직할 것으로 생각한다.

    Posted by 장현춘

    댓글을 달아 주세요

    이랜드 시스템 황용호 아키텍트 팀장이 Spring.NET, NHibernate, SVN, NUnit, NAnt, Log4net 등 다양한 오픈 소스를 적용하여 Formular# 이라는 표준 개발 프레임웍을 만들어 고객사에 적용하면서 느낀 점을 블로터닷넷과의 인터뷰에서 밝히고 있다. 몇 가지 음미해볼 만한 부분을 인용해보면...

    오픈소스 기반 프레임워크를 도입하기 전에는 관련 프레임워크에 대한 교육이 쉽지 않았는데, 이미 전세계적으로 알려진 제품이다보니 이 부분도 상당히 수월하게 진행됐다

    오픈소스 프레임워크를 활용하면서 고객들과 더욱 대화를 많이 할 수 있고, 전체 아키텍처 구현에 더 많은 시간을 투자할 수 있게 된 것이 가장 큰 이점이라고

    기술적인 이슈를 처리하는 것에 온 심혈을 기울였던 기존 프로젝트에 비해서 현업의 요구가 정확히 무엇인지 요구가 올바른 것인지 검토하고 앞으로 구현될 시스템이 어떨지 사전에 가시화시키고 효과를 미리 검증하는 것에 투자하는 것으로 자연스럽게 바뀌지 않을까요

    인터뷰 내용을 살펴보면 개발팀을 이끌고 있는 입장에서 자체 개발했던 프레임웍 개발자가 떠남으로 인한 업그레이드 문제며, 고객의 비지니스에 집중하기 보다는 개발 이슈 해결에 집중해야 했던 지난날의 개발 모습 등이 눈에 선하게 다가온다.

    전체 인터뷰 내용은 아래 링크에서 직접 확인하시길...

    [오픈소스를말한다]⑫이랜드 황용호 팀장, “유연한 아키텍처 설계에 집중”

    Posted by 장현춘

    댓글을 달아 주세요