0

3.5 で WCF アプリケーションを開発する必要があります。入力は XML 形式で送信され、応答も XML 形式で送信されます。ASP.NET アプリケーションは、WCF を使用し、XML 形式でデータを送受信します。

私の理解では、ASP.NET アプリケーションから WCF を使用する場合、サービスへの参照を追加し、サービスのオブジェクトを作成し、必要なすべてのデータ (WCF のデータ メンバー) を入力オブジェクト (オブジェクト) にパックします。データ コントラクトの) を作成し、必要な関数を呼び出します。

たまたま ASP.NET アプリケーションが別の団体によって開発されており、彼らは XML 形式でデータを送受信することに必死になっています。ここからわかることは、WCF は XML 文字列 (単一のデータ メンバー文字列型) を入力として受け取り、XML 文字列 (これも単一のデータ メンバー文字列型) を出力として送信するということです。以前に、jQuery ajax 呼び出しによって消費されたときに要求と応答が XML/JSON 形式で送信される WCF アプリケーションを作成しました。そのような場合、XML タグは、定義されたさまざまなデータ メンバーに自動的にマップされました。

この場合、どのようなアプローチをとればよいでしょうか?入力として文字列 (基本的には XML 文字列) を使用するだけでよいですか、それとも WCF/.NET 3.5 が要求と応答のデータ メンバーを使用して XML タグを自動的にマップし、XML 文字列を個別に解析する必要がない方法はありますか?

4

2 に答える 2

1

要するに、いいえ。

DataContractSerializerただし、呼び出し元が必要とする XML 文字列との間で実際のオブジェクトを逆シリアル化/シリアル化するために、独自のインスタンスを「シェル」することができます。その後、呼び出し元が使用したいものを反映するデータ コントラクト型を最後に自由に記述できます。

ただし、サービスの WSDL にそれを取得できると期待している場合は、間違ったツリーを作成していることになります。これらのタイプのスキーマを個別に公開する必要があります ( を使用しXsdDataContractExporterてそれを行うことができます)。 .

別の注意点として、XML 文字列を単純に処理する WCF サービスを開発するように彼らが望んでいることは、非常に気がかりなことですとにかく WCF がメッセージ形式として XML を使用する場合、この XML はすべてネイキッド (エンコードまたは CDATA) テキストとして送信する必要があるため、XML のメッセージ レベルの検証は行われません。提供された XML 文字列が gobbledegook であるかどうかに関係なく、コードは常に要求を受け取ります。それは信じられないほどハックです。

于 2012-11-14T10:50:32.430 に答える
0

通常の構成では、WCF はデータを XML として送信するため、これについて何もする必要はありません。私が理解しているように、その当事者はstringXML のリテラルを持っており、それをあなたに直接渡したいと考えており、あなたから直接 XML を受け取りたいと考えています。XML でラップされた XML データを送信するのはかなり厄介です。このように、サービス コードは、オブジェクト グラフを直接操作する代わりに、その XML を解析する必要があります。XML を直接操作したいのであれば、それは彼らの問題であるというよりも、私は彼らに指をさして伝えたいと思います。彼らはこれをあなたの問題にしようとしていますが、これは公平ではありません。適切な開発プラクティスに固執するだけです。

于 2012-11-14T10:58:40.387 に答える