1

私はWebサービスに不慣れで、別の会社から外部サービスを呼び出してクライアントデータ(名前、住所、電話など)を取得するC#WCFサービスを開発しています。この部分は今のところ正常に機能しています.

外部サービスは標準の XML スキーマに基づいており、他の企業も同じ名前のメソッドを使用し、同じタイプの xml ファイルを返す、同じ XML スキーマから生成された同じサービスを間もなく提供するでしょう。

私の最初の質問は、この最初の実装を完了した後、他の外部企業のサービスを「動的に」追加して、URL/ポート/その他の情報を取得する方法があるか、またはそれぞれを手動でサービスとして挿入する必要があるかということです。新しいものを追加する必要があるたびに内部サービス プロジェクトで参照してから、コンパイルして再デプロイする必要がありますか?

私の 2 番目の質問は、データ コントラクト / メンバーに関連しています。同じ XML ファイルを返す場合でも、データ コントラクト / メンバーが異なるというのが私の理解ですが、それは本当ですか? したがって、新しい外部企業ごとにデータ契約から必要な情報を読み取るために、特定のコードを作成する必要がありますか?? これが本当なら、生の xml を読み取る汎用コードを作成することを考えていましたが、これが最良の選択ですか?

4

2 に答える 2

1

C# はコンパイル済み言語ですが、MEF を介してプラグイン アーキテクチャをサポートしています。これを使用して、ソースごとに小さなプラグイン .dll を追加できます。

そうは言っても、必要なのは各ソースの接続の詳細を含み、それらに動的に接続する構成リストだけである可能性は十分にあります。これは、まったく同じスキーマを使用している場合にのみ機能するため、提供するオブジェクトはすべてのソースに対して同じものをシリアル化します。もちろん、その構成を使用してコードを介してプロキシを動的にインスタンス化する必要があります。

2番目の質問に何か追加する必要があります。コントラクトを定義している限り、実際のオブジェクトが異なっていても問題ありません。最後に気にするのは、それらが提供する xml であり、表現を使用して接続できることだけです。実際、コントラクトを .wsdl ドキュメントとして生成できます。各サービス実装者は、そこからドメイン オブジェクトを生成できます。一方、あなたがコントラクトを「所有」していない場合、一部の情報源はそれを少し異なる方法で行うことを決定する可能性があり、頭痛の種になります. うまくいけば、それはあなたのシナリオではありません。

頑張ってください!:)

于 2012-07-27T19:34:11.803 に答える
0

私の最初の質問は、この最初の実装を完了した後、URL /ポートなどの情報を使用して、他の外部企業のサービスを「動的に」追加する方法があるということです。

残念ながら、はい、サービスを追加し、コンパイルして、毎回デプロイする必要があります

私の2番目の質問はデータコントラクト/メンバーに関連しています。同じXMLファイルを返しても、データコントラクト/メンバーは異なるというのが私の理解です。本当ですか?

自動生成を使用する場合、すべてのサービスで異なるコントラクトが作成されます。独自のクラスを作成し、リフレクションメソッドと拡張メソッドを使用して外部クラスを変換することを検討します

于 2012-07-27T19:39:13.517 に答える