統合エンドポイントとして WCF と WSDL に代わる実行可能な代替手段はありますか?
-
21-09-2019 - |
質問
私の雇用主は、特定の市場のソフトウェア ベンダーです。当社の顧客は、Web サービスを使用して当社のシステムを他のシステムと統合します。当社では Microsoft テクノロジーを使用しており、Web サービスは ASP.NET および WCF で実装されています。
現在の一連のサービスを見直し、将来の統合に向けた社内標準を策定する時期が来ています。私は「Enterprise Integration Patterns」を読んでおり、nServiceBus と Mass Transit についても少し調べています。これらは、コントラクトのバージョン管理や単体テストなどの問題を簡素化する可能性がありますが、サービスを外部クライアントに公開する場合ではなく、内部サービス バスを提供する場合に最も役立つようです。
当社の顧客はさまざまなプラットフォームを使用しており、当社のサービスが標準に準拠していることを求めています。これは人によって意味が異なるかもしれませんが、WSDL で記述された Web サービスにアクセスしたいと考えていると考えて間違いありません。
このシナリオでは、WCF が最適でしょうか?
解決
WCFは、これまでMicrosoftプラットフォーム上で最も標準に準拠したスタックです。いいことは、それが「箱から出して」異なるクライアントのための非常に柔軟であるということです、そしてあなたの悲しみを引き起こすものがある場合、それらのほとんどは、それほど苦労せずにカスタム行動を介して変更することができます。
他のヒント
私が通常お勧めする代替案は、統合よりも AMQP メッセージブローカー間で。つまり、ポーリング パラダイムの代わりにプッシュ パラダイムを使用できるということです (これは、比較すると非常に強力でスケーラブルです)。
RabbitMQ などの独自のブローカーをローカルにセットアップします。次に、統合パートナーにセットアップしてもらいます。(簡単: ダウンロードしてください).
パートナーが同じデータセンターから統合している場合は、ほとんどないと考えておいた方がよいでしょう。 ネットワークの分割 - つまり、できる ブローカーを共有する. 。一方、別のネットワーク上にある場合は、ブローカーを設定できます。 で フェデレーションモード. 。(走る rabbitmq-plugins enable rabbitmq_federation
そして ポイント 他のブローカーに)
これで、たとえば次のように使用できます。大量輸送:
ServiceBusFactory.New(sbc =>
{
sbc.UseRabbitMqRouting();
sbc.ReceiveFrom("rabbitmq://rabbitmq.mydomain.local/myvhost/myapplication");
// sbc.Subscribe( s => s ... );
});
, 、統合を行わない場合と同様です。
見てみると http://rabbitmq.mydomain.local:55672/ これで、RabbitMQ の管理インターフェイスが表示されます。MassTransit はメッセージ タイプごとに交換を作成します (そのようなメッセージをその交換に送信すると、すべての加入者にファンアウトされます)。これに認証ルールを設定できます。
認可ルールはユーザーごとに正規表現の形式にすることも、LDAP に統合することもできます。これについてはドキュメントを参照してください。
WAN 経由で IPSec トンネルがない場合にも SSL が必要になります。そのドキュメントは次のとおりです。 http://www.rabbitmq.com/ssl.html そしてあなたは有効にします それはこのように.
それでおしまい!楽しむ!
スクリプト後の文:副作用としてすべてのインフラストラクチャを管理するのに役立つ冒険をしたい場合は、以下をご覧ください。 傀儡. 。Puppet はサーバーのプロビジョナーおよび構成マネージャーです。この場合、puppet を使用して SSL を設定することに興味があるでしょう。まず、ドメインのワイルドカード サブドメイン証明書を注文し、その証明書を使用して他の証明書に署名します。それを委任することができます-RabbitMQガイドを参照してください。 - 新しい権限を作成する代わりに、証明書署名のリクエストを生成し、RMQにSSLにこれを使用させます - インターネットに有効になります。