'2012/08'에 해당되는 글 2건

  1. 2012.08.09 [ASP.NET MVC]ASP.NET MVC Filters
  2. 2012.08.09 [ASP.NET MVC] ASP.NET MVC Entity Framework
개발 이야기/ASP.NET2012.08.09 15:49


이번 시간은 ASP.NET MVC Filter에 대해서 개념을 잡아보아요.


Filter는 요청건의 처리를 하는 파이프라인에서 추가적인 로직을 구현할 수 있게 제공합니다. 예를 들어 URL를 통해 들어온 요청에서 권한을 체크한다던가, 모니터링을 위한 로그를 쓴다던가, 캐싱을 할경우에 Filter를 이용하면 효율적으로 관리할 수 있다. 즉, ASP.NET MVC는 Routing으로 인해 프로젝트 구조를 체계적으로 관리할 수 있는 장점이 있기에 여기에 Filter를 적용하면 깔끔하고 정확한 공통처리가 가능하다. 


 Filter의 사용은 적용하고자하는 Controller의 클래스나 메서드 단위에서 어트리뷰트로 선언을 하면 적용된다.


[FilterName]

public class HomeController : Controller

{

    [FilterName]

    public ActionResult Index()

    {

        ViewData["Message"] = "Welcome to ASP.NET MVC!";

 

        return View();

    }

 

    public ActionResult About()

    {

        return View();

    }

}



요청에 따른 MVC 처리 과정을 보면 최종적으로 Action Filter를 통해 Action result에서 Client에 보내질 컨텐츠가 반환됩니다. 이때 Filter를 사용하면 Action Method 전후나 Result 전후로 로직 제어가 가능하다.


MVC Framework에는 4개의 기본적인 Filter 타입을 제공한다.

1.     Authorization : 인증, 권한 처리
2.     Action : 액션 메서드 전후 처리
3.     Result : 액션 결과 전후 처리
4.     Exception : 에러 처리

위 4개의 Filter에 대해서는 간단히 언급만하고 앞으로 하나하나 자세히 살펴보겠습니다.^^
이번 아티클에서는 필터의 개념정도만 잡아갔으면 합니다.
끝까지 읽어주셔서 감사합니다.

저작자 표시 비영리 변경 금지
신고
Posted by 사나에
개발 이야기/ASP.NET2012.08.09 15:36

ASP.NET MVC를 활용하면 간편하게 기본 웹사이트 구조를 구축할 수 있다. MVC에서 Model의 영역에 해당하는 부분을 Entity Framework를 사용하여 Database Table 기반의 개체들을 개발 소스단에서 사용하는 객체화를 보다 쉽게 만들 수 있다, Entity Framework .NET ORM Framework Table 컬럼과 Database 관계를 C#  Object화해주는 Framework이다또한, Entity Framework단에서 LINQ를 사용하여 Object 질의를 할 수 있다.

 

[그림1 - Entity Framework 구조]

 

위 그림처럼 Entity Framework의 기본 구조를 살펴보면 Entity Framework는 기존 ADO.NET Data Providers 기반에서 EntityClient Data Provider가 제공된다기존의 ADO.NET을 기대로 활용한다는 것이다. EntityClient Data Provider를 통해서 소스 코드에서 사용할 C# Object Services를 만들어준다개발자는 Object들을 Entity SQL 나 기존에 익숙한 LINQ를 사용하여 원하는 데이터를 질의 할 수 있다. Entity Framework를 사용했을 때 가질 수 있는 장점을 MSDN에서는 다음과 같이 정리하고 있다.

 

Entity Framework의 장점

  • 1. 개발시간 절감된다.
  • 2. 개발자는 응용프로그램을 구현하는 입장에서 객체 모델의 관점에서 작업할 수 있다.
  • 3. 응용프로그램은 독립적인 개념적 모델을 지원함으로써 실제 데이터 저장소에 대한 종속이 해방될 수 있다.
  • 4. 객체 모델과 특정 데이터 저장소의 스키마 사이의 매핑인 응용프로그램의 코드를 변경하지 않고도 가능하다.
  • 5. LINQ지원으로 개념적 모델에 대한 질의 시에 인텔리센스가 제공되며 컴파일 타임에서 구문 유효성 검사가 제공된다.

 

