1

現在、SOAP またはより単純な HTTP REST のようなアプローチを使用して Web API を作成しています。同時に、サーバーとクライアントを多かれ少なかれ独立して進化させる方法が複数あります。これは大きな利点だと思います。

主な欠点の 1 つは、HTTP の使用に伴うオーバーヘッドがあることです。アプリケーションがデータベースに直接アクセスする代わりに、サービス API を使用してデータを公開することを増やす予定です。HTTP を使用するとオーバーヘッドが大きくなり、レイテンシが増加することが懸念されます。もちろん、キャッシングを利用することもできますが、それによって複雑さも増します。

提案の 1 つは、はるかにパフォーマンスが高いはずの WCF NetTcp バインディングを使用することです。このテクノロジーを選択すると、サーバーとクライアントを独立して進化させるという REST の利点が失われるのではないかと心配しています。密結合を犠牲にしてパフォーマンスを向上させると思います。

私の質問は次のとおりです。WCP NetTcp バインディングを使用して、すべてのクライアントを更新することなく API を進化させることは可能ですか? 言い換えれば、このバインディングを使用する場合、クライアントとサーバーの間にどの程度の結合が期待できるでしょうか?

4

2 に答える 2

1

HTTP を使用するとオーバーヘッドが大きくなり、レイテンシが増加するのではないかと心配しています。

誰がそれを言いますか?TCP がどのようにパフォーマンスを向上させるかわかりませんので、ベンチマークを表示するよう依頼してください。確かにバイナリ プロトコルを使用していますが、実際の転送ではなく、サーバーのビジネス ロジックがボトルネックになっている可能性があります。

必要に応じて後で拡張するのに役立つ、すぐに使用できるインフラストラクチャがすでにたくさんあるため、HTTP ははるかに優れています (負荷分散、キャッシュ プロキシなど)。

于 2013-03-12T11:53:00.023 に答える
0

使用したいバインディングは、サービスの消費者に依存すると思います。特定のバインドで REST HTTP クライアントまたは SOAP を使用しているクライアントが既にある場合、Net TCP に切り替えるには、既にサービスを使用しているすべてのクライアントに対してサービスを更新する必要があります。HTTP にはすでに多くのインフラストラクチャが利用可能であるため、バインディングを切り替えることにはあまり価値がないと思います。

于 2013-05-31T20:07:24.133 に答える