저는 소프트웨어 개발에있어서 새로운면이 있습니다. 개인적으로 계층화 된 아키텍처는 객체 지향 접근 방식에서 소프트웨어 개발 과정에서 발생하는 복잡성을 줄이는 것은 물론, 코드를 체계적으로 유지하는 데 좋은 방법이라고 생각합니다. 이제는 DDD (Domain Driven Design)에 대해 소개 할 몇 가지 문제에 직면 해 있습니다. Ofcourse, 초급 수준의 것들.
여기에 -
예를 들어, "사람"관련 데이터를 데이터베이스에 저장하고 사람 세부 정보를 wpf 데이터 그리드에 표시하는 응용 프로그램을 작성하려고합니다 (DDD는 분명히 이러한 규모의 응용 프로그램 용이 아니지만 나 같은 아마추어에게는 단순한 것들). , DDD에 대한 이해가 아키텍처 (그것의 간단한 버전) 다음과 같이 (내가있어 경우에 저를 수정하시기 바랍니다해야 말한다 지금DDD : 레이어를 구성하는 방법은 무엇입니까?
public class Person
{
public Person(dataType paramA, dataType paramB)
{
_fieldA = paramA;
_fieldB = paramB;
}
private dataType _fieldA;
public dataType PropertyA
{
//encapsulates _fieldA
}
private dataType _fieldB;
public dataType PropertyB
{
//encapsulates _fieldB
}
public dataType PropertyX
{
//some code based on private fields
}
public dataType PropertyY
{
//some code based on private fields
}
private dataType MethodPQR(dataType param)
{
//some code
}
public dataType MethodUVW(dataType paramOne, dataType paramTwo)
{
//some code
}
}
- 그래서, 내가 뭔가처럼 도메인 클래스 "사람을"설계) 잘못된 -
참고 :
나는 데이터 그리드 단지 즉시 변경의 종류를 반영하기 위해, 일부 ObservableCollection에 바인딩되고 싶어요.
는 WPF 응용 프로그램이다 그러나 반드시 MVVM 패턴으로 나는 의도적으로 (자체 뒤에 코드가 응용 프로그램 계층을 나타내는 경우에 나는 아무 생각이 없음) 그래서 뒤에
를 코드를 사용하고자하는 내 질문은 -
어떤 종류의 코드가 응용 프로그램 계층에 속해야합니까?
내 생각에, 필자는 내 도메인 개체 (Person)의 ObservableColletion을 DataGrid의 itmsSource로 바인딩해서는 안됩니다. 어떤 유형의 객체를 도메인 객체에서 추출해야합니까?
프리젠 테이션 레이어 개체와 도메인 레이어 개체 간의 연결을 유지하려면
“never instantiate domain objects directly in presentation layer”
과 같은 규칙이있을 수 있습니다. 그렇다면 비 직접적인 접근 방식은 무엇입니까?코드 숨김이 응용 프로그램 계층과 대화하는 경우 응용 프로그램 계층이 저장소와 대화해야합니까? 하지만 어떤 종류의 도메인 액세스가 필요한 경우 이 아니고 데이터 액세스와 관련이 있습니다 (이 응용 프로그램에는 없지만 발생할 수 있음). 도메인 계층에서 응용 프로그램 계층과 통신해야하는 사람은 누구입니까?
나는 모든 나의 질문과 문제점이 매우 아마추어 수준이라는 것을 알고있다. 그러나 그들은 실제로 질문과 문제입니다. 누군가에게 시간이 있다면, 어떤 반응이라도 인정 될 것입니다.
EDIT : 데이터 저장소에 도메인 모델 참조가 있어야하는지 확실하지 않습니다.
@Sisyphus : 지금 당장은 깨끗하고 자세한 설명과 나에게 계몽을위한 시간을 할애하십시오. 그러나 더 많은 질문이 당신에게 올 것입니다. – atiyar
@Syyphus : 다시 한번 감사드립니다. 귀하의 제안은 훌륭했으며 응용 프로그램 서비스와 도메인 서비스의 차이점에 대한 예가 매우 유용했습니다. 한 번만 더 질문합니다. 응용 프로그램 계층이 리포지토리에 직접 액세스해야합니까? 아니면 항상 도메인 계층을 통과해야합니까? 내 말은 거의 모든 요청 ** 이행 **은 요청 ** 제출 **에 대한 도메인 제한 (검증 일 수 있음) 검사를 수행한다는 것입니다. 맞습니까? 그런 다음 응용 프로그램 계층이 모든 요청을 도메인 계층에 제출하지 않아야하며 도메인 계층 만 저장소에 액세스 할 수 있습니까? – atiyar
의견이 제한되어 있으므로 내 답변에 추가했습니다. EDIT 섹션을 참조하십시오. – Sisyphus