2016-12-14 4 views
0

webUI 프로젝트와 도메인 역할을하는 클래스 lib 프로젝트가 포함 된 VS2015 솔루션이 있습니다. 클래스 lib에는 20 개 이상의 EF DB First 생성 클래스 (edmx 모델)와이 클래스에서 작동하는 20 개의 repo가 ​​있습니다. 기본 db를 변경해야 할 때 edmx 모델을 버리고 재생성합니다. 이 클래스 중 하나는 Domain.DbEntities.plc입니다. 내 webUI는이 도메인 lib를 참조합니다. 동일한 기본 DB 테이블에있는 여러 도메인의 클래스 간 통신

얼마 후 나는 Domain lib 참조가 있고 방법 변수 일부 수용성 Domain.DbEntities.plc Domain.DbEntities.plc도를 사용하는 일부 복귀 래퍼 클래스가 용액에 추가 첨가 프로젝트 PlcCommunicator. 내 webUI 프로젝트는 "PlcCommunicator"프로젝트를 참조하고 모든 것이 잘 작동합니다.

솔루션이 더 커지면서 시간이 갈수록 더 많은 프로젝트를 추가하고 사용했습니다. Domain lib. 하지만 이제는 PlcMonitoringLogger이라는 또 다른 프로젝트를 추가했으며 메인 도메인의 일부 하위 도메인을 만들었습니다. 5 개 클래스는 모두 EF DB입니다. Main Domain과 동일한 db에 생성 된 edmx 클래스가 처음 생성되었습니다. 이 클래스 중 하나는 PlcMonitoringDomain.DbEntities.plc입니다.

는 지금은 PLCCommunicator 프로젝트를 사용하는 내 PlcMonitoringLogger 프로젝트가 필요합니다 (Domain.DbEntities.plc와의 차이를 참고). 그러나 PlcCommunicatorDomain.DbEntities.plcPlcMonitoringLogger과 함께 작동하며 PlcMonitoringDomain.DbEntities.plc 만 알 수 있습니다. 그래서 제가 직면 한 문제가 있습니다 .... Domain.DbEntities.plc 객체 대신 plc 대신에 객체를 받아들이고 Domain.DbEntities.plc 객체 대신 plc의 ID를 반환하도록 PlcCommunicator 메서드의 매개 변수를 변경할 수 있습니다. 그러나 이것이 올바른 접근 방법입니까? 함정이 있습니까? 장단점은 무엇입니까? 또 다른 해결책은 base plc class을 만드는 것일 수 있지만 이는 옳지 않은 것처럼 보입니다. 서로를 분리하고 base 클래스를 만드는 것은 옳다고 생각하지 않습니다.

제한된 컨텍스트에 대한 내용을 읽었습니다. 그러나 나는 기존의 프로젝트를이 디자인 패턴을 사용하는 것으로 바로 바꿀 수는 없으며 원하지 않는다. 마지막 장소에는 아직 경험이 없기 때문에 초심자에게는 어렵습니다. 바운드 컨텍스트에서 벗어나는면을 사용하는 "베이비 스텝"을 만드는 것이 최선의 방법이라고 생각합니다. 전체 리빌드를하지 마십시오!

아무도이 주제 또는 제발 말하기에 유용한 아이디어가 있다면 응답하십시오!

+0

서로 다른 프로젝트에 배치하여 분리하는 것은 불가능합니다. 구현이 아닌 추상화를 프로그래밍하여 최상의 결과를 얻을 수 있습니다 (IMHO). – Maarten

답변

0

하위 도메인을 생성하여 달성하려고 시도한 것이 확실하지 않지만 그 결과는 상호 교환 할 수없는 것입니다. 따라서 도메인 혼합을 초래하는 구성 요소를 결합하려는 경우이를 수행 할 수 없습니다.

IMHO, 해결책은 하위 도메인을 없애고 현재 메인 도메인에 통합하는 것입니다. 도메인을 사용하는 모든 프로젝트/구성 요소는 도메인을 사용하는 다른 구성 요소도 문제없이 참조 할 수 있습니다. 여러 도메인이 섞이지 않았습니다.

+0

"주 도메인"은 시간이 지남에 따라 커지고 일부 소규모 프로젝트 (서비스)는 "주 도메인"의 2 ~ 3 개 엔티티 만 있으면 내가 설계 한 것을 수행 할 수 있습니다. 따라서이 프로젝트에서이 전체 "메인 도메인"을 사용하는 것은 중요하지 않습니다. 이것이 내가 필요한 새로운 작은 서비스 (프로젝트)로 디자인 습작을 변경하기로 결정한 이유입니다. 아마 "메인 도메인"을 5 개의 하위 도메인으로 나눌 수 있습니다. 소규모 프로젝트 (서비스)가 1 개 또는 2 개의 하위 도메인을 사용하고 webUI가 모두 5 개를 사용하는 경우 (또는 1 개가 필요하지 않은 경우 적은 수)오브제는 물체 대신 물체의 ID와 통신합니다. –

+0

간단한 도메인으로 유지하는 것이 왜 의미가 없습니까? 당신은 그것을 조각들로 분리하려했지만, 분명히 당신이 다른 구성 요소로부터 하나의 구성 요소를 사용하려고 시도 할 때 당신을 물 으려고 되돌아옵니다. – Maarten

+0

그러나이 접근법은 완전히 새로운 것이므로 알려진 함정, 찬반 양론 또는 다른 사용자 충고를 요구합니다. 적어도 thnkx는 귀하의 답변을 기다리고 있습니다! 더 많은 응답 (다른 사람들로부터)은 여전히 ​​매우 환영합니다;) –