Visual Studio 2010でWCFを使用する簡単な例。パート2

2番目の部分を読みます。

画像

前の部分では、WCFサービス作成してクライアントアプリケーションから呼び出す最も簡単な例を説明しました。 このパートでは、まったく同じ結果を達成する方法を学習できますが、ここではすべてを手動で構成します。 したがって、標準のエンドポイントをオーバーライドし、独自のエンドポイントを構成して、アプリケーションとまったく同じ動作になります。

アイデアは、WCFの機能を理解し、自分で実行できることです。 さらに、以前のバージョンの.NETフレームワークは標準のエンドポイントをサポートしていません。つまり、この記事の最後にあるソリューションはVisual Studio 2008でも機能します。

どうする?
  1. BasicHttpBindingエンドポイントを追加する
  2. MEXエンドポイントを追加
  3. メタデータの動作を追加する

メタデータの動作


ここではほとんどすべての準備が整っているという理由だけで、3番目のポイントからすぐに始めます。 前の投稿のソリューションには、 ConsoleHostアプリケーションの次のアプリケーション構成が含まれていました
<? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  1. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  2. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  3. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  4. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  5. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  6. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  7. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  8. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  9. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  10. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  11. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
  12. <? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .
<? xml version ="1.0" encoding ="utf-8" ? > < configuration > < system.serviceModel > < behaviors > < serviceBehaviors > < behavior > < serviceMetadata httpGetEnabled ="True" /> </ behavior > </ serviceBehaviors > </ behaviors > </ system.serviceModel > </ configuration > * This source code was highlighted with Source Code Highlighter .

サービスの動作には名前がないため、WCF4のすべてのサービスの標準になります。 私たちがしなければならないのは、彼に名前を付けることだけです。 行6を次のように変更します。
  1. < 動作 = "MyBehavior" >
*このソースコードは、 ソースコードハイライターで強調表示されました。

BasicHttpBindingエンドポイントの追加


次に、BasicHttpBindingを使用して最初のエンドポイントを追加します。 <system.serviceModel>のすぐ下に<services />タグを追加し、サービスを追加します。 すべての値を空のままにすると、次のようになります。
  1. < サービス >
  2. < サービス = "" >
  3. < エンドポイント
  4. アドレス = ""
  5. バインディング = ""
  6. 契約 = "" />
  7. </ サービス >
  8. </ サービス >
*このソースコードは、 ソースコードハイライターで強調表示されました。

次に、ギャップを埋める必要があります。 詳細については、 WCF ABCおよびサービスのホストに関する記事を参照してください。
最終記事はこの記事の最後にあり、ソリューションをダウンロードすることもできます。このリンクも記事の最後にあります。

MEXエンドポイントの追加


MEXエンドポイントには、カスタマイズされたメタデータの動作が必要ですが、これについては後で説明します。 まず、エンドポイントを追加する必要があります。 再びWCF ABC、住所、拘束力、契約。

メタデータの動作を有効にする


メタデータの動作を追加するだけです。 これは、名前の横のサービスアナウンスメントタグで行われます。 behaviorConfiguration属性を追加し、 動作構成の名前MyBehaviorを指定します。

最終結果


その結果、次の構成になりました。
  1. <? xml バージョン = "1.0" encoding = "utf-8">
  2. < 設定 >
  3. < system.serviceModel >
  4. < サービス >
  5. < サービス = "EmailService.EmailValidator" behaviorConfiguration = "MyBehavior" >
  6. < エンドポイント
  7. アドレス = ""
  8. binding = "basicHttpBinding"
  9. contract = "EmailService.IEmailValidator" />
  10. < エンドポイント
  11. アドレス = "mex"
  12. binding = "mexHttpBinding"
  13. contract = "IMetadataExchange" />
  14. </ サービス >
  15. </ サービス >
  16. < 動作 >
  17. < serviceBehaviors >
  18. < 動作 = "MyBehavior" >
  19. < serviceMetadata httpGetEnabled = "True" />
  20. </ 動作 >
  21. </ serviceBehaviors >
  22. </ 動作 >
  23. </ system.serviceModel >
  24. </ 設定 >
*このソースコードは、 ソースコードハイライターで強調表示されました。

Visual Studio 2010およびVisual Studio 2008のソリューションは、ここからダウンロードできます

Source: https://habr.com/ru/post/J116872/


All Articles