이번 글에서는 Spring.NET 모듈에 대해 소개해 보겠습니다.


Spring 프레임워크는 수많은 특징을 포함하고 있는데 다이어그램 내의 모듈을 보면 그것들이 잘 조직화 되어 있음을 알수 있습니다. 다이어그램은 Spring.NET의 다양한 코어 모듈을 보여줍니다.


overview.gif


(이미지 출처: http://www.springframework.net/)



Spring.Core

의존적 주입(Dependency Injection)을 사용하는 당신의 응용 프로그램을 설정을 위한 프레임워크의 가장 기초적인 부분입니다. 아래에 나열된 다른 지원 기능은 Spring.Core 내에 있습니다.


Spring.Aop

관점 지향 프로그래밍(Aspect-Oriented Programming, 이하AOP)을 수행할 때 사용하는 모듈입니다. AOP는 하나의 지정된 방법내에서 당신의 응용 프로그램에 걸쳐 선언적으로 적용된 일반적 기능을 중앙으로 집중 시킵니다. Spring의 관점 라이브러리(Aspect library)는 트랜잭션, 로깅, 성능 모니터링, 캐싱, 메서드 재정의, 그리고 에러 핸들링과 같은 관점(Aspect)을 위해 미리 쉽게 정의된 것들을 재공합니다.


Spring.Data

이 모듈은 ADO.NET내의 데이터 액세스 기능을 작성하거나 선언적 트랜잭션 관리(Declarative transaction management)를 수행할 때 보다 큰 효율성과 일관성을 이루기 위해 사용합니다.


Spring.Data.NHibernate

이 모듈은 같은 트랜잭션내에서 ADO.NET과 NHibernate 작업을 쉽게 혼합하게 해주는 Spring의 선언적 트랜잭션 관리와 NHibernate 통합을 위해 사용합니다. NHibernate 1.0 사용자는 데이터 액세스 작업을 수행하기 위해 사용하는 API에서 도움을 받을 것 입니다.


Spring.Messaging

마이크로소프트 MSMQ가 메세지 큐잉 미들웨어와 상호작용할 때 추상 수준을 올리기 위해 이 모듈을 사용합니다.


Spring.Messaging.NMS

아파치 ActiveMQ(NMS)가 메세지 큐잉 미들웨어와 상호작용할 때 추상 수준을 올리기 위해 이 모듈은 사용합니다.


Spring.Messaging.EMS

Tibco 엔터프라이즈 메세지 서비스(EMS)가 메세지 큐잉 미들웨어와 상호작용할 때 추상 수준을 올리기 위해 이 모듈을 사용합니다.


Spring.Web

데이터 바인딩, 유효성, 그리고 ASP.NET 페이지/제어/모듈 제공자 설정과 같은 ASP.NET 페이지에서 일반적 고통을 유발하는 부분을 효과적으로 해결할수 있도록 추상 수준을 올리기 위해 이 모듈을 사용합니다.


Spring.Web.Mvc

이 모듈은 ASP.NET MVC2 프로젝트로 부터 Spring.Core와 Spring.Aop의 기능 통합을 위해 사용합니다.


Spring.Web.Extensions

데이터 바인딩, 유효성, 그리고 ASP.NET 페이지/제어/모듈 제공자 설정과 같은 ASP.NET 페이지에서 일반적 고통을 유발하는 부분을 효과적으로 해결할수 있도록 추상 수준을 올리기 위해 이 모듈을 사용합니다.


Spring.Services

닷넷 리모팅, 엔터프라이즈 서비스들 그리고  ASMX 웹 서비스들과 같은 하나의 특정한 분산 커뮤니케이션 기술을 사용할수 있게 일반 CLR 객체를 적응시킬 때 이 모듈을 사용합니다.


Spring.Testing.NUnit

모든 닷넷 언어를 위한 유닛-테스팅 프레임워크(NUnit)와 통합 테스팅을 수행하기 위해 이 모듈을 사용합니다.


Spring.Testing.MSTest

MSTest와 통합 테스팅을 수행하기 위해 이 모듈을 사용합니다.


Spring.Scheduling.Quartz

Quartz.NET과 상호 작용을 지원하기 위해 이 모듈을 사용합니다.


Spring.Core 모듈은 또한 다음의 추가적인 특징을 가지고 있습니다.

  • Expression Language: 런타임에 효율적인 쿼리 및 객체 그래프 조작을 제공합니다.

  • Validation Framework: 비즈니스 객체의 또다른 방침이나 선언을 위한 복합적 검증 규칙 생성을 위한 강력한 UI 프레임워크

  • Data binding Framework: 데이터 바인딩 수행을 위한 UI 프레임워크

  • Dynamic Reflection: 높은 성능의 리플렉션 API

  • Threading: Latch, Semaphore 그리고 Thread Local Storage와 같은 동시적 추상을 추가하는 것을 제공

  • Resource abstraction: 다형성 및 프로토콜 독립적인 방식으로 파일과 주소로부터의 입력 스트림을 취급하기 위한 일반적인 인터페이스를 제공


이상으로 Spring 프레임워크의 기본적인 모듈들에 대해 살펴봤습니다.

자세한 내용은 Spring.NET 문서를 참고해보시면 좋을 것 같습니다.



[참고 사이트]

1. Quartz.NET: http://quartznet.sourceforge.net/

2. Dependency Injection: http://msdn.microsoft.com/ko-kr/magazine/cc163739(en-us).aspx

3. Aspect-Oriented Programming: http://msdn.microsoft.com/ko-kr/library/aa288717(VS.71).aspx







profile

소프트웨어라는 도구를 천문분야에 접목하는 것에 대해 관심을 가지고 있는 1인 입니다.

 

 

한국천문연구원(KASI) 한국형 외계지적생명체 탐색 기술자문 (2010)

Microsoft Visual C# MVP(2009-2010)

세티의 Lonely Star 블로그 운영


facebook: http://www.facebook.com/setipark