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のソリューションは、ここからダウンロードできます



All Articles