달력

3

« 2008/3 »

  • 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
2008. 3. 29. 20:31

ASP.NET MVC & Request Flow 좋아하는 것2008. 3. 29. 20:31

MVC(Model-View-Controller) 패턴은 일반적으로 UI가 있는 Application에서 사용되는 패턴이다. Data와 UI를 분리하기 위한 노력들은 코드의 재 사용성을 높이고, 시스템 변경시 유연하게 수정이 가능하게 해 주므로 다양한 방법으로 Application에 적용되어 왔다.

ASP.NET MVC

     - Model
      : 일반적으로 Application의 주 로직을 담당하고나, DB를 이용하여, Application의
        데이타를 관리하거나, Business 로직을 포함하고 있다.  
    - View
    
: 사용자의 Interface와 연관된 부분으로, Model 데이터를 보여주거나 User의
         입력 Data를 가졍온다.
    - Controller
    
: User와 Interaction하고 Model과 View를 통해 원하는 결과를 얻을 수 있도록
       동작을 결정한다. 결과적으로 View를 통해 Model의 내용을 볼수 있도록 도와준다.


ASP.NET의 MVC Framework도 여타의 다른 MVC프레임워크와 대동 소이하다. 단지 Microsoft에서 공식적으로 지원한다는 것이 다를 뿐이다. 이는 분명 실행 코드와 HTML을 분리해 줘서, 코드의 가독성을 높이고, 개발 속도를 올리는데 크게 기여할 것이다.



images/mvc.jpg
- ASP.NET MVC Framework는 TDD를 가능하게 도와 준다. 그리고 MOC 테스트를 위한 클래스와 모듈을 Framework에 기본 탑재함으로써, 좀더 유연하게 개발을 할 수 있도록 도와 준다. 보통 테스트를 위해 새로 만들 모듀을 Http Server에 올리고 내리는 작업은 시간을 죽이는 작업들이다. 이는 Framework이 컴포넌트들 대부분이 Interface기반으로 되어 있어서 가능한 점이다.
- 또한, ASP.NET MVC Framework는 확장 가능하고, Pluggable 하다. 이는 각 모듈들이 다른 부분에 영향없이 상용 모듈을 사용할 수 있도록 도와준다.
- SEO(Searc Engin Optimization)와 REST를 지원한다.
- ViewStat와 Postback를 더 이상 사용할 필요가 없다.

Request Flow
일반적으로 ASP.NET의 wep form Applicaton들은 URLs과 Logical Disk 상의 파일들가 Mapping해서 사용하도록 한다. 그러나 ASP.NET MVC Framwork는 URLs와 Controller를 연계하여 사용한다. 그래서 Application이 시작할 때, Url Route Rule을 등록하고, 이 Routiog Handler는 Controller에 연계되어 요청이 있을시 사용된다.

images/request.jpg




참조 링크: ASP.NET MVC Framework Part 1

:
Posted by 행복상자
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 행복상자