일반적인 설정이 있습니다. 이 솔루션에는 비즈니스 객체를위한 일반적인 .NET 클래스 라이브러리, WCF 프로젝트, Silverlight 프로젝트 및 지원 웹 응용 프로그램 프로젝트 및 Silverlight 클래스 라이브러리가 포함되어 있습니다. 내 비즈니스 클래스 라이브러리의 클래스는 모두 "[serializable]"속성으로 표시됩니다. WCF 서비스에는 비즈니스 클래스 라이브러리에있는 개체 중 하나의 목록을 반환하는 메서드가 있습니다. Silverlight 클래스 라이브러리 프로젝트에서이 서비스에 대한 참조를 추가하면 프록시는 오류없이 생성되지만이 프록시에는 서비스 또는 서비스 인터페이스 자체의 정의가 포함되어 있지 않습니다. 여기에는 서비스에서 반환 할 비즈니스 개체 안에 포함 된 전체 개체 모델의 정의가 포함되어 있지만 서비스 클라이언트에 대한 실제 참조가 없으면 해당 서비스를 호출 할 수 없습니다. 이 설정의 설계 또는 구현에 문제가 있습니까?Silverlight 클래스 lib에있는 참조 된 라이브러리의 비즈니스 개체를 사용하는 WCF 서비스 참조는 서비스 클라이언트없이 프록시를 만듭니다.
답변
[OperationContract]
및 [ServiceContract]
속성을 WCF 인터페이스에 추가 했습니까?
비즈니스 개체가 [DataContract]
으로 표시되어 있는지 확인하십시오. 그 안에 포함 된 모든 객체도 해당 속성으로 표시되어야합니다.
편집 : 제 3 자 코드를 수정하고 싶지 않으므로 여기에 정의 된 유형을 포함하여 서비스에 대한 수동 프록시를 만들 수 있습니다.
다음은 모두 WCF the Manual Way을 사용하는 기사입니다.
앞에서 언급했듯이. 비즈니스 개체는 별도의 DLL에 있습니다. 이것은 내가 레거시 코드 인 이유에 대해 내가 변경하는 것에 대해 불안해하는 이유입니다. 그러나 비즈니스 객체는 모두 해당 정의에 [serializable] 속성을 포함합니다. 다른 방법으로, 참조 된 라이브러리 코드를 변경하지 않고 서비스 끝에서 클라이언트 끝으로이 비즈니스 개체를 전송할 수 있습니까? –
"서비스 참조 추가"를 사용하는 대신 명령 줄에서 slsvcutil.exe tool을 사용하여 프록시를 생성 해 보았습니까? 적어도 문제를 추적하는 데 도움이되는 프록시를 생성하는 동안 경고를 울릴 수 있으며 프록시에 대한 다양한 옵션을보다 잘 제어 할 수 있습니다.
Dan을 올바른 방향으로 가리켜 주셔서 감사합니다. slsvcutil을 사용하여 생성 된 프록시의 크기는 450KB이며 "서비스 참조 추가"방법을 사용하면 약 50KB입니다. slsvcutil에 의해 생성 된 프록시는 모든면에서 완벽합니다. 그러나 이제 컴파일 시간 오류가 발생합니다. 일부 비즈니스 오브젝트에는 대리자가 들어 있습니다. 생성 된 코드는 이러한 속성을 대리자로 사용하는 대신 System.MulticastDelegate에서 파생되는 부분 클래스로 사용합니다. System.Delegate 또는 System.MulticastDelegate에서 파생 될 수 없기 때문에 컴파일 오류가 발생합니다. –
제안 해 주셔서 감사합니다. 대리자는 특히 매개 변수 또는 서비스 계약의 메서드 반환 형식입니까? 대리자를 WCF에서 직렬화 할 수 없기 때문에 오류가 발생한다고 생각합니다. 필수적이지 않은 경우 [DataMember]로 표시하지 않고 계약에서 제외 할 수 있습니다. 이것을 참조하십시오 게시물 http://stackoverflow.com/questions/957474/system-componentmodel-propertychangedeventhandler-cannot-derive-from-special-cl –
- 1. 클래스 라이브러리의 서비스 참조 포함
- 2. Silverlight의 WCF 서비스 참조
- 3. Silverlight 서비스 참조 배포
- 4. Friend WCF 웹 서비스 참조
- 5. wcf 서비스 참조 구성
- 6. WCF 서비스 참조 업데이트
- 7. WCF 서비스 참조가 두 번째 클래스를 만듭니다.
- 8. 큰 개체를 처리하는 WCF 서비스
- 9. WCF 서비스 응용 프로그램과 WCF 서비스 라이브러리의 차이점은 무엇입니까?
- 10. Net.TCP를 사용하는 WCF 서비스에 서비스 참조 추가
- 11. WCF 서비스 대 Silverlight 준비 WCF
- 12. CS0426 WCF 서비스 참조 추가시
- 13. 나는 서비스 참조하여 Silverlight 응용 프로그램을 서비스 참조
- 14. 내 서비스 참조 WCF 변경하는 방법?
- 15. Silverlight WCF 서비스 호출 예외
- 16. .NET RIA 서비스/WCF 서비스
- 17. HttpContext를 사용하는 WCF 서비스
- 18. Qt를 사용하는 WCF 서비스?
- 19. System.Type에 동적 프록시를 만듭니다.
- 20. 프록시를 사용하여 WCF 서비스 호스팅, 방화벽
- 21. InstanceContext 개체를 사용하여 WCF 서비스 개체 만들기
- 22. 서비스 참조없이 WCF 서비스 호출
- 23. (Silverlight) LinkedList를 반환하는 WCF 서비스
- 24. Silverlight 3 (WCF 서비스 포함) -
- 25. Winforms 앱 (C#)에서 사용되는 클래스 라이브러리의 동적 웹 서비스 참조
- 26. WCF 서비스 간의 비즈니스 개체 동기화
- 27. 프록시 서비스 및 비즈니스 서비스
- 28. WCF 서비스 용 타사 라이브러리의 단일 인스턴스
- 29. 동일한 프로젝트 내에서 WCF 서비스에 서비스 참조 추가
- 30. WCF 서비스 참조 추가 XmlSerializer로 돌아갑니다
예. 참조 된 어셈블리에 상주하는 비즈니스 객체를 반환하는이 메소드를 노출했을 때만이 문제점을 알 수 있습니다. 내가 서비스 인터페이스와 서비스 구현에서 그 작업에 대해 언급하는 순간, 프록시는 올바르게 생성됩니다. –