처 : http://funnygangstar.tistory.com/18


...

스프링닷넷에 관심을 가지고 계신 개발자분을 만나서 반갑네요^^

먼저 말씀 드리고 싶은건,
자바 JDK 기반하에서 스프링 프레임웍을 사용하셨듯이 닷넷도 닷넷 프레임웍 기반하에서 스프링닷넷 프레임웍을 사용하는 것입니다.
따라서 순수 닷넷 프레임웍에서 제공하는 API외에 필요한 기능이 있을때 스프링닷넷을 쓰게 되는것이죠...

당연히 아실 부분인거 같긴한데 보내주신 메일내용엔 애매하게 표현되어 있어서 먼저 짚고 넘어갑니다.^^

자바 버전의 스프링 프레임웍을 사용해 보셨다고 하니까 스프링 프레임웍의 기능에 대해선 잘 아실겁니다. 하지만, 스프링닷넷 프레임웍은 자바 버전의 스프링이 제공하는 기능들과는 많이 다른 기능을 제공합니다.

대표적인 것이 웹서비스 지원인데요.
클래스 라이브러리(자바에선 일반 클래스로 이루어진 비즈니스 로직만을 담고있는 JAR 집합이겠죠)의 클래스나 메소드를 코드 변경없이 그대로 웹서비스로 포팅해주는 기능입니다.

사실, 웹서비스 외에도 COM+나 리모팅(자바에선 RMI 겠죠..?)으로도 코드 변경없이 포팅해줍니다.
닷넷에선 웹서비스를 만들기 위해서 *.asmx 프로젝트로 만들어 줘야만 합니다.
따라서 만일 기존에 만들어 놓은 클래스 라이브러리를 asmx 프로젝트로 변환없이 웹서비스로 포팅하고 싶다거나, 제작할 클래스 라이브러리를 사용 환경에 따라 웹서비스, COM+, 리모팅으로 서비스하고 싶을 경우엔 큰 장점이 되겠죠.

이외에도 웹페이지에서 사용자 정의 컨트롤들에 대한 Dependency Injection 지원이라든가, AJAX 지원이라든가 하는 부분 등..
자바와 닷넷의 서로 다른 개발 환경에서 존재하는 여러가지 차이점으로 인해 자바 버전의 스프링과는 조금은 다른 기능들을 수반하고 있습니다.
물론, IoC 컨테이너를 지원하는 핵심 코어 부분은 동일합니다.

또다른 부분이 있다면 자바에서는 스프링의 MVC 프레임웍을 많이들 사용하실텐데요...
스프링닷넷에는 MVC 부분이 빠져있습니다.
대신 웹폼에서 DI 기능을 지원하고 있구요. 이런 부분이 자바와 닷넷의 서로 다른 접근법 때문에 발생하는 부분인거 같네요.

ㅇㅇㅇ님께서 보신 제 문서는 스프링닷넷에서 지원하는 기능 중에서도 윈폼 기반의 어플리케이션을 제작할때 필요한 몇가지 기능들만을 다루었기 때문에 최신 스프링 버전의 기능을 많이 담고 있지 못합니다.
(제 블로그를 통해서 스프링닷넷에서 지원하는 기능들을 다시 한번 정리할 계획입니다. 이번에는 주로 웹폼 제작시 필요한 내용을 위주로 할 예정이구요...)

따라서, 먼저 최신 버전의 스프링에서 지원하는 기능들을 숙지하신 후에 장단점을 완전히 파악하고 주위 개발자 분들을 설득하시는게 좋을듯 합니다.

닷넷 개발환경에선 자바처럼 많은 어플리케이션 프레임웍이 없다시피 했기 때문에 개발자들에게 스프링과 같은 어플리케이션 프레임웍을 사용하자고 하면 처음엔 매우 낯설어하고 거부감도 가지게 됩니다.

그래서 더더욱 설득하기가 쉽지 않습니다. 이럴 경우엔 스프링닷넷의 전체 기능을 일일이 열거하기 보다는 스프링닷넷에서 제공하는 매력적인 기능들을 예로 들어서 설명해주면 그나마 수긍할수 있을 것입니다.(그래도
 어렵다면 어쩔수 없겠지만요...)

참고로 저희 회사에서는 내부적으로 사용하는 CRM 솔루션을 스프링닷넷 기반으로 만들었습니다.(작년 이맘때쯤이네요...)
저희가 주로 사용한 기능은 위에서 말씀드렸던 웹서비스 지원 기능과 데이타액세스 부분 때문이었습니다.
CRM 솔루션을 몇가지 이유때문에 윈폼 기반 어플리케이션으로 제작해야 했는데, 회사 외부에서도 접속이 가능해야 했기 때문에 외부에서 접속할때는 웹서비스로 서비스하고 내부에서 접속하면 COM+ 로 서비스하기 위함이었습니다.
동일한 클래스 라이브러리를 사용할 것인데 스프링닷넷 없이 저런식으로 서비스 하고자하면 공수가 매우 많이 들어가게 되지만 스프링닷넷에서 제공해주는 기능 때문에 쉽게 해결 할 수 있었습니다.

