16

ZeroC の ICE (www.zeroc.com) は興味深いようで、私はそれを見て、WCF を使用する既存のソフトウェアと比較することに興味があります。特に、WCF アプリはサーバー コールバックを (HTTP 経由で) 使用します。

比べたことある人いますか?どうだった?相互運用性は現在、私たちにとってあまり重要ではないため、特にパフォーマンス面に関心があります。ありがとう!

4

5 に答える 5

13

私は数年前に ICE について非常に簡潔なレビューを行いました。直接比較したことはありませんが、WCF について十分な知識があれば、私の考えは何らかの関連性があるかもしれません。

まず、ICE は特定のリモート通信メカニズムであり、WCF は高レベルのリモート通信フレームワークであるため、WCF と ICE を WCF として比較することは完全に公平ではありません。

WCF は多くの場合、SOAP Web サービスを実装するものと考えられており、これが現在までの主な用途ですが、あらゆる種類のエンコーディングとトランスポート チャネルを使用してリモート サービスを実装するためにも使用できます。つまり、理論的にはパフォーマンスの高い通信に使用できることを意味します。アプリケーション間。

それに比べて、ICE はクロスプラットフォームのリモート通信メカニズムであり、バイナリ エンコーディングを使用してアプリケーション間のパフォーマンスの高い通信を実現します。これは、CORBA の単純化された進化のようなものであり、CORBA、DCOM、.NET Remoting、および JNI に直接匹敵します。

ただし、ICE と WCF の間に直接的な対応はありませんが、リモートで通信する .NET アプリが必要な場合は、どちらも候補です。考慮すべき決定事項には、次のようなものがあります。

  • リソーシング。ICE の経験よりも WCF の経験を持つ開発者を見つける方が簡単です。

  • パフォーマンス。パフォーマンスが必要な場合は、ICE が高速に実行されますが、パフォーマンスの高い構成で WCF を使用することもできます。あるいは、.NET Remoting は非常に優れたパフォーマンスを提供することができ、MS が後援するベンチマークが WCF を 10% 上回っていると私は見てきました。

  • クロスプラットフォーム。Windows 以外のアプリケーションと通信する必要がある場合は、使用できる WCF オプションが制限されます。さらに、すべての SOAP スタックが異なる方法で標準を実装しているように見えるため、真に汎用的な Web サービスを作成するのは面倒な場合があります (WS-I は役に立ちますが)。

初日からすべてのパフォーマンスを必要としない場合は、個人的には WCF から始めて、パフォーマンスが重要になった場合は ICE を検討します。それでも、ICE に移行するよりもサービス ボックスをスケールアウトする方が安価である可能性があります。異国的なクロスプラットフォームのニーズがない場合は、バイナリ エンコーディングなどのために WCF を再構成することをいつでも検討できます。

于 2008-09-22T14:45:24.920 に答える
11

ZeroC の Michi Henning は最近、まさにこのトピックに関するホワイト ペーパー「Choosing Middleware: Why Performance and Scalability do (and do not) Matter」を公開しました。 これは、Ice、WCF (バイナリと SOAP)、RMI をさまざまなパフォーマンス メトリック、プラットフォーム、言語などと比較します。詳細については、Michi のブログを参照してください。また、ホワイト ペーパーも非常に読みやすく、あらゆるベンチマークの標準的な注意事項がすべて記載されています。

免責事項: 私は Ice と RMI を広範囲に使用しましたが、WCF は使用したことがありません。

于 2009-03-03T08:39:45.597 に答える
2

Apache Thriftは、ICE および WCF のもう 1 つの候補です。これは Facebook によって開発され、オープンソース化されました。Apache Thriftは、エンコーディング側で非常に効率的であるだけでなく、すべてのクライアントを壊すことなく構造体にフィールドを追加することもサポートしているため、いくつかの点で優れています (私たちのプロジェクトで非常に役立つことがわかったものです)。

Google Protocol Buffersは、ホームページで .NET サポートについて言及されていないため、実際には競合していないように見えます。ただし、一部のコミュニティ アドオンは C# をサポートしています。さらに、既存のサービスを使用している場合、 ICEは Google Protocol Buffers のエミュレーションを提供します。

于 2011-02-28T21:54:36.260 に答える
0

ICE を使用して、C++、Java、および C# の両方で記述されたモジュールを統合しています。良い点は、私たちのサーバーがリモート マシン上のコンポーネントにもアクセスできることです。そのため、より高いパフォーマンスが必要な場合は、処理を別のマシンに移すことができます。

私は WCF と ICE の両方を使用しましたが、実装側では ICE の方がクリーンだと思います。ICE には、非常に詳細で読みやすいドキュメントもあります。

ICE は、ロード バランシング、自動化されたリモート クライアント更新など、WCF では実行できないいくつかのことをサポートしています。

于 2011-02-28T21:49:17.887 に答える