2016-08-30 10 views
1

私の最初のWCFプロジェクトでは、混乱してしまい、説明が必要です。 WCFを使用して、SOAPプロトコル内のXML文字列を受け入れるWebサービスを構築したいとします。私のメソッドでXML文字列を取るために使用するデータ型は何ですか?

<ITEM_SEND xml:lang="en-US"> 
    <T_ID>1368</T_ID> 
    <PART>8058</PART> 
</ITEM_SEND> 

だから、私は私が私のインターフェイスのために次のことを行う必要があると考えています:

[ServiceContract] 
public interface IInvService 
{ 
    [OperationContract] 
    XmlDocument GetInventory(XmlDocument query); 

} 

その後、私は、私は次のことを行うだろうと信じて、私の実際の方法のために:

public XmlDocument GetInventory(XmlDocument query) 
{ 
    XmlDocument xmlDoc = new XmlDocument();  
    //... do stuff and return xml 
    return xmlDoc; 
} 

このためにXmlDocument型を使用して正しい軌道にいるのでしょうか、XML文字列に使用する必要がある別のデータ型がありますか?

+2

は、WCFは、すでにあなたのためにこれを行うべきではないでしょうか。 https://msdn.microsoft.com/en-us/library/hh273094(v=vs.100).aspxまたはhttps://msdn.microsoft.com/en-us/library/bb412196(v=vs.110) ).aspx –

+2

次のリンクを参照してください: [スタックオーバーフローでの類似の質問](http://stackoverflow.com/questions/9098328/how-can-i-return-xml-from-a-wcf-web-サービス)ハッピーコーディング! – DevCod

+0

まだテストしましたか?結果は何でしたか? – dbc

答えて

0

XmlDocumentを送信して返すには少し冗長です。 WCFはデフォルトでSOAPを使用し、basicHttpBinding、wsHttpBinding、netTcpBindingなどはすべてSOAPで動作します。私は、フレームワークがあなたのためにシリアライズを行うようにします。

代わりにDataContractを作成するか、厳密に型指定されたオブジェクトを使用します。

例として、あなたのDataContractは次のようになります。

[DataContract] 
public class ItemSend 
{ 
    private int _id; 
    private int _part; 

    [DataMember] 
    public int Id 
    { 
     get { return _id; } 
     set { _id = value; } 
    } 

    [DataMember] 
    public int Part 
    { 
     get { return _part; } 
     set { _part = value; } 
    } 
} 

あなたのServiceContractには、以下のようになります。

[ServiceContract] 
public interface IInvService 
{ 
    [OperationContract] 
    ItemSend GetInventory(XmlDocument query); 
} 

私は「クエリ」XMLが何であるかわからないんだけどそれはデータ契約でもあります。ここで

はDataContractsのチュートリアルです:http://wcftutorial.net/data-contract.aspx

関連する問題