WCF 계약 인터페이스를 세 번째 DLL로 이동하고 수동으로 프록시를 생성 할 때 클라이언트에서 해당 인터페이스를 소비하기를 원합니다.WCF 계약을 별도의 DLL로 이동
클라이언트에서 프록시를 생성하기 위해 DLL을 소비 할 때 DLL의 해당 인터페이스에 [ServiceContract]
속성이 있어야합니까?
계약과 클라이언트와 서버간에 공유 할 계약서 만있는 DLL에 가장 적합한 이름은 무엇입니까?
WCF 계약 인터페이스를 세 번째 DLL로 이동하고 수동으로 프록시를 생성 할 때 클라이언트에서 해당 인터페이스를 소비하기를 원합니다.WCF 계약을 별도의 DLL로 이동
클라이언트에서 프록시를 생성하기 위해 DLL을 소비 할 때 DLL의 해당 인터페이스에 [ServiceContract]
속성이 있어야합니까?
계약과 클라이언트와 서버간에 공유 할 계약서 만있는 DLL에 가장 적합한 이름은 무엇입니까?
WCF 데이터 및 서비스 계약을 별도의 어셈블리에 배치하는 것은 매우 일반적인 방법입니다. 이전 프로젝트에서는 Company.OurProject.Contracts.dll
과 같은 이름을 사용했습니다. 기존 클래스를 재사용하여 프록시를 생성하려면 서비스 계약 ([ServiceContractAttribute]
으로 표시된 인터페이스) 및 해당 데이터 계약을 해당 어셈블리에 배치해야한다고 생각합니다. 나는 실제로 서비스를 구현하는 것을 피할 것이다. WCF Service Reference generates its own contract interface, won't reuse mine
이 일반적인 아마도 권장 방법 :
여기에 SO "참조 된 어셈블리의 재사용 유형"를 선택하면 재사용 할 수있는 일에 더 많은 통찰력에 또 다른 좋은 대답이다.
예 계약 dll에 살고있는 서비스 인터페이스에 서비스 계약을해야합니다.
네임 스페이스가 dll의 이름과 일치 할 필요는 없습니다. 귀하의 현재 어셈블리가 CompanyName.Technology.Service
과 같은 네임 스페이스가있는 CompanyName.Technology.Service.dll
과 같다고 가정하면 계약을 다른 어셈블리로 추출해야하지만 네임 스페이스는 동일하게 유지하십시오 (여전히 의미가 있으면). 어셈블리 이름은 CompanyName.Technology.Service.Contracts
입니다. 당신이 갖고 싶지 않은 것은 "계약서"라는 이름의 네임 스페이스입니다.
* .ServiceContracts.dll은 시스템에 여러 계약 어셈블리가 있기 때문에 사용합니다. 예를 들어 DataContracts.dll은 데이터 저장소에 액세스하는 데 사용됩니다.
또한 바이너리를 공유하는 경우 생성 된 프록시는 피할 수 있습니다. 나는 WCF로 작업하는 훨씬 더 깔끔한 방법이라고 생각한다. 프록시를 감싸는 생성 된 코드 대신 프록시를 직접 사용할 수 있습니다. –
"손으로 프록시 생성"이란 무엇을 의미합니까? 기존 어셈블리의 클래스를 다시 사용하여 프록시를 생성하려고합니다. 그럴까요? –
@Andriy Buday 예 –