2012년 1월 10일 화요일

최근 읽은 글 중 마음에 꽂힌 글들…


2012년 새해가 밝았습니다^^ 모든 분들이 새해에도 건강하시고, 하시는 일 잘 되시길 바랍니다.
물론 저도 잘되기 위해서 불철주야(야는 모르겠네요^^) 노력하려고 합니다.
자 그럼 제목에도 있듯이 요즘 제가 인터넷에서 읽은 글들 중 마음에 꽂힌 글 들을 링크 걸어봅니다.
더 많은 글들이 있지만, 그래도 한번쯤은 곱씹어야 할 글들인 거 같아 기록해 봅니다.
저도 올해는 좋은 성과를 내기 위해 스마트하게 일해야겠습니다^^

2011년 12월 18일 일요일

Castle.Windsor 3.0 이 Release 되었습니다.

RC1 이 나온지 얼마 되지 않아, 정식버전이 출시되었네요.
http://docs.castleproject.org/Windsor.Whats-New-In-Windsor-3.ashx 를 참고하시면 도움이 됩니다.

다만, FluentRegistration API 에서 몇 가지 제거된 API 가 있어, Upgrade 하는데, 좀 헷갈렸습니다. 그래도 Resharper 의 도움으로 유사한 메소드를 찾는데, 상당한 도움을 받아, 반나절만에 Upgrade를 마쳤습니다.

언젠가 Castle.Windsor 3.0 Fluent Registration API 에 대해 정리해서 올리도록 하겠습니다.

2011년 11월 12일 토요일

Castle.Windsor 3 에서 Fluent Registration API 추가 기능

이제 얼마 안 있으면 Castle.Windsor 3 가 정식으로 Release 됩니다. 아직까지는 2.5.4 버전을 쓰고 있습니다만, 제가 뭐 엄청 잘 쓰는 게 아니므로, 크게 불만은 없습니다.

원문 : What's new in Windsor 3

요번에 Fluent Registration API 를 공부하면서, 좀 아쉬웠던게, 코드상으로 작업하면서, 환경설정 정보와 연동될 수 있다면, 웹 Application 에서는 아주 유용하겠다 생각을 했는데, 우연히 Castle.Windsor 3 의 새로운 기능으로 추가가 되는 군요.

Dependency class 라고

Container.Register(
   Component.For<ClassWithArguments>()
      .DependsOn(
         Dependency.OnAppSettingsValue("arg1"),
         Dependency.OnAppSettingsValue("arg2", "number"))
);
 
var instance = Container.Resolve<ClassWithArguments>();

라고, AppSettings 에 있는 정보를 Component의 속성 값으로 설정할 수 있는 기능이죠. 물론, 지금도 수동으로 만들 수 있지만, 기본으로 제공되면 더욱 좋다는 얘기입니다.

또 한가지가 모든 IWindsorInstaller 를 모든 Assembly에서 찾아서 인스톨하는 기능입니다.

container.Install(FromAssembly.InThisApplication())

보시다시피, 이 응용 프로그램과 참조하는 모든 어셈블리에 있는 모든 IWindsorInstaller 를 구현한 Installer 로부터 Install 을 수행하는 것입니다. 중복되는 것을 방지해주는 기능이 있으면 참 좋겠지만, 그건 Component 등록 시에 Unless 나 If 등 조건 등록을 사용하면 될 듯 하고, 관련된 Installer 찾아서 등록해주는 것도 일인데, 참 편리하죠.

마지막으로 OnCreate는 있는데, 정리하는 OnDestroy가 없었는데, 이번에 지원되는 군요.

container.Register(Component.For<MyClass>()
   .LifestyleTransient()
   .OnDestroy(myInstance => myInstance.ByeBye())
);

컴포넌트가 컨테이너로부터 해제될 때 발생합니다… 컴포넌트 자체에서 뭔가 할 일도 있을테고, Container 도 컴포넌트의 Lifecycle에 대한 이벤트를 제공하지만, 특정 컴포넌트에 대해, 외부에서 뭔가 지정할 수 있다는 점은 큰 장점이지요.

다른 다양한 기능들이 추가되었지만, 위의 3가지 기능이 참 쓸만 한 것 같습니다.