2011년 11월 3일 목요일

Castle.Windsor Fluent Registration API 소감

제목에 있듯이, 오늘 Castle.Windsor의 Fluent 방식의 Component 등록과 관련된 내용을 읽어보고, .NET 과 Silverlight 에 적용해 봤습니다.

물론 잘 됩니다.^^

그리고 제가 그 동안 사용하던 API 보다 훨씬 편한 방법도 많이 나왔고, Intercepter 등록한다던지, IWindsorInstaller를 이용하여 한방에 등록이 가능하다는 게 상당한 장점이 될 것 같습니다.

문제는 이러한 방식이 Silverlight에서는 선택의 여지가 없지만, .NET 기반에서는 아직도 xml 기반 설정파일이 대세라는 점이고, 이 부분은 컴파일 없이도, 환경을 변경시켜, 컴포넌트의 구조를 변경시킬 수 있는 장점이 있습니다.

기존 Xml  방식과 Fluent 방식에 대해 비교해 보면…

기존 Xml 파일 방식
  • 환경설정 파일의 일부분으로 text 파일로 표현하여, 수정 시 컴파일이 필요 없습니다.
  • 다른 IoC 라이브러리들도 비슷한 환경설정 파일을 제공합니다.
  • 새로운 API 를 배울 필요가 없습니다.^^
Fluent API 방식
  • API 방식이므로, 컴파일 시에 설정 중의 수형에 대한 부분의 검증은 이루어집니다. (xml 에서는 돌려봐야 알죠)
  • 한번에 많은 컴포넌트를 등록할 수 있습니다. (또한 Filterling 을 통해 선택적으로 등록할 수도 있습니다)
  • Conditional Compile 을 통해 선택적으로 등록 코드를 실행할 수 있습니다. (.NET, Silverlight 별로 각각 다른 것을 등록)
  • 동적 등록이 가능

자, 이 글을 보시고, 각자 판단할 것이지만, NHibernate 의 Hbm 과 FluentNHibernate 의 Mapping API  의 비교와 유사하다고 볼 수 있습니다. 그런 면에서 Fluent API 방식에 손을 들어주고 싶습니다.


단 하나 마음에 걸리는 것이 컴파일을 다시 해야 한다는 점입니다.
뭐 이 부분은 Option 으로 처리할 수 있지 않을까 생각해봅니다.

또 한가지 방식은 IWindsorInstaller 로 묶음으로 등록기를 만들고,  XML 환경설정 파일에서 <installer /> 를 이용하여, 등록하고, 변경하는 것입니다. 물론 이 방법도 Installer 를 어떻게 나누냐에 따라 말이 많아지겠죠.

댓글 없음: