2009-07-24 3 views
0

클래스 (ABC)와 해당 클래스의 컬렉션 (ABCCollection : IList, T : ABC)을 만든 별개의 어셈블리 (WebService의 참조)가 있습니다. 이제 프록시 파일 (output.config 및 Service1.cs)을 빌드하면이 두 클래스에 대한 방어가 노출되지 않습니다. 대신 ABCCollection은 Servic1.cs에 노출되어 있으며 ABCCollection4IP3과 같습니다.Exposing structure - WCF 웹 서비스

그들은 같은 유형으로 의미되지 않습니다

+0

4IP3이란 무엇입니까? 이 컬렉션의 그쪽으로 neme 추가? 나는 결코 전에 이것을하지 않았다. –

+0

예. svcutil.exe에서 .cs 파일을 생성 할 때 내 사용자 정의 모음을 다음과 같이 참조합니다. –

+0

자세한 내용은 내 웹 서비스에서 사용자 정의 모음을 노출하고 싶습니다. 어떻게 할 수 있습니까 ... 사용자 정의 컬렉션 클래스가 내 WebService (WCF)에서 참조하는 별도의 어셈블리에 있습니다. –

답변

0

.. 나에게이 문제의 가능한 원인을 알려 주시기 바랍니다. 이는 의도적으로 설계된 동작입니다. 서비스가 .NET에 있고 클라이언트가 Java에있는 경우 어떻게 작동하는지 고려하십시오. 그들은 분명히 두 가지 유형이 될 것입니다.

조립 SomeProject.ServiceContract

이 어셈블리는 서비스 계약 (단지 인터페이스)를 포함

0

WCF 서비스를 설계하는 가장 좋은 방법은 별도의 어셈블리로 프로젝트를 분할하는 것입니다.

예 :

[ServiceContract (...)] 
public interface ICan { 

    [ServiceOperation (...)] 
    void EatCandies (MyListOfCandies candies); 

} 

조립 SomeProject.DataObjects

이 어셈블리 서비스 계약에 의해 사용되는 모든 데이터 개체가 포함되어 있습니다.

예 : 웹 서비스를 소비하는 프로젝트에서는

[DataObject] 
public class MyListOfCandies : List<Candy> { 
    ... 
} 

어셈블리 "SomeProject.DataObjects"를 참조하고 웹 서비스를 추가 할 수 있습니다. Visual Studio에서 더 이상 스텁 개체를 생성하지 않지만 구현을 사용하게됩니다.

ServiceContract 어셈블리에서도 동일한 작업을 수행 할 수 있습니다. 이렇게하면 여전히 웹 서비스를 사용할 수 있지만 인터페이스를 변경할 때 컴파일 오류가 발생합니다.