2010-07-05 3 views
1

모든 클래스가 포함 된 기존 클래스 라이브러리가 내 서버와 통신합니다. 다른 응용 프로그램 도메인의 일부로 기존 서버에서 호스팅되는 WCF 서비스를 만들었습니다. 클래스를 이미 가지고 있기 때문에 개발 시간을 줄이기 위해 WCF 서비스에 노출 될 수 있다고 생각했습니다.기존 클래스 라이브러리를 WCF 서비스에 노출

내 WCF 서비스를 성공적으로 호스트했으며 내 dev pc에서 실행 중입니다. 문제는 내 웹 서비스를 추가하는 클라이언트 측에 있습니다. 그들은 내 라이브러리의 기본 클래스 만 사용할 수 있습니다.

내 웹 서비스에서 사용할 수 있도록 내 수업의 모든 수업을 내 라이브러리의 기본 수업과 별도로 만들 수 있습니까? 예 : 헬퍼 클래스, 내 기본 클래스에서 상속 된 하위 클래스 및 제네릭 컬렉션에서 사용되는 다른 클래스가 포함됩니다.

모든 클래스는 Serializable 및 DataContract 특성을 사용합니다.

3 년 전에 나의 클래스 라이브러리가 만들어지면서 웹 서비스에서 사용할 수 있도록 새로운 속성을 패치했습니다.

답변

1

운영 계약의 일부인 클래스 계층 구조의 일부가 아닌 도우미 클래스는 노출되지 않습니다. 자식 클래스에 관해서는 당신은 주어진 기본 유형에 대해 가능한 자식 클래스가 무엇인지 시리얼 라이저를 지시하는 Web.config의에서 <knownType> 섹션을 사용할 수 있습니다

<system.runtime.serialization> 
    <dataContractSerializer> 
     <declaredTypes> 
     <add type="SomeNs.MyBaseType, SomeNs"> 
      <knownType type="SomeNs.MyChildType1, SomeNs"/> 
      <knownType type="SomeNs.MyChildType2, SomeNs"/> 
     </add> 
     <add type="SomeNs.MyBaseType2, SomeNs"> 
      <knownType type="SomeNs.MyChildType3, SomeNs"/> 
     </add> 
     </declaredTypes> 
    </dataContractSerializer> 
</system.runtime.serialization> 

WCF 동작 계약의 일부 유형을 볼 것이다 ([OperationContract]으로 표시된 메소드) 클라이언트가이를 볼 수 있도록 해당 클래스를 메타 데이터 (WSDL)에 자동으로 노출합니다. 가능한 하위 클래스를 명시 적으로 지정해야합니다.

또한 blog post이 도움이 될 수 있습니다.

+0

저는 wcf 서비스를 자체 호스팅하고 있습니다. App.Config의 어떤 부분을 system.runtime.serialization에 넣어야합니까? – powerbox

+0

루트에서 직접 : ...' –

+0

나는 당신의 제안을 테스트 할 것입니다. 감사! 이것이 작동한다면 App.Config에 많은 클래스를 추가해야합니다. – powerbox

관련 문제