2009-06-25 3 views
1

저는 자체 호스팅 TCP 기반 WCF 서비스를 가지고 있습니다. 나는 현재이 서비스를 사용하는 프로젝트를 만들고 있지만 프로젝트에 서비스 참조를 추가하는 방법은 적어도 두 가지가 있으며 두 프로젝트 모두 크게 다른 프록시를 생성합니다. 먼저 프로젝트 메뉴에서 "서비스 참조 추가"를 사용했지만 코어 XML의 일부 XML 스키마와 파일을 생성했습니다. 그런 다음 서비스 참조 및 바인딩 매개 변수를 보유하고있는 하나의 프록시와 하나의 구성 파일을 두 파일 만 생성 한 SvcUtil을 시도했는데이 방법은 훨씬 뛰어 났지만 ...WCF 서비스 참조를 만드는 올바른 방법은 무엇입니까?

두 경우 모두 VS 도구는 형식 정의 서비스와 모든 유형을 포함하는 어셈블리에 대한 참조를 제공했지만. 예를 들어, 일부 서비스 메서드는 Entity 클래스의 제네릭 컬렉션을 반환합니다. 모든 Entity 클래스는 소비 프로젝트에서 직접 참조한 어셈블리 내에서 정의됩니다. 왜 이러한 유형을 다시 재정의합니까?

일부 본문에서 엔터티 형식 및 따르는 모범 사례를 반환하는 WCF 서비스를 사용하는 데 조언을 제공 할 수 있으면 감사하게 생각합니다.

답변

2

우리는 추가 서비스 참조가 도움이되는 것보다 더 많은 방해를받는 불필요한 코드를 많이 생성한다는 것을 발견했습니다. 그러나 이것은 고려 -

http://perseus.franklins.net/dnrtvplayer/player.aspx?ShowNum=0103

+1

예 - 그러나 다시 - 그 * 만 * 지금 당신이 * BOTH * 통신의 끝, 그리고 양쪽에 .NET 및 WCF를 사용하여 제어 시나리오에서 작동합니다. 그렇다면 훌륭한 방법입니다! 그러나 기억하십시오. 이것은 "현실 세계"에서 매우 제한된 시나리오입니다. –

+0

정말로 좋은 비디오를 가져 주셔서 감사합니다. WCF 서비스를 개발하는 모든 사람이 먼저 이것을 시청해야합니다. VS 통행료는 끔찍합니다. – James

2

예, 당신의 구체적인 경우에이 중복처럼 보일 수 있습니다

우리는 그것을 설정하는 수동 방식을 통해 갔다, 여기에이 방법에 대한 소개가 : WCF도 상호 운용이 가능하도록 설계되었으며, 대부분의 시나리오에서 특히 코드를 호출하는 비. NET 클라이언트가있는 경우 계약과 인터페이스가있는 어셈블리를 사용할 수 없습니다.

그래서 모든 가능한 상황에서 작동하기 위해 모든 정보가 포함 된 완전한 프록시를 만드는 것은 없습니다.

이제 데이터 계약 등의 중복을 피하려면 자체 어셈블리로 컴파일 한 다음 svcutil을 호출 할 때/r : (어셈블리 이름) 스위치를 사용하여 해당 어셈블리를 다시 사용하도록 지시 할 수 있습니다. 코드 및 계약서를 작성해야합니다.

마크

관련 문제