2009-08-11 7 views
1

WCFは、ASP.NET Webサービスにはなかった豊富な機能を提供します。実稼働環境でこの技術を使用していた経験がある人が、新しい機能のために現在利用可能な面白い使用法についての経験を共有できるのかどうか疑問に思っています。私はそれが "オハイオ州、あなたが何をすることができるの有益な情報源になると思います?" ASP.NET Webサービスからそれが入ってくる人のためのものです。あなたの最も興味深いWCFの使い方は何ですか?

+0

これは非常に便利になるとは思っていません。 WCFでできることはほとんどがASMX Webサービスでは不可能なことだと考えてください。 –

答えて

1

したがって、Webサービスが目立つように目立つ問題は何ですか?

  • ノー内蔵暗号化メカニズムを:あなたはそれを自分で暗号化し、または HTTPSを使用する必要があり 。
  • ユーザーを認証する方法がありません: のユーザー名とパスワードを渡すことはできますが、実行する場合はどうすればいいですか Windows認証? X509証明書はどうですか?
  • トランスポートメカニズムを選択できません。HTTPは という比較的冗長なプロトコルです。 TCP/IPの上にテキストベースのプロトコル です。
  • リダイレクト:ファイアウォールが で、暗号化されている場合は メッセージをリダイレクトする必要があります。ファイアウォールが暗号化を解除しない限り です。 は宛先を確認し、 に転送します。
  • 圧縮: メッセージがワイヤを介して送信される前に、圧縮 を実行する必要があります。

マイクロソフトでは、これらの問題をWeb Service Extensionsバージョン2.0および3.0と呼ばれる中間リリースで解決しました。これらは、これらの問題に対処しました。しかし、これらはアドオンでした。私は経験がありました それと協力し、間違いなくコードの手作りが必要でした。それらは、W3C Organsisationsによって設定されたWS- *標準に準拠するために追加されました。

WSEの追加機能を使用する場合は、コードを最終的に再コンパイルする必要があります。クライアント上のプロキシは、新しい基本クラスから継承する必要がありました。追加の構成情報を追加する必要がありました。あなたはあなたのクライアントを更新するための基本的な4/5のステップのプロセスができます。しかし、それは最も便利ではありませんでした。

WSE 3.0とWCFを比較すると、すべての機能がより簡単に実装できることがわかります。私は上記のリストにそれを比較した場合:メッセージレベルであることができ

  • 暗号化単にmessageAlgorithm =」のようなものを追加することによって、(「データ」セクションを暗号化する)、またはトランスポートレベルで(ワイヤ上にそれを暗号化します) Basic128 "をApp.configに追加します。
  • 実行中のアプリケーションのWindows認証をシームレスに使用できます。また、呼び出す前に特定の証明書をクライアントマシンにインストールする必要があります。
  • 必要に応じて、転送メカニズムを変更することができます。私たちはHTTP、HTTPS、TCP、Named Pipes(プロセス間呼び出しのための)とMSMQを持っています。必要に応じて、新しい基本クラスを実装し、必要なメソッドをオーバーライドするだけで、これらを追加できます。 企業内ネットワークではTCPはHTTPよりもはるかに高速ですが、あなたが本当にうっ血であれば暗号化も実装できます。
  • リダイレクトはWSE 3.0で実装されており、さらに拡張しています。リダイレクトの使用は重要です。なぜなら、多くの組織では、インターネットにさらされているマシンがわずかしかなく、内部的にIPアドレスに基づいてフィルタリングするからです。しかし、UDDIと呼ばれるものもあります。これは、複数のマシンがサービスを持つものとして登録できるようにします。だから、必ずしも同じマシンにあなたが向いているとは限りません。
  • 圧縮はWS- *標準に従って実装され、WSE 3.0で実装されています。ドキュメントをXMLメッセージに「添付」するために定義された圧縮標準があります。

これらの機能と同様に、WCFは4つのSOA「ルール」をよりオープンに実装します。 SOAは大きな話題であり、インターネット上で検索することができます。全体の書籍はSOA上に と書かれていますが、WCFがSOAアーキテクチャの実装であることを受け入れるだけです。

SOAのガイドラインの1つは、オブジェクト/クラスではなくオブジェクト/クラスではなく、 "契約"(スキーマ)を提供するように要求しています。スキーマはXMLに言語に依存しないように指定されています。

また、WCFは「契約」を介してサービスを定義します。基本的な原則は、契約を定義することです。つまり、最初に実行できる操作です。 .NETでは、これはインターフェイスとして実装され、特定の属性で装飾されています。

その後、.NET開発者は、インターフェイスを具象クラス(他の属性で装飾)に実装し、その機能を実装するメソッドをコーディングします。つまり、「契約」はインタフェースから引き出され、クラスはその実装のみを提供します。このように.NETは独自の方法を提供して標準を実装する です。

これをすべてコーディングすることもできますが、WCFでは、URI、暗号化メカニズム、柔軟性のためのトランスポートメカニズムなどの設定ファイルで指定するオプションがあります。もう1つのSOA標準は、実装に柔軟性を持たせる能力です。

これはすばらしい概要です。私はそれがあまりにも具体的でなくあなたのつま先を浸すのを助けることを望む。

+0

素晴らしい答えですが、質問されたものとは異なる質問に対する答えです。彼はWCFについてうれしいことを聞いていませんでした.WCFの素晴らしい使い方をASMXサービスではできないように尋ねました。 –

1

これはかなり広い質問です。 WCFはasp Webサービスよりはるかに優れています。

WCFを使用して、すべての操作をルーティングするプロキシADO.Netデータプロバイダを構築するためにWCFを使用しました。これにより、クライアントマシンではなくサーバ上でアクセス可能なデータベースで作業することができます。

関連する問題