-
Enterprise Architecture 프로젝트 구성하기-1카테고리 없음 2022. 2. 13. 12:35
새로운 프로젝트를 만들기 이전에 프로젝트 보다 더 큰 개념이 Solution부터 만든다.
Solution 안에는 여러가지 프로젝트를 담을 수 있다. 그동안은 한개의 솔루션에 하나의 프로젝트만 담았지만 원래 솔루션의 개념은 그런 것이 아니다. 솔루션은 하나의 프로젝트를 담기위해 만들어진 그릇이 아니라 다양한 프로젝트를 넣어 둘 수 있는 그릇이다.
솔루션을 만든뒤 바로 프로젝트를 만들지 않고, 프로젝트들을 구분하고 담아줄 폴더를 먼저 생성한다.
BuginessLogicLayer,DataAccessLayer,PresentationLayer가 공통적으로 사용할 공통분모가 존재한다.
흔히 Modelclass와 ViewModelclass가 그렇다. 왜냐면 BuginessLogicLayer에서 validation할 때 만약 Note 타입의 인스턴스가 null이라면, 혹은 ASP.NET MVC에서 Note라는 객체를 받아서, data를 입력을 받는 등 그런 참조가 일어 날 수도 있다. 그래서 크게 보면, Note클래스를 BuginessLogicLayer,DataAccessLayer,PresentationLayer에서 모두 참조하게 되는 것이다.
BuginessLogicLayer,DataAccessLayer,PresentationLayer에서 모두 참조하게 되는 공통분모의 폴더인 Common도 만들어 준다.
사실 프로젝트의 가장 우선순위는 DB설계를 다 완성이 된 다음에 Model 클래스를 설계하여 만들기 시작하는 것이다.
Class Library의 종류
- .NET Framework
- .NET Core
- .NET Framework(Portable) - Xamarin
- .NET Standard
이 3가지가 해주는 역활은 dll을 만들어 주는 것으로 같다. API 구성을 위해 dll을 만들어 주고, 그안에 있는 코드 자체는 개방하지 않고, 대신에 그안에 기능들은 쓸 수 있다. 어떻게 보면 모듈화를 시켜주는 것이다. 문제점은 라이브러리를 만들었을 때도 플랫폼에 마다 따로 라이브러리를 만들어 주어야 한다. 이는 enterpriase acgutecture에 위반이 된다. 왜냐하면 class library를 사용하는 것은 코드 재사용성을 높이려는 목적이 있는데, 이것을 충족하지 못하기 때문이다.
=> 그래서 생겨난 것이 .NET Standard이다.
.NET Standard Libray
기존에 플랫폼에 의해 구분되어 같이 사용하지 못하던 class library가 가지는 문제점을 해결하기 위해 나온 것이 .Net Standard Library이다. .NET Framework, .NET Core, Xamarin 모두 .Net Standard Library는 참조가 가능하다. 덕분에 확장성과 재사용성 모두 좋아졌다.
예) 예전에는 Client가 사용하는 App이 Xamarin으로 구성이 되어있다면, class library도 Portable class library로 만들어야 했다.
가상의 폴더
[Solution 'Note']-[Open Folder File Explorer]
솔루션에 BuginessLogicLayer, DataAccessLayer, PresentationLayer, Common 폴더를 만들어 두었지만, 물리적 경로에서는 폴더가 보이지 않는다. 앞서 언급한 폴더들은 소스코드 단계에서는 분리가 가능하지만 실질적으로 물리적 폴더가 생성되지는 않는다.
Model 클래스 만들기
Model 클라스의 네이밍 전략 : 솔루션이름.Model
DataAccessLayer 프로젝트 : 솔루션이름.IDAL, 솔루션 이름.DAL
이렇게 하는 이유는 Dpendeny injection의존성 주입즉 사용을 할때 강한 결합이 아닌 느슨한 결합을위해 Interface를 사용하기 위함이다. 그때 Interface만 모아둔는 프로젝트로 사용하는 것이 IDAL 프로젝트이다.
인터페이스용 프로젝트에 우선 IUserDal인터페이스를 구현하다.
인터페이스를 상속 받은 UserDal 클래스를 UserDal프로젝트에 만들어 준다.
=>보통 느슨한 결합을 위해서 먼저 Interface에 접근을 한 후에 직접 DataAccess 접근을 한다.
각 Layer 접근 순서
강한 결합와 느슨한 결합
BLL이 DAL에 접근하기 위해서는 종래의 방법으로는 new 객체 생성을 통해 접근을 하게 된다.
하지만 이는 강한결합을 초래한다.
느슨한 결합을 도출하기 위해 인터페이스를 이용한다. 이렇게 하면 new객체 생성을 하지 않았음에도 오류가 나지 않게 된다.
Presentation Layer
Presentation Layer 폴더에 Note.MVC6라는 ASP.NET Core App(Model-View-Controller)프로젝트를 만들어 준다.