- 標準エンドポイント(デフォルトエンドポイント)を使用した最も単純なソリューション(ソリューション)の作成
- エンドポイントを手動で追加および構成する

前の部分では、WCFサービスを作成してクライアントアプリケーションから呼び出す最も簡単な例を説明しました。 このパートでは、まったく同じ結果を達成する方法を学習できますが、ここではすべてを手動で構成します。 したがって、標準のエンドポイントをオーバーライドし、独自のエンドポイントを構成して、アプリケーションとまったく同じ動作になります。
アイデアは、WCFの機能を理解し、自分で実行できることです。 さらに、以前のバージョンの.NETフレームワークは標準のエンドポイントをサポートしていません。つまり、この記事の最後にあるソリューションはVisual Studio 2008でも機能します。
どうする?
- BasicHttpBindingエンドポイントを追加する
- MEXエンドポイントを追加
- メタデータの動作を追加する
メタデータの動作
ここではほとんどすべての準備が整っているという理由だけで、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 .
<? 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 .
<? 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 .
<? 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 .
<? 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 .
<? 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 .
<? 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 .
<? 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を次のように変更します。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- < 動作 名 = "MyBehavior" >
BasicHttpBindingエンドポイントの追加
次に、BasicHttpBindingを使用して最初のエンドポイントを追加します。 <system.serviceModel>のすぐ下に<services />タグを追加し、サービスを追加します。 すべての値を空のままにすると、次のようになります。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- < サービス >
- < サービス 名 = "" >
- < エンドポイント
- アドレス = ""
- バインディング = ""
- 契約 = "" />
- </ サービス >
- </ サービス >
次に、ギャップを埋める必要があります。 詳細については、 WCF ABCおよびサービスのホストに関する記事を参照してください。
- お名前
これは少しわかりにくいですが、名前を入力するだけではなく、実際には一種のサービスです。
ここでは、サービスの実装のフルネームを指定する必要があります。 つまり、インターフェースではなく、クラスです。 この場合、クラス名はEmailValidatorですが、そのフルネームには名前空間が含まれており、最終的にEmailService.EmailValidatorにつながります。 - 住所
コードのベースアドレスで既に定義されているため、アドレスを入力する必要はありません。 設定で定義することもできます 。 アドレスに関する投稿でそれを読むことができます 。 - バインディング
バインディングは、単にbasicHttpBindingです。 ラクダ表記(camelCasing)に注意してください。 - 契約
ここでは、インターフェイスであるコントラクトを指定する必要があります。 Name属性と同様に、この例ではEmailService.IEmailValidatorのフルネームを入力する必要があります。
MEXエンドポイントの追加
MEXエンドポイントには、カスタマイズされたメタデータの動作が必要ですが、これについては後で説明します。 まず、エンドポイントを追加する必要があります。 再びWCF ABC、住所、拘束力、契約。
- 住所
このエンドポイントにBasicHttpBindingエンドポイントと同じアドレスを指定することはできないため、ここで「mex」を紹介します。 - バインディング
ここではすべてが簡単です:mexHttpBinding - 契約
ここでも、すべてが単純ですが、少し奇妙ですが、契約はIMetadataExchangeでなければなりません。 氏名などではなく、そのようにする必要があります。
メタデータの動作を有効にする
メタデータの動作を追加するだけです。 これは、名前の横のサービスアナウンスメントタグで行われます。 behaviorConfiguration属性を追加し、 動作構成の名前MyBehaviorを指定します。
最終結果
その結果、次の構成になりました。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- <? xml バージョン = "1.0" encoding = "utf-8" ? >
- < 設定 >
- < system.serviceModel >
- < サービス >
- < サービス 名 = "EmailService.EmailValidator" behaviorConfiguration = "MyBehavior" >
- < エンドポイント
- アドレス = ""
- binding = "basicHttpBinding"
- contract = "EmailService.IEmailValidator" />
- < エンドポイント
- アドレス = "mex"
- binding = "mexHttpBinding"
- contract = "IMetadataExchange" />
- </ サービス >
- </ サービス >
- < 動作 >
- < serviceBehaviors >
- < 動作 名 = "MyBehavior" >
- < serviceMetadata httpGetEnabled = "True" />
- </ 動作 >
- </ serviceBehaviors >
- </ 動作 >
- </ system.serviceModel >
- </ 設定 >
Visual Studio 2010およびVisual Studio 2008のソリューションは、ここからダウンロードできます 。