2012-05-07 44 views
0

我需要接受各種配置文件作爲Web服務的輸入。Web服務互操作性 - 數據合同中的用戶iList是否錯誤?

[DataContract] 
public class ProfileRequest 
{ 
    [DataMember] 
    public virtual string address { get; set; } 

    [DataMember] 
    public virtual string type { get; set; } 

    [DataMember] 
    public virtual string speed { get; set; } 
} 

我想這樣的使用配置文件的一個IList的:

[OperationContract] 
IList<ProfileRequest> profiles 

它發生,我......也許IList中並不適用於所有語言的存在,所以會被認爲是不好的做法,公開這樣的數據合同?我應該堅持只使用簡單的類型,以便非WCF服務更容易使用該服務?

回答

1

這很好。例如下面的C#合同:

[DataMember] 
    public List<CompositeType> StringValue 
    { 
     get { return stringValue; } 
     set { stringValue = value; } 
    } 

會出現像在WSDL此XML模式:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/"> 
<xs:complexType name="CompositeType"> 
<xs:sequence> 
<xs:element minOccurs="0" name="BoolValue" type="xs:boolean"/> 
<xs:element minOccurs="0" name="StringValue" nillable="true" type="tns:ArrayOfCompositeType"/> 
</xs:sequence> 
</xs:complexType> 
<xs:element name="CompositeType" nillable="true" type="tns:CompositeType"/> 
<xs:complexType name="ArrayOfCompositeType"> 
<xs:sequence> 
<xs:element minOccurs="0" maxOccurs="unbounded" name="CompositeType" nillable="true" type="tns:CompositeType"/> 
</xs:sequence> 
</xs:complexType> 
<xs:element name="ArrayOfCompositeType" nillable="true" type="tns:ArrayOfCompositeType"/> 
</xs:schema> 

所以這只是對消費者的數組。當然,如果您的目標是與特定客戶端堆棧進行互操作,您應該主動驗證互操作性。

相關問題