달력

5

« 2021/5 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  

'분류 전체보기'에 해당되는 글 214

  1. 2008.03.29 Spring.Net에 관하여
  2. 2008.03.29 Visual Basic 2008 hot fix in Visual Studio 2008
  3. 2008.03.23 어도비 RIA World 2008을 다녀와서..
  4. 2008.03.18 IIS 7.0 Architecuture
2008. 3. 29. 09:11

Spring.Net에 관하여 공부하는 것/Spring Framework2008. 3. 29. 09:11

회사에서 나의 업무는 Java쪽에서 주로 일을 한다. 그런데, 이상스럽게도 요즘 내가 찾아보는 자료는 대부분이 .Net 관련 자료들이고 MS와 관련된 기술들이다.

사실, 일을 할때는 .Net이든 Java Side이건 가리지는 않는다. 양쪽 모두 발전하고 있는 기술들이고, 언제 고객의 요구가 변경될지도 모르기 때문에 항상 주지하고 지켜보고는 있지만, 요즘처럼 틈틈히 .Net쪽의 기술을 검토하고, 분석하지는 않았었다.

최근에 새로 프로젝트를 시작할 일이 있어서, 미국의 연구소와 같이 일을 하고 있는데, 그 쪽에서 .Net과 Java의 장단점에 대해서 나열 할 때도, 현실적으로 기존에 구현된 구현부는 Java이기에 .Net보다는 Java를 지지하기도 했었는데, 이상하게도 .Net 관련 기술에 빠져들고 있다.

아마도 기존의 MS는 폐쇠적익, 자기 기술에 대한 표준화에 대한 강한 의지 때문에 폐쇠적이고 자기 중심적인 면이 강했는데 반해, 요즘의 기술적 트렌드와 MS이외의 휼륭한 기술과 Framework을 받아들이는 적극적이고 긍정적인 면이 보기기 때문인것 같다. 기술적 관점에서 외적인 기술 트랜드에 대해 유연한 모습을 자주 보여주기 때문에 나의 관심도가 증가한 것 같다.

Spring의 DI(Dependoncy Injection)와  IoC(Inversion of Container)는 Java 쪽의 Spring Framework를 접해본 사람들은 흔히 듣는 익숙한 용어들이다. 그리고 Spring Framework의 Core 부분이다.
그런데, ASP.Net 3.5에서는 이에 대해 흔히 언급하고 있다. 그리고 DO와 IoC를 지원하다고 언급하고 있기에 나의 관심이 동했다.

Spring.Net은 스프링을 만든 SpringSource(Interface21에서 사명 변경)에서 지원하고 있다.
간략하게 설명하면, Spring Framework의 .Net 버전으로 생각하면 된다.  
따라서 Spring Framwork의 핵심적인 부분은 모두 반영이 되어있지만, .Net의 언어적인 측면을 따라서 만들어져 있다.

DI와 IoC는 스프링의 코어 부분이다. 이는 당연히 Spring.Core 모듈에 포함되어 있다.
Spring.Aop모듈은 스프링 철학의 핵심이라고 할 수 있는 모듈간의 Dependecy를 줄이기 위한 AOP(Aspect-Oriented Programming)을 지원한다. AOP는 한국에서는 상황 중심 프로그래밍으로 알려져 있는데, 웹 개발자라면 한번쯤은 관심을 가져볼만 하다. 아니 Architect를 꿈꾸는 사람이라고 하면, 반드시 접해보는 것이 바람직할 것 같다.
 
그리고, Database와 Data layer에 Access를 위해서 ADO.Net과 NHibernate를 사용하고 있다. 이부분은 Spring Framework과 많은 차이가 있을 것같다. 왜냐하면 ADO.Net도 나름대로 많은 장점이 있기 때문이다.

Spring.Web 모듈은 MVC를 제공하기 위한 기능들을 지원한다.  ASP.Net 3.5의 Extention 기능으로 MVC를 지원하기로 한것은 이미 잘 알려져 있다. 이는 스프링 MVC와는 많은 부분이 다른다. 마치 Rails와 유사하다.

자세한 내용은 아래에 Spring.Net의 링크를 이용하여 얻을 수 있다.
Spring.Net은 Spring Framework ver 2.5의 모든 기능을 지원하지는 않는다. 예를 들어 Spring Dynamic Module(Spring OSGi)는 아직 지원하지 않는다. 공식적으로 사용 가능한 Spring.Net은 ver 1.1이다.

Spring.Core – Use this module to configure your application using Dependency Injection.   

Spring.Aop – Use this module to perform Aspect-Oriented Programming (AOP).  AOP centralizes common functionality that can then be declaratively applied across your application in a targeted manner.   An aspect library provides predefined easy to use aspects for transactions, logging, performance monitoring, caching, method retry, and exception handling.

Spring.Data – Use this module to achieve greater efficiency and consistency in writing data access functionality in ADO.NET and to perform declarative transaction management.

