WCF 서비스를 구축 중입니다.WCF 작업 (서비스 계층에서 데이터 계층으로)에서 비즈니스 개체 전달
데이터 계약 오브젝트는 비즈니스 오브젝트와 완전히 동일합니다.
WCF 서비스에서 데이터 계약을 만들거나 BO 레이어를 참조하고 WCF 작업에서 해당 비즈니스 개체를 사용해야합니까?
WCF 서비스를 구축 중입니다.WCF 작업 (서비스 계층에서 데이터 계층으로)에서 비즈니스 개체 전달
데이터 계약 오브젝트는 비즈니스 오브젝트와 완전히 동일합니다.
WCF 서비스에서 데이터 계약을 만들거나 BO 레이어를 참조하고 WCF 작업에서 해당 비즈니스 개체를 사용해야합니까?
나는 다른 프로젝트에서 분할 것 :
참조 BusinessModels 및 서비스에 DataContracts. 그런 다음 AutoMapper을 사용하여 모델 클래스를 계약 클래스에 매핑하고 그 반대의 경우도 마찬가지입니다. 그런 다음 계약에 의존하기 때문에 나중에 WCF 클라이언트를 손상시키지 않고 모델을 변경할 수 있습니다.
비즈니스 논리를 직렬화에 대한 우려없이 혼란스럽게 만들지 않고도 비즈니스 객체를 직렬화 할 수 있다면 나는 그것을 향해 말할 것입니다.
더 나은 대안은 서비스 계층 뒤에 비즈니스 로직 계층을 가져오고 뷰에서 바인딩 할 수있는 서비스의 간단한 DTO를 노출하는 것입니다.
이 나는 번역 WCF RIA Services이 접근 방식에 기사 꽤 잘 표준 WCF 웹 서비스 지금까지 AutoMapper을 사용하지 않은 비록 내가 @valpolushkin의 같은 라인에서 생각감사합니다. 기사를 볼 것입니다. SL 뒤에 SL을 '가져 오는 것'은 무엇을 의미합니까 - 데이터 계약을 만들고이를 BO에 매핑하는 것을 의미한다고 가정합니다 ...? – Gadam
을 썼다.
데이터 계약으로 비즈니스 엔티티를 사용하면 변경 사항이 변경 될 수있는 예를 보려면 WCF Message & Data Contract, DTO, domain model, and shared assemblies의 대답을 참조하십시오.
저는 Business Objects를 DataContracts로 사용하는 것은 매우 나쁜 습관이라고 생각합니다. 서비스는 자율적이어야합니다. 이 서비스는 Lax 버전 관리 기능이 있거나없는 클라이언트에서 사용할 수 있습니다.
Service Versioning을 참조하십시오.
또한, 비즈니스 개체 및 데이터 계약 사이의 변환 MSDN - Service Layer Guidelines새 구성원을 추가해도 기존 클라이언트가 손상되지 않는다고 쉽게 생각할 수 있습니다. 모든 클라이언트가 느린 버전 관리를 처리 할 수 있는지 확실하지 않은 경우 엄격한 버전 지침을 사용하고 데이터 계약을 변경 불가능한 것으로 간주하는 것이 좋습니다.
디자인 변환 객체를 참조하십시오.
전체 픽처를 제공하지 않은 경우 미안 : 비즈니스 레이어 (프로젝트), 데이터 레이어 (프로젝트) 및 프리젠 테이션 레이어 (웹 사이트)가있는 기존 애플리케이션/솔루션이 이미 있습니다. – Gadam
좋아, 그래서 당신의 WCF에 대한 다른 프로젝트 (서비스)를 만듭니다. 그런 다음 모델에 대한 비즈니스 계층 프로젝트를 참조 할 수 있습니다. 데이터 계약에 대해 별도의 프로젝트를 만들지 않으려면 새 계약 프로젝트에 추가하십시오. 모델 <-> 계약을지도하십시오. – funeralfunk
그런 질문에 대답 해 주셔서 감사합니다. 남은 의심의 여지가 있습니다. 왜 데이터 계약을 모두 으로 정의해야합니까? 내 서비스에서 BL에 대한 참조가 있으므로 대신 (BO) 객체를 직접 사용할 수 있습니까? (왜냐하면 그들은 정확히 똑같을 것이고 심지어 이름 일 것입니다). 또한 오토 매퍼에 대해 배우고 싶지 않기 때문에 몇 가지 객체에 대해 이야기하고 있습니다. 내 서비스 프로젝트 내에 새 클래스 파일을 만들어야하고 메서드를 사용하여 계약에 따라 <--> BO 속성을 매핑해야한다고 말할 수 있습니까? 그게 다야? 다시 한 번 감사드립니다 – Gadam