0

Webサービスへの入力としてさまざまなプロファイルを受け入れる必要があります。

[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以外のサービスでサービスをより簡単に使用できるように、単純なタイプのみに固執する必要がありますか?

4

1 に答える 1

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>

したがって、これは消費者向けの単なる配列です。もちろん、特定のクライアントスタックとの相互運用性をターゲットにする場合は、相互運用性を事前に検証する必要があります。

于 2012-05-07T15:32:39.750 に答える