Spring.Data.NHibernate – Use this module to integrate NHibernate with Spring’s declarative transaction management functionality allowing easy mixing of ADO.NET and NHibernate operations within the same transaction. NHibernate 1.0 users will benefit from ease of use APIs to perform data access operations.

Spring.Web – Use this module to raise the level of abstraction when writing ASP.NET web applications allowing you to effectively address common pain-points in ASP.NET such as data binding, validation, and ASP.NET page/control/module/provider configuration.

Spring.Web.Extensions – Use this module to easily expose a plain .NET object (PONO), that is one that doesn't have any attributes or special base classes, as a web service, configured via dependency injection, 'decorated' by applying AOP, and then exposed to client side java script.

Spring.Services – Use this module to adapt plain .NET objects so they can be used with a specific distributed communication technology, such as .NET Remoting, Enterprise Services, and ASMX Web Services.  These services can be configured via dependency injection and ‘decorated’ by applying AOP.

Spring.Testing.NUnit - Use this module to perform integration testing with NUnit.

Spring.Net 1.1이 나온지도 꽤 된것 같다. Spring Framework ver 2.5의 새로운 Picture가 반영된 버전은 언제 나올지 궁금하다.

마지막으로 Spring.Net에 대한 동영상 자료는 아래 링크를 참조하면 도움이 될것이다.
http://www.infoq.com/presentations/pollack-intro-spring


Posted by 행복상자

댓글을 달아 주세요

오늘 아침에 SottGu's Blog에서 Visual Basic 2008의 Hot-Fix를 발견했다.
사실 지난 몇주 동안 Visual Basic 2008을 사용해 왔는데, IDE가 갑자기 늦어지는 문제를 자주 경험했다. 이는 디버깅을 위해, F5키를 눌러서 프로그램이 Loding되고, 실행하는데도 영향을 미쳤다.

아래는 MS에서 Hot-Fix에 대한 증상을 기술한 것인데, 내가 경헙했던 증상 증상과 동일하다.

The IDE takes a long time to build the solution and to rebuild the solution.
You experience a slow response time when you press F5 to start debugging.
You experience a slow response time in the Code Editor.
You experience a slow response time in IntelliSense.


Hot-Fix의 위치는 아래와 같다.
Hotfix Available for VB Performance Issue in VS 2008

Posted by 행복상자

댓글을 달아 주세요


지난주 화요일은 삼성역 그랜드 인터컨티넨탈 호텔에서 열린 한국 아도비의 제품발표회에 참관차 관람하였다. 제품 소개와 세미나였지만, 솔직한 느낌은 제품소개 측면이 강했다. 기대한 것보다는 수준이 높지는  않았다. 하지만, 세미나에 관심을 가지고 참관한 참가자들이 반드시 개발자가 아니라는 측면을 보면(디자이너들이 상당히 많았던거 같다) 이해가 간다.
여기 저기시 자바 관련된 용어와 기술 설명이 나오면, 이해가 안간다는 말이 들렸다. 좀더 참관자들의 수준을 배려할 필요가 있지 않았나 하는, 지극히 개인적인 의견이다.

그럼에도 불구하고, 정말 놀랐던 것은, 정말 많은 사람들이 관심을 가지고 찾아 왔다는 것이다. 홀 규모는 약 1500명 정도일것 같은데, 2000명 정도가 찾와와서, 준비된 자리가 없음에도 뒤에 서서 키노츠와 제품 소개를 들고, 세미나를 참석하는 열정을 보여주니 말이다. 최근 내가 갔던 행사에서 이정도로 관심이 집중된 것은 몇개 안되는것 같다.

내가 이 세미나를 참관한 목적은 당장의 필요는 적었지만, Web 기술이 어는 정도 성숙한 현 시점에서, 가장 주목 받는 RIA 기술중에 하나라는 측면에서 Adobe의 기술들을 이해하고 싶었다.

Web 기술이 성숙했다는 측면은, 현재 웹 브파우저을 이용한 Data 전송 방법과 동기화 기술  그리고 윈도우 Application과 유사한 서비스의 제공을 들 수 있다. 그 대표적인 예가 구글이고 Ajax를 이용해서 구글에서 만들고 배포한 여러 웹 Application들은 네트워크 연결이 안되거나, 끊어지더라도 지속적으로 서비스 제공하고, 동작하는 기술로 한층 없그레이드 되고 있다. (구글 Gears 참조)
기술이 성숙 되면, 다양한 응용 프로그램들이 나오게 되는데, 결국은 사용자를 위한 UX 측면에세 차별화가 되기 시작할 것이다.

