84

WCF が提供する 3 つのサービス/ホスト/クライアント モデルの価値を理解しています。しかし、それは私だけですか?それとも、WCF が非常に直接的で単純なもの (ASMX モデル) を採用して、それを混乱させたように見えますか?

SvcUtil のコマンド ライン ステップを使用してプロキシを生成する代わりの方法はありますか? ASMX サービスでは、テスト ハーネスが自動的に提供されました。今日、WCF を使用する良い代替手段はありますか?

WS* の機能が WCF とより緊密に統合されていることを高く評価しており、そこで WCF の見返りを見つけたいと思っていますが、そうでなければ当惑しています。

また、WCF で利用できる書籍の状態は、せいぜい最悪です。優れた著者である Juval Lowy は、O'Reilly の優れた参考書「Programming WCF Services」を書いていますが、WCF の使い方を今すぐ学習するには (とにかく私にとっては) あまり役に立ちません。その本の前身 (チュートリアルとしては少し整理されていますが、それほど多くはありません) は、Michele Leroux Bustamante の Learning WCF です。良い点はありますが、時代遅れであり、対応する Web サイトはありません。

ベジェバスをグーグルで検索し続ける以外に、WCF の学習に関する参考資料はありますか?

4

16 に答える 16

15

私は通常、Google を使用して WCF の回答を見つけ、次のブログでよく見つけます。

貴重な WCF 記事を含むブログ

私が見つけた他の貴重な記事

于 2008-12-10T22:53:00.290 に答える
14

WCF をいつ使用する必要があるか、またはいつ使用するかを判断するのに苦労しています。なんで?生産性とシンプルさをリストの一番上に置いているからです。ASMX モデルが成功した理由は、それが機能し、すぐに機能するようになったからです。そして、VS 2005 と .NET 2.0 では、wsdl.exe は非常に優れた準拠サービスを吐き出していました。

実際には、アーキテクチャ内の通信プロトコルは非常に少ないはずです。これにより、シンプルで保守しやすくなります。レガシー システムにアクセスする必要がある場合は、そのための特定のアダプタを記述して、洗練された美しい SOA の世界で動作できるようにします。

于 2008-12-08T16:14:52.203 に答える
13

WCF は ASMX よりもはるかに強力で、いくつかの方法で拡張されています。ASMX は HTTP のみに制限されていますが、WCF は通信に複数のプロトコルを使用できます (少なくとも、相互運用性が必要なサービスでは、ほとんどの人が依然として HTTP を使用する方法です)。WCF は拡張も容易です。少なくとも、ASMX を拡張できない方法で拡張することは可能です。「簡単」は伸ばしているのかもしれません。=)

私の意見では、WCF によって提供される追加機能は、追加される複雑さをはるかに上回ります。また、プログラミング モデルがより簡単になったと感じています。たとえば、DataContract は、すべてのパブリック プロパティを使用して XML シリアル化を使用してシリアル化するよりもはるかに優れています。また、本質的にはるかに宣言的であり、これも優れています。

于 2008-09-26T10:29:06.950 に答える
6

待ってください.... .NET Remoting を使用したことがありますか? .NET リモート処理自体はかなり複雑です。WCF の方が簡単で、レイアウトも優れていると思います。

于 2008-09-08T17:13:37.297 に答える
4

十分に言及されているとは思いませんが、ASMX サービスと非常によく似た、かなり単純なサービスを WCF で実装することができます。例えば:

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class SimpleService
{
    [OperationContract]
    public string HelloWorld()
    {
        return "Hello World";
    }

}

エンドポイントを web.config に登録する必要がありますが、それほど悪くはありません。

分離されたデータ、サービス、および操作コントラクトの冗長性を排除することは、WCF をより管理しやすくするのに大いに役立ちます。

于 2008-09-08T16:53:10.713 に答える
4

VS2008 には、バックグラウンドでプロキシを作成する [サービス参照の追加] コンテキスト メニュー項目が含まれています。

前述のように、WCF は ASMX Web サービス タイプの代替としてのみ意図されているのではなく、HTTP、TCP、名前付きパイプ、または MSMQ トランスポートのいずれであっても、相互運用可能なすべてのサービスに対して一貫性があり、安全でスケーラブルな方法を提供することを目的としています。

