私は現在、私の会社が提供しているwebserviceの新しいバージョンを構築中です。現在のWebサービスには、string型の入力パラメータがあります。その文字列では、XML文書全体が渡されます。次に、その文字列をxsd(消費者に与えられた同じxsd)に対して検証します。C#.net 2.0 WebServiceの複雑な型の入力パラメータを記述する正しい方法は何ですか?
[WebMethod]
public bool Upload(string xml)
{
if (ValidateXML(xml))
{
//Do something
}
}
私はこのサービスの次のバージョンを構築しています。 XML文書を文字列として渡すことは正しい方法ではないという印象を受けました。
[WebMethod]
public bool Upload(int referenceID, string referenceName, //etc...)
{
//Do something
}
私が午前この問題は、実際には入力パラメータが大量にあるということです、そのうちのいくつかは、複雑なタイプです:私は私のサービスは、次のようになりますことを考えていました。たとえば、アップロードメソッドは、割り当てという複雑なオブジェクトを取り込む必要があります。このオブジェクトは、実際にはいくつかの整数、小数点、文字列、その他の複雑なオブジェクトで構成されています。私はこのようにwebserviceを構築する必要があります:
[WebMethod]
public bool Upload(int referenceID, string referenceName, Allocation referenceAllocation)
{
//Do something
}
またはこれとは別の方法がありますか?
注:この割り当てオブジェクトには、古いサービス用に提供されたxsd内の階層があります。
オリジナルのサービスがこの問題に対処するためにXMLを取り入れただけかもしれませんか?複雑な型をWebサービスに取り込むためのより良い方法はありますか?
注:これはC#2.0 Webサービスです。
消費者がどのコーディング言語を使用しているのか分かりませんか? Javaを使用するクライアントや.NETを使用する他のクライアントがあります – Jon
*あなたのコード*が特定のXMLを期待している場合は、xml文字列として渡されます。オブジェクトにデシリアライズして戻します。あなたのクライアントのすべてがあなたが提供したXSDに従えば、それは問題ではありません。 –
はい、クライアントにWSDLとXSDを提供し、XMLを自分で解析しないでください! LINQ to XMLは間違いなく、ここでは過剰です(.NET 2.0では使用できません)。元の質問のWebメソッドのレスポンスやリクエストクラスなどのオブジェクトを直列化するには、* [XmlRoot] *、* [XmlElement] *、* [XmlArrayItem] *などの属性を適切な場所に適用するだけで済みません。 – azheglov