2017-12-26 14 views
0

C# 응용 프로그램을 작성 중이므로 3 계층 프로그래밍 아키텍처를 따르고 싶습니다. 나는 this article을 기반으로 내 애플리케이션을 프로그래밍 해왔다.도메인 객체를 3 단계로 배치하는 위치 # winforms 응용 프로그램

은 내가 누군가를 도와 줄 수 있기를 바랍니다 몇 가지 질문이 : 내가 예를 들어 (내가 getter 및 setter와 생성자를 넣어 Person 클래스를 도메인 오브젝트를 배치해야합니까

  • 을하고, 모든 속성 (나이, 이름, ..) BLL 폴더 또는 다른 곳에 넣을 수 있습니까?

  • 내 DAL 계층의 함수를 하나의 컨트롤러에 호출하거나 모든 특정 비즈니스 클래스 (예 : 사람, 주문, ..)

  • DAL 함수를 호출하기 전에 모든 BLL 함수에서 DAL 개체를 만들어야합니까? 아니면 한 번에 하나의 DAL 클래스 개체 만 만들 수있는 단일 패턴을 사용합니까?

내 수업의 스크린 샷 (Program.cs 메인 클래스) :

class structure

+0

대부분의 경우와 마찬가지로, 상황에 따라 다릅니다. 예를 들어, 응용 프로그램의 크기가 커질수록'Person' 객체는 각 레이어에서 많이 달라지기 시작할 것입니다. 보기에 필요한 데이터를 보유하는 'PersonViewModel'이있을 수 있습니다. 비즈니스 로직에 따라 조작이 필요한 BL의'Person' 엔티티와 같은 데이터를 표시하는 'PersonDTO'가있을 수 있습니다. 지속성에 가장 유용합니다. –

+0

BL에서 'Person'엔티티로 시작하고 비즈니스 로직에 의한 조작임을 염두에 두십시오.데이터를 뷰 또는 지속성을 위해 조작해야하는 시점에 이르면 해당 목적에 맞는 별도의 객체를 만들고 응용 프로그램에 적합한 방식으로 해당 객체 사이에 매핑하십시오. –

답변

0
  1. 내가 도메인 객체가이 객체가 될 것 같은 DAL 폴더 안에 갈 것이라고 말할 것입니다 오브젝트의 인스턴스 내에 데이터를 저장합니다.
  2. 하나의 컨트롤러 아래 모든 BLL 기능을 배치하지 않을 것을 제안합니다. "단일 시스템, 단일 프로젝트"에 대해서도 3 계층 아키텍처가 필요한 이유 중 하나는 이해와 유지가 쉽도록 코드 분리가 있어야한다는 것입니다.
  3. 단일 패턴은 동일한 개체가 모든 BLL 함수와 공유됨을 의미합니다. DAL의 주요 목표가 하나의 저장소 상호 작용 (예 : 데이터베이스)을 가지고 있다면 여러 DAL 개체를 사용하면 리소스 사용 우려가 있다는 의미의 여러 데이터베이스 연결을 의미합니다. 다중 스레드 상황이 발생하지 않는 경우에도 데이터베이스 연결 풀 크기를 상수로 늘릴 수 있으며 풀과 스레드를 공유 할 수 있습니다. 이것의 중요성은 데이터베이스에서 불필요한 자원을 요청하지 않는다는 것입니다.
0

다양한 솔루션이 가능하지만, 예를 들어. 핵심 플랫폼은 "추상화의 신에 대한 더 많은 추상화"가 추세임을 보여줍니다. 그들이 개발 프로세스 (크로스 플랫폼, 오픈 소스)에서 이러한 방식으로 관리하는 것이 더 쉽다는 것을 알았 기 때문에 추측합니다.

최대한의 추상화를 통해이를 수행하여 자신에게 얼마나 편안한 지 확인하십시오.

하나의 어셈블리에 엔티티, 서비스 인터페이스가 있습니다. 엔티티에 저장하는 "비즈니스"코드 (인스턴스 메소드에있을 수도 있고, 정적 메소드에있을 수도 있고, 정적 확장에있을 수도 있습니다 - 그들 사이에는 큰 차이가 없습니다). POCO는 "메소드를 포함 할 수 없다"는 것을 의미하지 않습니다.