WCF には他にも問題があることを告白します (たとえば、basicHTTP を介してサービスを公開するときにメソッド シグネチャを書き直す -ここを参照してください。

于 2008-09-26T10:45:59.000 に答える
3

VS2008 を使用して WCF プロジェクトを作成すると、実行/デバッグを押すと自動的にテスト ハーネスが取得され、svcutil を使用せずに参照を追加できます。

于 2008-09-26T10:33:11.327 に答える
2

私の WCF に対する最初の考えはまったく同じでした。ここにいくつかの解決策があります:

  1. ジェネリックを使用して独自のプロキシ/クライアント層をプログラムします (クラスClientBase、Binding を参照)。これは簡単に機能しますが、完璧にするのは難しいことがわかりました。
  2. 1 のサード パーティの実装を使用します ( SoftwareIsHardworkは私の現在のお気に入りです)。
于 2008-12-10T23:10:53.313 に答える
1

WCFで私が見つけた難しいことは、クライアントとサーバーの構成を管理し、それほど良くない障害状態の例外のトラブルシューティングを行うことです。

誰かがそれらのためのショートカットやヒントを持っていれば素晴らしいでしょう。

于 2008-12-31T20:16:11.793 に答える
1

それは苦痛だと思います。両端に.NETがあり、両端に同じ「コントラクト」dllがロードされているなどです。しかし、「KnownType」属性などの多くの詳細をいじる必要があります。

また、WCFは、多くの構成を変更するまで、デフォルトで1つまたは2つのクライアントのみをサービスに接続させます。コードから構成を変更するのは簡単ではありません。アップグレード時にお客様が行った変更に変更をマージするのは非常に難しいため、大量のcomfigファイルを出荷することはできません(また、お客様には必要ありません)。 WCF設定で遊んでください!)

.NET Remotingは、ほとんどの場合機能する傾向がありました。

.NETから.NETへのオブジェクトベースの通信は、テキスト(xml)のビットを未知のシステムに送信するのと同じであると 偽ってみるのは、一歩遠すぎたと思います。

(WCFを使用してJavaシステムと通信したことが数回ありましたが、Javaシステムが提供するXSDは、とにかく必要なXMLと一致しなかったため、多くのXMLマッピングを手動でコーディングする必要がありました。)

于 2010-03-11T09:09:00.640 に答える
1

WCF は、さまざまな点で ASMX Web サービスの実装を本当に前進させていると思います。まず第一に、分散アプリケーションの本質的な複雑さを隠すのに役立つ非常に優れたレイヤード オブジェクト モデルを提供します。2 つ目は、サーバーからクライアントへの非同期通知 (純粋な HTTP では不可能) を含む、要求/リプレイ メッセージング パターン以上のものを持つことができます。「第 1 世代」の Web サービスとの下位互換性もプラスです。WCF は、内部表現形式として XML 標準を使用します。これは、特に JSON のような「脂肪のない XML の代替手段」の人気が高まっているため、長所または短所として認識される可能性があります。

于 2008-12-08T20:13:12.080 に答える
1

WCF は、ASMX の代替と考えるべきではありません。それがどのように位置付けられ、Microsoft によって内部でどのように使用されているかを判断すると、これは、あらゆる種類の境界を越えた通信に使用される基本的なアーキテクチャの一部です。

于 2008-12-08T19:52:13.260 に答える
1

MSDN? 私は通常、Library リファレンス自体をうまく利用しており、価値のある記事がそこにあることを期待しています。

于 2008-09-08T16:45:47.050 に答える
1

それが提供するものに関しては、答えは互換性だと思います。ASMX サービスは非常に Microsoft 的でした。彼らが他の消費者と互換性を持たせようとしなかったことは言うまでもありません。しかし、このモデルは、ASP.NET Web ページやその他の Microsoft のカスタム コンシューマー以外にはあまり適合しませんでした。一方、WCF では、そのアーキテクチャにより、通常の SOAP に加えて、REST、JSON などの非常にオープンな標準ベースのエンドポイントをサービスに含めることができます。他の人はおそらく、ASMX サービスよりも WCF サービスを使用する方がはるかに簡単です。

(これは基本的に、MSDN の比較から推測されたものなので、詳しい人は遠慮なく訂正してください。)

于 2008-09-08T17:11:03.637 に答える