3

.netにはWCFがあり、コードネームがIndigo(?)のときにCOMの代わりとして宣伝されていたと思いますが、実際には.NETアプリでの使用に適しており、C ++ / DCOMアプリケーションと同じ機能を提供しますか?

クライアントサーバーシステム上のDCOMアプリは苦痛になる可能性がありますが、とにかく他の問題があるWebサービスのような他のオプションと比較して非常に効率的だと思います。

では、WCFは(D)COMの真の後継者ですか、それとも異なる目的を持っていますか?

編集:私は特に分散アプリとリモートコントロールについて話しています-たとえば、サーバーはワークステーションでダイアログを起動させることができ、ワークステーションはサーバー上のメソッドを呼び出して応答を送信することができます、など。タイトルに「D」を追加しましたによると。

4

4 に答える 4

8

WCFは、COMの代わりになることを意図したものではありません。.NET Framework自体は、COMに代わるものです。

WCFは、使用されるプロトコル/トランスポート/シリアル化メカニズムとは関係なく、SOAPWebサービスやリモートアプリケーションなどのクライアント/サーバーアプリケーションを作成するための共通のインターフェイスを提供することを目的としています。

于 2009-11-02T10:14:43.163 に答える
2

適切な動作/シリアル化/プロトコルを選択することで、WCFを非常に効率的に使用できます。実際にドットネットでCOM/DCOMを使用すると、今日は効率が低下します。ドットネットからcomへのパスのb/cは遅くなります。

于 2009-11-02T10:16:52.473 に答える
1

DCOMの後継者を指名する公式のガイダンスは知りませんが、.NETにはDCOMの使用法を置き換えることができる2つのフレームワークがあります。それらはWCFと.NETRemotingです。

WCFは、DCOMなどが提供するすべてのトランスポート機能の代わりに使用できます。.NET3.0以降のバージョンを使用できない状況にある場合。代わりに、.NETリモーティングのみを使用できます。.NET内の両方のフレームワークを使用すると、呼び出しを発行し、実行の制御を他のスレッド、プロセス、およびコンピューターのホストに転送できます。リモーティングはDCOMの代わりになることを意図していた可能性が高く、ほぼすべてのトランスポート機能も処理できますが、採用はそれほど大きくありませんでした。

一般に、ほとんどの人は現在WCFを好みます。これは、すべてが明確に定義されており、WCFを介して行われる呼び出しの側面を制御する機能がたくさんあるためです。ワイヤーの両側でタイプ情報を管理する必要があるため、通常の.NETリモーティングは現在やや使用されていません。これは、DCOMと比較して負担が大幅に改善されることはありません。また、共有メモリトランスポートがないため、スレッド内/プロセス通信はソケットベースの通信を使用してのみセットアップされ、ループバックソケットのパフォーマンスの制限を受けます。

あなたが言及する一般的なシナリオに関して、ほとんどすべてのアプリケーションは、WCFまたはリモーティングを介して他のアプリケーションに接続するためにアクセス可能にすることができます。トリッキーな問題のほとんどは、Webアプリケーションでホストされているコンポーネントとの通信に関係しています。一般に、これは通常行われていません。呼び出しはそれらから発行されますが、http /httpsWebアクティビティの外部で受け入れられることはめったにありません。セキュリティとID管理も難しい場合がありますが、DCOMの構成ベースのセットアップよりもはるかに改善されています。

全体として、WCFと.NETRemotingはどちらもDCOMよりも大幅に優れています。セットアップと保守が簡単で、DCOMで使用するCOMコンポーネントと同じ登録上の問題はありません。さらに、.NETの障害状態に対する自然なライブラリの例外などの本質的な利点が得られます。一方、DCOMでは、アプリケーションコードで失敗した配信とタイムアウトを適切に処理することを心配する必要があります。これだけで、このような条件を処理するために作成する必要のあるコードの量を大幅に減らすことができます。非同期呼び出しを使用すると、必要なときにいつでも長い操作を取り消すことができます。これをDCOMでうまく行うにはかなり注意が必要です。

于 2009-11-03T17:50:55.463 に答える
-1

すべてのテクノロジーには独自の強みがあります。WCFはCOMの代わりではありません。

シナリオのCOMを使用する場所:

.Netアプリケーションから既存の技術を利用することができます。理由:非常に多くの組織(銀行/テレコム/ヘルスケアシステム)が自動化に多額の投資をしている可能性があります。彼らは最新のテクノロジーで移行することを好みます(すべてのビジネスプロセスではなく、プロセスの一部である必要があります)。したがって、最新のテクノロジーを選択できます。ただし、既存のコードからのビジネスプロセスに従います(コードは何でもかまいません、COM ...)。したがって、開発、時間、デバッグなどのコストを削減できます。すべてのテクノロジーは下位互換性を提供する必要があります。そうしないと、この競争の激しい世界に適合しません。これが、.Netが相互運用性を導入した理由です。(RCW、CCWなど)。

于 2013-08-07T16:41:33.857 に答える