-
Enterprise Architecture 프로젝트 구성하기-2카테고리 없음 2022. 2. 13. 13:14
Note.MVC6프로젝트의 HomeController
HomeController의 생성자에서 UserBll 타입의 인스턴스 변수 _userBll을 생성해준다.
그래서 _userBll 이스턴스 변수가(new 객체 생성 없이) Dependency Injection 컨테이너에 들어 갔고
그래서 Index( ) aptjemdptj _userBll로 해당 클래스에 있는 메서드를 가져오는 호출 명령을 한다.
Note.BLL 라이브러리 클래스의 BLL.cs
Bll메서드가 호출되었기 때문에 Bll.cs에서는 파라미터 userNo값을 받아서, _userDal 인스턴스 변수를 사용해서, UserDal 클래스의 메서드를 호출하고 역시 userNo값을 넘긴다.
Note.DAL 라이브러리 클래스의 DAL.cs
그럼 DAL.cs에서 해당 파라미터를 받고 예외를 던져 마무리가 된다.
=>이것이 Enterprise Architecture에 기본적인 구성방식이다.
그렇다면, MS SQL 기준으로 Data Access구성을 했다. 근데 만약 고객이 DB를 MySQL 혹은 Oracle로 바꿔달라고 요청을 한 다면, 그러면 어떻게 해야할까?
=> DataLayerAccess에 프로젝트를 하나더 추가해준다.
예) Note.Oracle.DAL, Note.Mysql.DAL
그 뒤에 새로 작성된 Note.OracleDAL에서 라이브러리 클래스 IDAL를 상속받은 구체 라이브 클래스를 작성해주면 된다.
그렇게 되면 오라클DB를 기준으로 어느정도 코드를 새로 작성하고,Note.MVC6프로젝트에서 Note.OracleDAL에 접근을 하도록(Startup.cs) 하는 듯 어느정도 변경사항이 있을 수 있다. 하지만 기타 라이브러리 클래스 Note.BLL, 라이브러클래스 Note.IDAL, 라이브러리 클래스 Note.Model, Validation Check, Cache 등은 추가적을 바꾸지 않아도 된다. 이러한 점을 Enterprise Architecture의 장점으로 뽑을 수 있다.
[출처-https://youtu.be/dKvCZUec100]