確立された WCF SOAP サービスがあります。そのインターフェースは WSDL で定義され、そこからサーバー用の C# クラスが生成されます (顧客は、同じ WSDL からさまざまな言語でクライアント側バインディングを生成します)。WSDL には、少し変更できる現在のバージョンと、非推奨期間や協議などなしに変更または削除できない古いバージョンがあります。SOAP リクエストは複雑になる傾向があり、同じリクエスト内に複数の XML 名前空間があります。 .
WCF SOAP サービスには多くの "スマート" 機能があり、作成する必要がある新しい Web アプリケーションに必要なフェッチ機能とレポート機能を正確に提供します。そのクライアント側には AngularJS を使用したいと考えています。しかし、これらの複雑な SOAP リクエストは、JavaScript の世界では簡単には作成できません。REST サービスさえあれば、angular Resource サービスを使用できます。そうでない場合、JSON を話すサーバーは、SOAP のような RPC スタイルではありますが、かなり僅差で実行されます。
サーバーとクライアントの間のインピーダンスの不一致を軽減する方法について、さまざまなアイデアがありました。しかし、速くて簡単に聞こえるものは何もありません。
私は考えました: -
- 新しい REST サービスを作成します。まさにクライアント側が望んでいるものですが、新しい開発の深刻な部分です。
- WebHttpBinding は何かを提供しているように見えます。しかし、カスタム属性の C# マークアップ (C# が WSDL から生成されたときに達成する方法) が必要であり、複雑な型をサポートしない可能性があるようです。
- SOAP サービスの呼び出しを抽象化するために、クライアント側の JS の負荷を取得または書き込みます。ただし、これが WSDL から自動生成されない限り、クライアント側で膨大な量のコードを記述する必要があります。
- サーバー用の IDispatchMessageFormatter を作成して、私が考案した JSON 形式のメッセージを受け入れます。特に IDispatchMessageFormatter を実装および統合する人々の良い例を見つけるのは難しいように思われるため、難しいように思えます。
- JSON と XML を交換する MessageEncoder を記述します。しかし、これは実際にはエンコード操作ではありません。これを書き込もうとしたときに非常に明確になりました!
提案を探しています。