행사를 참여한 여러 회사의 데모를 보았는데, 그중에서 국외는 eBay, 국내는 농협의 Banking System 과 현대 자동차의 상황판 시스템이 인상적이었다.
- eBay Dask top(http://desktop.ebay.com/)


사용자 삽입 이미지


AIR은 Adobe Flash Player의 확장판이으로 보면 쉽게 이해가 된다. 웹브라우저와 PC에 종속되지 않고 독립적으로 Flash 파일을 수행한다고 생각하면 된다. 이는 모바일과 인터넷이 연결되지 않은 환경에서도 동작이 가능하다. 그리고 네트워크가 연결되면, 서버와 데이터 싱크를 할 수 있는 엔진과 Embadded DB를 포함하고 있다. Embadded DB는 Sqlite가 사용된다.
그리고 Flash Player와 가장 큰 차이점 중 하나는 Local 시스템(PC 또는 모바일 기기)의 파일 시스템이 Read/Write가 가능하다는 점이다. 그리고 AIR가 설치된 어떤 OS에서도 사용이 프로그램이 코드 변경 없이 사용이 가능하다.

Flex 3.0은 이를 위한 개발툴이다. (정확하게는 Flex Builder)  Flex 제품군은 서버용 제품들이 여러가지 있다. 그러나 가격이 비싸서 프로젝트에 적용하지는 못했었는데, 요즘은 그 대체 기술들이 많이 나오고 있고, 또 Adobe에서도 이를 위한 기술을 일부 지원하기도 한다.
Flex에 대한 라이센스 정책은 사실 잘 모르겠다.
Adobe의 김 백수 전무에게 물었더니, Flex Builder 3.0을 사면 된다고 했는데, 정말 배포에 대한 추가 라이센스가 없는지 명확하지가 않았다. (지금은 다른 부서 사람인데 Flex 2로 개발 중인 책인 개발자 한명이 이 때문에 어려워했던 기억이 있어서, 확인차 물었었다. 사실 이거 확인하는 것도 나의 참관 이유중 하나였다.)

새로운 것을 배우는 것이 즐거운 이유는 여러가지 호기심이 생기기 때문일 것이다.
반드시 신기술이 좋다고는 할 수 없지만, 사람들의 관심을 끌지 못하는 기술은 아무리 시대를 앞선다고 해도, 사라질수 밖에 없다.

그런 의미에서 이번 행사에서 많은 관심을 끈 Adobe AIR와 Flex는 향후 어떤 모습으로 개발자와 디자이너에게 그리고 사용자에게 다가갈지 귀추가 주목된다.

Posted by 행복상자

댓글을 달아 주세요

2008. 3. 18. 23:51

IIS 7.0 Architecuture 좋아하는 것2008. 3. 18. 23:51

요즘은 주제를 정하지도 않고서, 웹 서핑을 하다가, 공부를 하게된다.
사실 IIS 서버는 내가 처음 웹 프로그래밍을 했던 Windows NT 3.5에 내장된 웹서버 였다. 그때는(1996년도) ASP의 동적 스크립트의 장점과 쉽게 데이터 베이스 연결할 수 있도록 도와주던, Inter Dev 1.0 Beta 3는 웹 개발함에 있어서 최고의 툴이었고, 프론트 페이지와 궁합도 정말 잘 맞았다. 거에에 IIS에 쉽게 연동할 수 있었기에 당시로는 혁신적인 웹 개발 프레임워크 였다.   내 기억이 맞다면, 그 때 사용하던 IIS는 3.0 버전이었을 것이다.

2000년대에 들어서면서도 Architecture에 많은 변화가 있었고, 현재는 6.0 버전이 주로 사용되고 있다.
MIX 08에서 IIS 대한 변화된 내용들이 발표되었는데, Windows 2008서버에 포함되어 출시될것 같다.

아키텍쳐를 보면 몇가지 특이 사항들이 있지만, IIS 6.0에서 Windows Sockets API를 대체한 HTTP.sys는 더욱 중요한 역할을 할것이다. 이는 Kernel-mode 에서 동작하기 때문에 다른 웹 서버보다 빠르다고 알려져 있다. (OS의 특성을 이용하기에..)

HTTP.sys를 이용한 장점들은:
  • Kernel-mode caching. Requests for cached responses are served without switching to user mode.
  • Kernel-mode request queuing. Requests cause less overhead in context switching because the kernel forwards requests directly to the correct worker process. If no worker process is available to accept a request, the kernel-mode request queue holds the request until a worker process picks it up.
  • Request pre-processing and security filtering.

    ==> 커널모드의 장점을 살려 속도를 취대한 끌어올리는데 초점이 맞추어져 있다.
  • 다음은 HTTP Request Processing 에 대한 내용이다
    1. When a client browser initiates an HTTP request for a resource on the Web server, HTTP.sys intercepts the request.
    2. HTTP.sys contacts WAS to obtain information from the configuration store.
    3. WAS requests configuration information from the configuration store, applicationHost.config.
    4. WWW Service receives configuration information, such as application pool and site configuration.
    5. WWW Service uses the configuration information to configure HTTP.sys.
    6. WAS starts a worker process for the application pool to which the request was made.
    7. The worker process processes the request and returns a response to HTTP.sys.
    8. The client receives a response.


    그리고 IIS에 추가 가능한 모듈들이 추가되었는데, 이는
    http://learn.iis.net/page.aspx/101/introduction-to-iis7-architecture/
    를 참조하면 된다.

    Posted by 행복상자

    댓글을 달아 주세요