이외에도 순수 닷넷 프레임웍을 사용할 때보다 편한 점들을 간단히 정리한다면

1) ADO.NET의 랩퍼 클래스 사용으로 인한 편리한 데이타베이스 접근
2) AOP를 사용한 로깅, 인증 지원
3) 순수 닷넷 객체를 별도의 코딩없이 웹서비스, 리모팅, COM+로 포팅
4) 선언적 트랜잭션 서비스 가능 (어트리뷰트 선언만으로 로컬 트랜잭션, 분산 트랜잭션 지원 가능)
5) 웹폼 컨트롤에 대한 DI 지원으로 모듈화 가능
6) 웹폼 컨트롤에 데이타바인딩시 양방향 데이타 바인딩 지원
7) 자바스크립트로 간편하게 웹서비스 접근 - AJAX 지원
8) 스케쥴링 작업에 대한 손쉬운 랩퍼 클래스 제공
9) 아파치 ActiveMQ, MSMQ 등 메시징 기술에 대한 손쉬운 랩퍼 클래스 제공

등이 될 수 있겠네요...
얼른 생각나는것 위주로 적으면 이 정도 일것 같은데 빠진게 많을듯 싶습니다.



출처 : 네이버

re: [웹] 요즘 각광받는 프레임웍은? 


자바 웹 애플리케이션 개발에 사용하는 프레임웍을 중심으로 말씀드리겠습니다.
자바 웹 애플리케이션 프레임웍은 몇가지의 카테고리로 나뉘어집니다.

MVC (Model-View-Controller)
MVC는 가장 대중적인 웹 애플리케이션 프레임웍이라 할 수 있습니다. 애플리케이션의 화면, 데이터, 제어를 분리하는 것이라 할 수 있습니다.
가장 대중적인 것으로 Struts가 있는데 이 것은 나온지 오래되었고 기능이 떨어져 한 물 갔다고 할 수 있습니다.
요즘은 2세대 MVC로 인터셉터 기능을 가진 프레임웍들이 대세입니다.  WebWork, Struts2, Spring  MVC등이 있습니다.

IoC (Inversion of Control)
제어 역행이라고 하는데 완전히 같은 뜻은 아니지만 대체로 같은 의미로 Dependency Injection(의존성 주입)이라고 부르기도 합니다. IoC는 프레임웍이라고 부르기보다는 컨테이너라는 말을 많이 씁니다.
현재 가장 많이 사용하는 IoC 컨테이너는 Spring 입니다. Spring은 EJB 없이 Java EE 애플리케이션 개발이라는 사상을 갖고 있습니다. Spring은 많이 유행하는 프레임웍이고 그 사상이 발상의 전환을 가져왔기 때문에 반드시 배워두셔야 합니다.

AOP (Aspect Oriented Programming)
객체지향의 개념을 보완하는 개념으로 관점 지향 프로그래밍이라고 합니다. 여러 클래스나 컴포넌트에 걸쳐서 동작하는 것을 분리하는 개념으로 대표적인 것이 인터셉터입니다.
AOP는 @AspectJ 라는 프레임웍에서 큰 발전을 가져왔는데 Spring에 AOP가 들어가면서 AOP 프레임웍도 Spring으로 많이 사용하는 추세입니다.

ORM (Object-Relational Mapping)
객체 관계 매핑이라고 합니다. 자바와 같은 객체 지향에서 사용하는 오브젝트와 아직도 가장 많이 사용하고 있는 관계형 데이터베이스와의 매핑을 목적으로 합니다.
EJB의 Entity Bean에서 하는 것이 이 객체 관계 매핑입니다. EJB 3.0으로 넘어오면서 Entity Bean이 없어지고 Persistence라는 것으로 바뀌었습니다. EJB 없이 사용하는 ORM으로는 Hibernate와 iBATIS가 많이 쓰인다고 하겠습니다. iBATIS는 ORM보다는 데이터 매퍼라고 하는 것이 더 적절하겠습니다. 기능적으로 더 우수한 Hibernate가 대세로 간다고 하겠습니다.

위에서 언급한 Struts2, Spring, Hibernate 정도를 확실히 익히면 어느 정도 요즘 추세와 기술을 따라가고 있다고 말씀드릴 수 있겠습니다.

저작자 표시 비영리 변경 금지