2014-08-28 61 views
0

我正在將一個asmx Web服務升級到WCF。 asmx wsdl公開了客戶端所需的某些類。這些類未在Web方法本身內引用,但它們是在Web方法內的類中引用的。例如:WCF WSDL不公開所需的類

WebMethod1(Class1 param) 
{ 
    return Class 2; 
} 

的Class1和2類被包括在WSDL,但被內的Class1或2類引用的任何類不包含在WCF的WSDL。但是,他們在asmx WSDL中。

是否有任何方式暴露這些必需的類而不更改類本身或Web服務中的代碼?我知道你可以將[DataContract]等添加到類中,但我發現很難相信WCF在這方面不應該提供與asmx相同的功能。

感謝

回答

3

不需要DataContract不是ASMX的力量,或者需要DataContract不是WCF的弱點。這是WCF設計的很多理由,其中之一就是你應該向外界公佈最少的信息。對於大型Web服務項目,這是一個祝福,而不是限制。客戶不希望看到服務類的詳細信息。

服務數據類,以便成爲在客戶端代理類只有當這些條件都滿足通過WSDL出版:

  1. 的類是由DataContractAttribute裝飾,裝飾唯一屬性/數據字段通過DataMemberAttribute將被髮布。複合結構中的嵌套類也需要這樣的裝飾。
  2. 該類在服務合同的至少一個運營合同中被引用。