우리는 지금 ASP.NET MVC 프로젝트 기반에서 Entity Framework를 살펴보고 있기 때문에 Entity Framework에 대해서는 이쯤에서 정리하고 이제 Entity Framework ASP.NET MVC에서 추가하여 사용하는 방법에 대해서 살펴보자.

 

1. Entity Framework 참조하기
    Nuget Gallery를 사용하여 최신버전의 Entity Framework를 참조한다. (Nuget Gallery에 대해서는 아래 Note를 확인하세요.)     

 

 

    

    [그림2 - Neget 패키지 관리] 
    프로젝트에서 Nuget패키지 관리를 선택한다.

 

       

     

   [그림3 - Entity Framework 참조]

   좌측에서 온라인 탭을 선택하고 우측 검색어를 입력한다리스트에 출력된 EntityFramework를 해당 프로젝트에 설치한다패키지 단위로 프로젝트에 참조가 된다현 시점에서는 Entity Framework 4.3.1 이 최신이군요.

   

   

   [그림4 - Entity Framework 개체 속성]

    

 

   참조된 EntityFramework 어셈블리를 확인해보면 버전이나 프로젝트에 참조된 경로를 다음과 같이 확인 할 수 있습니다그럼Entity Framework를 참조하는게 끝났습니다.

 

2. Database 개체들 C# 객체화하기

   소스 코드에서 사용할 객체들을 만들어보겠습니다프로젝트에 ADO.Net 엔터티 데이터 모델 항목을 추가합니다.

 

   

   [그림5 - EDMX 추가]    

    EFModel.edmx를 생성합니다.

 

 

    

    [그림6 - Database 생성]
 
  데이터베이스에서 생성을 선택하고 연결할 데이터베이스를 설정해주세요.

 

 

     

    [그림7 - Entity Framework ConnectionString 설정]

    연결문자열을 선택한 후 다음을 진행합니다쉽게 얻을수 있는 AdventureWorks로 데모를 보여드리겠습니다.

 

 

     

     [그림8 - Database 개체 선택]

     우선 테이블 개체들을 선택해서 가져오겠습니다.

 

3. Object 질의

    기본적인 CRUD 소스코드를 작성해보겠습니다.

   

           

 

        public List<Department> GetDepartmentList()

        {

            using (AdventureWorksEntities ef = new AdventureWorksEntities())

            {

                return ef.Department.ToList();

            }

        }

 

        public Department AddDepartment(Department item)

        {

            using (AdventureWorksEntities ef = new AdventureWorksEntities())

            {

                ef.Department.AddObject(item);

                ef.SaveChanges();

            }

 

            return item;

        }

 

 

        public Department UpdateDepartment(Department item)

        {

            using (AdventureWorksEntities ef = new AdventureWorksEntities())

            {

                ef.Department.Attach(item);

                ef.SaveChanges();

            }

 

            return item;

        }

 

        public bool RemoveDepartment(Department item)

        {

            bool retValue = false;

            using (AdventureWorksEntities ef = new AdventureWorksEntities())

            {

                Department targetItem = ef.Department.SingleOrDefault(x => x.DepartmentID == item.DepartmentID);

                ef.Department.DeleteObject(targetItem);

                int iResult = ef.SaveChanges();

 

                if (iResult > 0)

                    retValue = true;

            }

 

            return retValue;

        }

 

   

 

    자세한 부분은 샘플 프로젝트를 첨부하니 다운받아서 실행하거나 소스코드를 확인해보기를 바란다여기서는 결과 화면만 확인해보겠다.

    

    

    [그림9 - 실행결과]

 

 

 

Note!

Nuget Gallery Visual studio 확장 툴로 참조할 라이브러리를 검색하여 프로젝트에 DLL 참조를 쉽게 제공한다누구나 자신이 만든 라이브러리를 패키징하여 Nuget에 올릴 수도 있고 다운 받을 수 있다온라인으로 검색이 되기 때문에 최신 버전의 패키지를 참조할 수 있다는 부분에서 장점을 갖는다.

 

 


생각보다 글이 길어졌는데 끝까지 읽어주셔서 감사합니다.



훈스닷넷 : http://www.hoons.kr/Lecture/LectureMain.aspx?BoardIdx=50776&kind=60&view=0

저작자 표시 비영리 변경 금지
신고
Posted by 사나에