<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>とあるコンサルタントのつぶやき : WCF</title><link>http://blogs.msdn.com/nakama/archive/tags/WCF/default.aspx</link><description>Tags: WCF</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Part 4. IIS ホストの使い方</title><link>http://blogs.msdn.com/nakama/archive/2008/10/09/part-4-iis.aspx</link><pubDate>Thu, 09 Oct 2008 04:40:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8967839</guid><dc:creator>nakama</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/nakama/comments/8967839.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nakama/commentrss.aspx?PostID=8967839</wfw:commentRss><description>&lt;p&gt;さて、前回の Part 3. のエントリまでで基本的な WCF サービスの開発方法を説明しましたが、ここまでのサンプルでは、すべてコンソールアプリケーションを使ってサーバを開発してきました。しかし実際の運用を想定すると、アプリケーションリスタートやプロセスリサイクリング、あるいはモニタリングといった、運用監視関係の機能を充実させる必要があり、このコンソールアプリケーションを強化してそれらの機能を持たせるのは非現実的です。このため、実運用では IIS をホストとして WCF サービスを動作させ、IIS が持つ各種の運用管理機能を活用するのが便利です。&lt;/p&gt;  &lt;p&gt;本エントリでは、IIS ホストの使い方として、以下の項目について解説します。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;.svc ファイルによる WCF サービスの開発方法 &lt;/li&gt;    &lt;li&gt;2 つの ASP.NET ランタイムとの統合方式 &lt;/li&gt;    &lt;li&gt;構成設定ファイルを使わない .svc ファイルの作り方 &lt;/li&gt;    &lt;li&gt;WPAS （Windows Process Activation Service）の使い方 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step.15 .svc ファイルによる WCF サービスの開発方法］&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;では、実際に Web サーバ上で動作する WCF サービスを開発してみます。まず、新規に Web サイトプロジェクトを作成します。&lt;strong&gt;（※ WCF サービスプロジェクトはここでは利用しません。通常の ASP.NET Web サイトプロジェクトを利用してください。）&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="312" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_3.png" width="406" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;作成されたサイトの Default.aspx ファイルは利用しませんので、削除しておきます。ここに、WCF サービスを開発していきます。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="301" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_4.png" width="407" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;ASP.NET ランタイム上で動作する WCF サービスを開発するためには、.svc ファイルを作成します。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;プロジェクトに対して新しい項目を追加します。 &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;画面上に、「WCF サービス」という項目が見えますが、これは使いません。&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;かわりに、テキストファイルを選択し、ファイル名を「WcfService.svc」ファイルに変更してからプロジェクトに追加します。 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;※ 「WCF サービス」という項目や、WCF サービスプロジェクトを利用しないのは、これらがファイル分離型開発モデルに基づいたファイル配置を取るためです。今回は、.svc ファイルを通信インタフェース（SI）としてのみ利用するような設計モデルを取るため、.svc ファイルの中にすべてのコードを記述する方法でサンプルを示します。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="310" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_5.png" width="396" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;このようにすると、ファイルの中身が空の .svc ファイルが作成されます。ここに、以下のようなコードを記述します。&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;%@ ServiceHost Language=&lt;span style="color: #006080"&gt;&amp;quot;C#&amp;quot;&lt;/span&gt; Debug=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; Service=&lt;span style="color: #006080"&gt;&amp;quot;WcfService&amp;quot;&lt;/span&gt; %&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Runtime.Serialization;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.ServiceModel;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt; [ServiceContract]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; WcfService&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;     [OperationContract]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; GetMessage(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; name)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;&amp;quot;Hello World, &amp;quot;&lt;/span&gt; + name;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_16.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="311" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_7.png" width="402" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;※ .svc ファイルを編集する際に、Visual Studio 2008 上で、IntelliSense が効かないことがあります。この場合は、ディレクティブ（先頭行の &amp;lt;%@ %&amp;gt; 記号）を入力したあと、いったんファイルを閉じて再度開いてみてください。&lt;/p&gt;

&lt;p&gt;※ なお、今回は話をわかりやすくするために、.svc ファイルのファイル名とクラス名を一致させていますが、これらの名前はずれていても構いません。.svc ファイルは Address (URL) の決定に利用されますが、これは WCF サービスのクラス名と一致していなくても構わないためです。&lt;/p&gt;

&lt;p&gt;次に、SvcConfigEditor を利用して、web.config ファイル上に構成設定を行います。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;サービスを新規に追加し、実装クラス名として &amp;quot;WcfService&amp;quot; を指定します。（※ .svc ファイル中で WCF サービスクラスを定義する際に namespace 指定を行った場合には、名前空間をつけて実装クラス名を指定してください。） &lt;/li&gt;

  &lt;li&gt;エンドポイントを作成し、A = 空欄、B = basicHttpBinding、C = WcfService を設定します。（※ Address(URL) は、.svc ファイルにより暗黙的に決定されることになるため、指定しません。） &lt;/li&gt;

  &lt;li&gt;サービス動作（サービスビヘイビア）を作成し、serviceDebug, serviceMetadata の 2 つを追加します。 &lt;/li&gt;

  &lt;li&gt;serviceMetadata のプロパティとして、HttpGetEnabled を True に変更します。 &lt;/li&gt;

  &lt;li&gt;最後に、作成したサービスビヘイビアを、&amp;quot;WcfService&amp;quot; に割り当てます。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;作成し終わった構成設定ファイルと、SvcConfigEditor の画面を以下に示します。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_28.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_13.png" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_22.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_10.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_24.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_11.png" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_26.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_12.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;?xml version=&lt;span style="color: #006080"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding=&lt;span style="color: #006080"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &amp;lt;configuration&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;     ... (中略) ...&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;     &amp;lt;system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;         &amp;lt;behaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;             &amp;lt;serviceBehaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;                 &amp;lt;behavior name=&lt;span style="color: #006080"&gt;&amp;quot;NewBehavior&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;                     &amp;lt;serviceDebug /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;                     &amp;lt;serviceMetadata httpGetEnabled=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;                 &amp;lt;/behavior&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;             &amp;lt;/serviceBehaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;         &amp;lt;/behaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;         &amp;lt;services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;             &amp;lt;service behaviorConfiguration=&lt;span style="color: #006080"&gt;&amp;quot;NewBehavior&amp;quot;&lt;/span&gt; name=&lt;span style="color: #006080"&gt;&amp;quot;WcfService&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;                 &amp;lt;endpoint binding=&lt;span style="color: #006080"&gt;&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt; contract=&lt;span style="color: #006080"&gt;&amp;quot;WcfService&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;             &amp;lt;/service&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;         &amp;lt;/services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;     &amp;lt;/system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt; &amp;lt;/configuration&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;以上の作業が終わったら、Web サイトプロジェクトを実行して、WcfService.svc ファイルを呼び出してみてください。serviceDebug モジュールにより、ヘルプページが作成され、以下のような画面がブラウザ上に表示されます。（WSDL ファイルも表示できることを確認してください。）&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_30.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="204" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_14.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_32.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="204" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_15.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;WCF サーバの開発が終了したら、今度は WCF クライアントの開発に移ります。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ソリューションに新規にコンソールアプリケーションを追加します（ConsoleApplication1）。 &lt;/li&gt;

  &lt;li&gt;サービス参照を追加し、WCF プロキシクラスを作成します。（※ 同一ソリューション内の WCF サービスを探す場合には、「探索」ボタンを使うと便利です。） &lt;/li&gt;

  &lt;li&gt;アプリケーションコードを記述し、WCF サービスを呼び出すコードを記述します。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_34.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="309" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_16.png" width="322" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_36.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="337" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_17.png" width="435" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; ConsoleApplication1&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Program&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;             ServiceReference1.WcfServiceClient proxy = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ConsoleApplication1.ServiceReference1.WcfServiceClient();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; message = proxy.GetMessage(&lt;span style="color: #006080"&gt;&amp;quot;Nobuyuki&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;             proxy.Close();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;             Console.WriteLine(message);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;以上の作業で完成になります。コンソールアプリケーションを実行してみると、ASP.NET ランタイム上にホストされた .svc ファイル（WCF サービス）が呼び出され、WCF サービスが実行されます。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_38.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="81" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_18.png" width="442" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;※ なお今回は解説しませんが、.svc ファイルを使う場合には basicHttpBinding 以外にも、wsHttpBinding や、&lt;strong&gt;&lt;font color="#ff0000"&gt;HTTP トランスポートを利用する customBinding も利用することができます&lt;/font&gt;&lt;/strong&gt;。このため、httpTransport チャネルと binaryMessageEncoding チャネルを組み合わせた customBinding を使うと、&lt;strong&gt;バイナリエンコード方式を利用した WCF サービスを ASP.NET ランタイム上でホストすることができます&lt;/strong&gt;。余力がある方は、ぜひトライしてみてください。&lt;/p&gt;

&lt;p&gt;※ ここまで完成したら、いったんソリューションファイルをコピーするなりバックアップするなりしておいてください。（Step.18 で再利用します。）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step.16 2 つの ASP.NET ランタイムとの統合方式］&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;さて、.svc ファイルを利用した場合の WCF サービスの内部動作がどのようになっているのかを次に考えてみます。この .svc ファイル方式は、簡単にいえば、&lt;strong&gt;&lt;font color="#ff0000"&gt;ASP.NET ランタイムを HTTP プロトコルのリスナとして使おうという方式&lt;/font&gt;&lt;/strong&gt;で、その動作イメージは下図のようになります。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_40.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="187" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_19.png" width="355" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;つまり、.svc ファイルが WCF ランタイムにおけるリスナの役割を果たすことになり、これにより WCF サービスが HTTP プロトコルによる通信要求を受け付けられる、という形になります。（正確には、.svc ファイルに記述したディレクティブ（先頭行）の命令により ServiceHost インスタンスの生成、WCF パイプラインの構築が行われ、我々が記述した WcfService クラスが動作する、という形になります。）&lt;/p&gt;

&lt;p&gt;ところが、ここで問題になるのが、WCF パイプライン（バインディング）と、ASP.NET パイプラインの関係（役割分担・位置づけ）です。ASP.NET ランタイムにもパイプラインがあり、WCF ランタイムにもパイプライン処理がある、という形になっているのですが、これらの関係は、下図のように表わすことができます。（※ &lt;a href="http://blogs.msdn.com/nakama/archive/2008/09/18/part-1-wcf.aspx"&gt;Part. 1&lt;/a&gt; の解説も参考になるので、そちらもご参照ください。）&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_42.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="268" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_20.png" width="499" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;もともと、ASP.NET ランタイムは HTTP 通信に限定して開発されたものであるため、ASP.NET パイプライン（上図で HTTP パイプラインと書かれているところ）は、OSI 7 階層モデルの最上位には位置しますが、WCF 3 階層モデルの観点からすると、あくまで A 層のものでしかありません。よって、ASP.NET ランタイムと WCF ランタイムそれぞれで個別にパイプライン処理が走り、この .svc ファイル内に記述した WCF サービスが動作していることになります。&lt;/p&gt;

&lt;p&gt;さて .svc ファイルを使う場合、&lt;strong&gt;&lt;font color="#ff0000"&gt;基本的に、ASP.NET ランタイムは WCF サービスのリスナとしてしか使わない&lt;/font&gt;&lt;/strong&gt;、ということになります。しかし上図のように、.svc ファイルに対する処理を、通常の HTTP ハンドラによる拡張子振り分けにより実施しようとすると、ASP.NET パイプライン上のモジュールを片っ端から動作させることになり、性能上不利益をこうむることになります。このため、WCF ランタイムには ASP.NET ランタイムとの統合モードとして、以下の 2 つが用意されています。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ASP.NET 非互換モード （既定のモード） 
    &lt;br /&gt;HTTP モジュールを使って、PostAuthenticateRequest イベントのタイミングで .svc ファイルをフックする方式。この方式の場合、ASP.NET ランタイムの大半のモジュールはショートカットされて動作せず、より高い性能で WCF サービスを動作させることができる。 &lt;/li&gt;

  &lt;li&gt;ASP.NET 互換モード 
    &lt;br /&gt;HTTP ハンドラを使って、通常通り .svc ファイルを処理する方式。この方式の場合には、ASP.NET ランタイムのモジュールが片っ端から動作することになる。（※ このモードを使うための具体的な設定方法は MSDN ライブラリなどを参照してください。） &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_44.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="332" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_21.png" width="502" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;※ この 2 つのモードで WCF サービスを動作させるため、.NET Framework 3.0 をインストールすると、ルート web.config ファイルに修正が加わります。一見すると、HTTP ハンドラにより .svc ファイルが動作しているように見えますが、既定のモードでは下側の ServiceModel HTTP モジュールの方が .svc ファイルをフックしています。&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;httpHandlers&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;   ...&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;   &amp;lt;add path=&lt;span style="color: #006080"&gt;&amp;quot;*.svc&amp;quot;&lt;/span&gt; verb=&lt;span style="color: #006080"&gt;&amp;quot;*&amp;quot;&lt;/span&gt; type=&lt;span style="color: #006080"&gt;&amp;quot;System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot;&lt;/span&gt; validate=&lt;span style="color: #006080"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;   ...&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; &amp;lt;/httpHandlers&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; &amp;lt;httpModules&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;   ...&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;   &amp;lt;add name=&lt;span style="color: #006080"&gt;&amp;quot;ServiceModel&amp;quot;&lt;/span&gt; type=&lt;span style="color: #006080"&gt;&amp;quot;System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt; &amp;lt;/httpModules&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;WCF ランタイムに 2 つの ASP.NET ランタイム統合モードが用意されているのは、正直なところ混乱の元のような気がしなくもない（＝WCF の原則に従って、非互換モードだけで十分のような気もする）のですが、&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ASP.NET XML Web サービス（.asmx ファイル）とのアプリケーション共存 &lt;/li&gt;

  &lt;li&gt;高度なアプリケーションサービスの利用 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;の 2 点を考えると、確かに互換モードが用意されていてもいいのかな、という気もします。後者については少しわかりにくいと思うので補足しますが、そもそも、WCF パイプラインと ASP.NET パイプラインは、目的としているところが全くといっていいほど違います。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;WCF パイプライン ＝ 通信プロトコルの抽象化 &lt;/li&gt;

  &lt;li&gt;ASP.NET パイプライン ＝ 高度なアプリケーションサービスの提供 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;もう少し具体的な例を挙げると、たとえば ASP.NET パイプラインの中には、SessionState モジュールや OutputCache モジュールなどなど、アプリケーション開発に役立つような機能群がたくさん用意されています。ところが、WCF パイプラインの方には、こうしたアプリケーション開発に活用できるサービスや機能がほとんどといっていいほど存在せず、通信暗号化や通信抽象化、トランザクションフローなどの通信制御系の低水準機能を提供することにフォーカスしています。（これはある意味当たり前で、WCF パイプラインは OSI 7 階層モデルにおける下層のようなものなので、ASP.NET パイプラインのような高度なアプリケーション開発サービスを提供する場合には、WCF パイプライン（Binding）の上位に、こうしたサービスを構築しなければならないと考えられます...が、まだそれはない、ということなんですよね。）&lt;/p&gt;

&lt;p&gt;こうした状況下で WCF アプリケーションを作ろうと思った場合、ASP.NET 上で *.asmx を作る場合に比べると、利用できるアプリケーションサービスが限定的であるため、開発が厄介になることがあります（特にデータキャッシュ機能がないのはかなり不便でしょう）。このような場合には、ASP.NET 互換モードを利用して、ASP.NET ランタイムのアプリケーションサービスを使うというのも（現時点では）一つの有効な選択肢になると思います。（ただ、ASP.NET ランタイム上でしかその WCF サービスが動作しなくなってしまう、という問題は当然存在するのですが。）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step.17 構成設定ファイルを使わない .svc ファイルの作り方］&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;さて、ここまでの解説では、Web サイト内に WCF サービス（.svc ファイル）をひとつだけ作成しましたが、実際の業務アプリケーションでは、WCF サービス（.svc ファイル）が複数個作られることになるはずです。ところが現状の作り方では、WCF サービスが増えると、構成設定ファイル（web.config ファイル）上にそれらの構成設定を追加していかなければならなくなるため、構成設定ファイルの維持・管理が極端に面倒になります。（下図の例を参照）&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_50.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_24.png" width="196" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_48.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="296" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_23.png" width="430" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;※ この点は結構大きな問題で、例えば X, Y, Z の 3 つの WCF サービス（.svc ファイル）を作成する際に、それらの構成設定データを同一の web.config ファイルに記述しなければならなくなると、チーム開発が非常にやりづらくなります。（例えば X さんが web.config ファイルをいじったときに、間違って Y さんの構成設定を壊してしまう、など） ASP.NET XML Web サービス（*.asmx）開発のよいところは、&lt;strong&gt;複数人がそれぞれの XML Web サービスを開発する際に、バラバラのファイルを触ればよいようになっている（同じファイルをみんなで触らなくて済むようになっている）&lt;/strong&gt;、という点です。&lt;/p&gt;

&lt;p&gt;この問題を避けるためには、.svc ファイルのディレクティブとして、Service 属性のかわりに Factory 属性を利用し、さらに ServiceHost インスタンス（WCF ランタイム）を手動で起動して A/B/C を手作業で構築するコードを記述します。このようにすると、web.config ファイル上に構成設定を記述しなくても済むようになります。（※ web.config ファイル上でも構成設定を行うと、衝突を起こして例外が発生します。）&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;%@ ServiceHost Language=&lt;span style="color: #006080"&gt;&amp;quot;C#&amp;quot;&lt;/span&gt; Debug=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; Factory=&lt;span style="color: #006080"&gt;&amp;quot;WcfServiceHostFactory&amp;quot;&lt;/span&gt; %&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.ServiceModel;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.ServiceModel.Activation;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.ServiceModel.Description;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; WcfServiceHostFactory : ServiceHostFactory&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; ServiceHostBase CreateServiceHost(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; service, Uri[] baseAddresses)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;         ServiceHost host = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceHost(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(WcfService), baseAddresses);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;         host.AddServiceEndpoint(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(WcfService), &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; BasicHttpBinding(), &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;         ServiceMetadataBehavior svb1 = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceMetadataBehavior();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;         svb1.HttpGetEnabled = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;         host.Description.Behaviors.Add(svb1);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; host;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt; [ServiceContract]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  22:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; WcfService&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  23:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  24:&lt;/span&gt;     [OperationContract]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  25:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; GetMessage(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; name)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  26:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  27:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;&amp;quot;Hello World, &amp;quot;&lt;/span&gt; + name;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  28:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  29:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  30:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;上記のコードではベタ書きしていますが、少し工夫すればユーティリティクラス化することができますので、この方法を利用すると、みんなが一つの構成設定ファイルをいじらなければならない、という状況を回避することができます。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step.18 WPAS （Windows Process Activation Service）の使い方］&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;最後に、IIS 7 で利用できるようになった、WPAS （Windows Process Activation Service（WAS と書くこともあります））についても解説しておきます。&lt;/p&gt;

&lt;p&gt;WPAS とは、簡単に言うと、&lt;strong&gt;&lt;font color="#ff0000"&gt;IIS 上にホストした WCF サービスを、TCP/IP 通信や名前付きパイプ通信により呼び出せるようにするための仕組み&lt;/font&gt;&lt;/strong&gt;です。従来、TCP/IP 通信を受け付けるサーバアプリケーションを記述するためには、.NET Remoting などを使って、自力でサーバランタイムを記述しなければならなかったのですが、IIS 7 を使うとこの作業が大幅に簡素化される、ということになります。（なお、この仕組みは IIS 7 上、つまり Windows Vista 及び Windows Server 2008 でしか使うことができませんので注意してください。）&lt;/p&gt;

&lt;p&gt;以下では Windows Vista の場合を例にとって、WPAS の使い方を解説してみることにします。（基本的なやり方は Windows Server 2008 でも同じです。）&lt;/p&gt;

&lt;p&gt;まず、Windows Vista のコントロールパネルから、IIS 7 及び WCF 拡張サービスをインストールします。細かいオプションをひとつずつ設定するのは大変なため、以下の 4 項目にのみチェックを入れてください。（関連するものは自動的にチェックが入ります。）&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Internet Information Services &amp;#8594; World Wide Web サービス &amp;#8594; アプリケーション開発機能 &amp;#8594; ASP.NET &lt;/li&gt;

  &lt;li&gt;Internet Information Services &amp;#8594; Web 管理ツール &amp;#8594; IIS 管理コンソール &lt;/li&gt;

  &lt;li&gt;Microsoft .NET Framework 3.0 &amp;#8594; Windows Communication Foundation HTTP Activation &lt;/li&gt;

  &lt;li&gt;Microsoft .NET Framework 3.0 &amp;#8594; Windows Communication Foundation Non-HTTP Activation &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_52.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="489" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_25.png" width="367" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;※ WPAS の実体はこの画面のずーっと下のほうにある「Windows プロセス起動サービス」というものです。上記の項目を選択すると、これらの項目も自動的にインストール対象となります。&lt;/p&gt;

&lt;p&gt;次に、Step.15 で完成させたソリューションファイルを（まずは HTTP ベースで） IIS 7 上で動作させるように構成します。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;コントロールパネル &amp;#8594; 管理ツール &amp;#8594; IIS Manager を開きます。 &lt;/li&gt;

  &lt;li&gt;Default Web Site に「仮想ディレクトリの追加」を行い、Step.15 で作った Web サイトへのフォルダマッピングを作成します。（エイリアス = &amp;quot;WebSite1&amp;quot;、物理パス = &amp;quot;C:\Users\nakama\Documents\Visual Studio 2008\WebSites\WebSite1&amp;quot;） &lt;/li&gt;

  &lt;li&gt;作成された WebSite1 フォルダに対して、「アプリケーションへの変換」を行い、当該フォルダを Web アプリケーション化します。 &lt;/li&gt;

  &lt;li&gt;物理フォルダに対して ACL （ファイルアクセス権）の設定を行い、Everyone に対して読み取り権限を与えます。 &lt;/li&gt;

  &lt;li&gt;以上の作業が終わったら、WcfService.svc ファイルを呼び出してみてください。（ポート 80 番上で公開されているので、&lt;a title="http://localhost/WebSite1/WcfService.svc" href="http://localhost/WebSite1/WcfService.svc"&gt;http://localhost/WebSite1/WcfService.svc&lt;/a&gt; をブラウザから呼び出してみてください。） &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;［仮想ディレクトリの作成］&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_54.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_26.png" width="215" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_56.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="233" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_27.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;［Web アプリケーション化］&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_58.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_28.png" width="184" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;［ACL の設定］&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_60.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_29.png" width="234" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;［動作確認］&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_62.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="210" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_30.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;次に、ポート 80 番の IIS 7 上で動作しているこのアプリケーションを呼び出すクライアントアプリケーションを用意します。すでに作成してあるアプリケーションの構成設定ファイルを書きかえれば呼び出せるようになるはずなので、以下のように作業してみることにします。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Step.15 で作成したコンソールアプリケーション（WCF サービスを呼び出すクライアント側のアプリケーション）を、まるごとデスクトップなどにコピーします。（C:\Users\nakama\Documents\Visual Studio 2008\Projects\WebSite1\ConsoleApplication1\bin\Debug フォルダの下にあるファイル群。Debug フォルダごとデスクトップなどにコピーしてしまうとよいでしょう。） &lt;/li&gt;

  &lt;li&gt;コピーした &amp;quot;ConsoleApplication1.exe.config&amp;quot; ファイルを、SvcConfigEditor ツールで開きます。 &lt;/li&gt;

  &lt;li&gt;クライアントエンドポイントの &amp;quot;Address&amp;quot; を、適切なアドレスに書き換えます。（例： &lt;a title="http://localhost:1208/WebSite1/WcfService.svc" href="http://localhost:1208/WebSite1/WcfService.svc"&gt;http://localhost:1208/WebSite1/WcfService.svc&lt;/a&gt; &amp;#8594; &lt;a title="http://localhost:1208/WebSite1/WcfService.svc" href="http://localhost/WebSite1/WcfService.svc"&gt;http://localhost/WebSite1/WcfService.svc&lt;/a&gt;） &lt;/li&gt;

  &lt;li&gt;書き替えたら、コマンドラインプロンプトなどから ConsoleApplication1.exe を呼び出して実行します。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;以上の作業により、IIS 7 上に配置したアプリケーションを、HTTP プロトコルで呼び出すことができるようになります。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_68.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="258" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_33.png" width="343" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_70.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="270" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_34.png" width="343" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_72.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="117" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_35.png" width="415" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;次に、この WCF サービスの通信プロトコルを、TCP/IP に切り替えてみます。サーバ側の通信プロトコルの切り替えに必要なのは、① IIS 7 の構成設定を変更して TCP/IP 通信を受け付けられるようにすることと、② web.config ファイルを修正してバインディングを netTcpBinding に切り替えること、です。&lt;/p&gt;

&lt;p&gt;&lt;u&gt;① IIS 7 の構成設定を変更して TCP/IP 通信を受け付けられるようにする&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;この作業は、IIS サービスマネージャから行います。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;まず、&amp;quot;Default Web Site&amp;quot; を選択し、画面右側の「操作」&amp;#8594;「サイトの編集」&amp;#8594;「バインド...」を選択し、サイトバインドを確認します。http だけでなく、net.tcp という項目が追加されていれば、IIS で TCP/IP 通信による WCF サービス呼び出しを受け付けられる状態になっています。 &lt;/li&gt;

  &lt;li&gt;次に、&amp;quot;WeiSite1&amp;quot; を選択し、画面右側の「操作」&amp;#8594;「アプリケーションの管理」&amp;#8594;「詳細設定...」を選択します。詳細設定一覧の中の「動作」&amp;#8594;「有効なプロトコル」を、&amp;quot;http&amp;quot; から &amp;quot;http,net.tcp&amp;quot; に変更します。（カンマ区切り、空白なしで） これにより、この Web アプリケーションが TCP/IP 通信を受け付けられるようになります。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_74.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="121" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_36.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_76.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_37.png" width="200" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;u&gt;② web.config ファイルを修正してバインディングを netTcpBinding に切り替える&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;次に、web.config ファイルを修正します。ここではせっかくですので、netTcpBinding への切り替えではなく、このバインディングを追加してみたいと思います。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;まず、&amp;quot;C:\Users\nakama\Documents\Visual Studio 2008\WebSites\WebSite1&amp;quot; フォルダ下にある web.config ファイルを、SvcConfigEditor.exe ツールで開きます。 &lt;/li&gt;

  &lt;li&gt;WcfService に対して、新規にサービスエンドポイントを追加し、Binding = &amp;quot;netTcpBinding&amp;quot;, Contract = &amp;quot;WcfService&amp;quot; を指定します。（Address は空欄） &lt;/li&gt;

  &lt;li&gt;暗号化通信を行わない設定とするため、バインディング構成設定を追加します。「バインド」セクションに「新しいバインド構成」を追加し、netTcpBinding のバインド構成を新規作成します。セキュリティタブの Mode を &amp;quot;None&amp;quot; に変更したら、再びエンドポイントの設定に戻り、このバインド構成（&amp;quot;NewBinding0&amp;quot;）を割り当ててください。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_78.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="259" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_38.png" width="371" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_80.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="261" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_39.png" width="374" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;?xml version=&lt;span style="color: #006080"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding=&lt;span style="color: #006080"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &amp;lt;configuration&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;     ... (中略) ...&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;     &amp;lt;system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;         &amp;lt;bindings&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;             &amp;lt;netTcpBinding&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;                 &amp;lt;binding name=&lt;span style="color: #006080"&gt;&amp;quot;NewBinding0&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;                     &amp;lt;security mode=&lt;span style="color: #006080"&gt;&amp;quot;None&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;                 &amp;lt;/binding&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;             &amp;lt;/netTcpBinding&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;         &amp;lt;/bindings&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;         &amp;lt;behaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;             &amp;lt;serviceBehaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;                 &amp;lt;behavior name=&lt;span style="color: #006080"&gt;&amp;quot;NewBehavior&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;                     &amp;lt;serviceDebug /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;                     &amp;lt;serviceMetadata httpGetEnabled=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;                 &amp;lt;/behavior&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;             &amp;lt;/serviceBehaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt;         &amp;lt;/behaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  22:&lt;/span&gt;         &amp;lt;services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  23:&lt;/span&gt;             &amp;lt;service behaviorConfiguration=&lt;span style="color: #006080"&gt;&amp;quot;NewBehavior&amp;quot;&lt;/span&gt; name=&lt;span style="color: #006080"&gt;&amp;quot;WcfService&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  24:&lt;/span&gt;                 &amp;lt;endpoint binding=&lt;span style="color: #006080"&gt;&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt; contract=&lt;span style="color: #006080"&gt;&amp;quot;WcfService&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  25:&lt;/span&gt;                 &amp;lt;endpoint binding=&lt;span style="color: #006080"&gt;&amp;quot;netTcpBinding&amp;quot;&lt;/span&gt; bindingConfiguration=&lt;span style="color: #006080"&gt;&amp;quot;NewBinding0&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  26:&lt;/span&gt;                     contract=&lt;span style="color: #006080"&gt;&amp;quot;WcfService&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  27:&lt;/span&gt;             &amp;lt;/service&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  28:&lt;/span&gt;         &amp;lt;/services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  29:&lt;/span&gt;     &amp;lt;/system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  30:&lt;/span&gt; &amp;lt;/configuration&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;以上のことを行ったら、ファイルをセーブし、ヘルプページ（&lt;a href="http://localhost/WebSite1/WcfService.svc"&gt;http://localhost/WebSite1/WcfService.svc&lt;/a&gt;）と WSDL 情報（&lt;a href="http://localhost/WebSite1/WcfService.svc?wsdl"&gt;http://localhost/WebSite1/WcfService.svc?wsdl&lt;/a&gt;）を開いてみてください。正しく構成できていれば、WSDL 情報に、basicHttpBinding によるエンドポイントの情報と、netTcpBidning によるエンドポイントの情報とが掲載されます。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_82.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="323" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_40.png" width="376" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;この WSDL ファイルを利用してサービス参照を行い、TCP/IP プロトコルでの呼び出しを行ってもよいのですが、ここではクライアント側アプリケーションの構成設定を手動で変更してみることにします。デスクトップにコピーしたコンソールアプリケーションの構成設定ファイル（ConsoleApplication1.exe.config）を、SvcConfigEditor.exe で開きます。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_84.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="311" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_41.png" width="382" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;現在は、basicHttpBinding を利用するようにエンドポイントが構成されているので、これを netTcpBinding を使うように変更してみます。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;バインドセクションに、netTcpBinding の新しいバインド構成を追加し、セキュリティの Mode を &amp;quot;None&amp;quot; に変更します。 &lt;/li&gt;

  &lt;li&gt;エンドポイント設定に戻り、エンドポイントのバインディングを変更します。 
    &lt;br /&gt;Address = &amp;quot;net.tcp://localhost:808/WebSite1/WcfService.svc&amp;quot; 

    &lt;br /&gt;Binding = &amp;quot;netTcpBinding&amp;quot; 

    &lt;br /&gt;BindingConfiguration = &amp;quot;NewBinding0&amp;quot; 

    &lt;br /&gt;Contract = &amp;quot;ServiceReference1.WcfService&amp;quot; （変更なし） &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;※ （参考） IIS 7 上で TCP/IP プロトコルを利用する場合、既定ではポート番号は 808 が利用されます（上記の Address 設定では &amp;quot;:808&amp;quot; を取り除いても動作します）。また、エンドポイントの名前はここでは変更していません（BasicHttpBinding_WcfService のままになっています）が、&amp;quot;NetTcpBinding_WcfService&amp;quot; などに変更していただいても構いません。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_86.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="319" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_42.png" width="392" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_88.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="263" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_43.png" width="393" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;以上の作業を終えてから、コマンドプロンプトよりこのアプリケーションを動作させると、TCP/IP プロトコルにて IIS 7 上にホストした WCF サービスが呼び出されるようになります。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_72.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="117" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part4.IIS_EEA5/image_thumb_35.png" width="415" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［まとめ］&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;非常に長いエントリになりましたが、本エントリの要点をまとめると以下のようになります。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Web サーバ上に WCF サービスをホストしたい場合には、.svc ファイルを利用する。 &lt;/li&gt;

  &lt;li&gt;.svc ファイルは、WCF ランタイムにおいてリスナの役割を果たすようになる。 &lt;/li&gt;

  &lt;li&gt;WCF ランタイムと ASP.NET ランタイムの統合モードは 2 種類ある。通常は、ASP.NET ランタイムをリスナとしてのみ利用するモードを利用する。 &lt;/li&gt;

  &lt;li&gt;.svc ファイルのディレクティブにて Factory 属性を利用して、手作業で WCF パイプラインを組み立てると、構成設定ファイルを使わない WCF サービスを開発できる。 &lt;/li&gt;

  &lt;li&gt;IIS 7 に搭載された WPAS （Windows Process Activation Service）を利用すると、IIS 7 上にホストした WCF サービスを TCP/IP や名前付きパイプのプロトコルで呼び出すことができるようになる。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;＃ ここまで読んでいただきましたら、もう一度 &lt;a href="http://blogs.msdn.com/nakama/archive/2008/09/18/part-1-wcf.aspx"&gt;Part.1&lt;/a&gt; の解説を読み返してみていただけると、その内容がより深く理解できるのではないかと思います。&lt;/p&gt;

&lt;p&gt;さて、全 4 回にわたって WCF （Windows Communication Foundation）の基本的な利用方法について解説してきましたが、「業務アプリケーション開発の用途だったら ASP.NET XML Web サービス（*.asmx）で十分じゃないの？」という感想を持たれる方もいらっしゃると思います。実際、素の SOAP over HTTP プロトコルのみで十分な場合には WCF を利用する必要性は薄く、ASP.NET XML Web サービスのお手軽開発の方が便利、ということも多いでしょう。しかし、WCF ランタイムにはマルチプロトコル対応などのメリットの他、今回のエントリでは紹介しきれていない I/F 型共有機能や WSDL ファイルを参照しない開発など様々な機能が提供されています。また、今後、マイクロソフトから提供される様々なテクノロジが、低水準では WCF ランタイムを利用するようになってくるため、今回の一連のエントリで解説した程度の内容は理解しておくことが望ましいと思います。&lt;/p&gt;

&lt;p&gt;WCF に関しては概念的に高度なランタイムであるため、非常にとっつきにくいものになっていますが、本エントリを元にして WCF に触れてみていただければ幸いです。&lt;/p&gt;

&lt;p&gt;＃ ...にしてもホントに長いエントリになってしまいました。WPAS の説明などが異様に長いですね。無理もないのですが。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8967839" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nakama/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Part 3. Hello World WCF クライアントの開発</title><link>http://blogs.msdn.com/nakama/archive/2008/10/02/part-3-hello-world-wcf.aspx</link><pubDate>Wed, 01 Oct 2008 18:32:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8961347</guid><dc:creator>nakama</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/nakama/comments/8961347.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nakama/commentrss.aspx?PostID=8961347</wfw:commentRss><description>&lt;p&gt;さて、前回のエントリでは Hello World メッセージを返す WCF サーバを作成し、SOAP over HTTP でリクエストを受け付けるエンドポイントを作成しました。引き続き本エントリでは、このサーバアプリケーションを呼び出すクライアントアプリケーションを作成していくことにします。&lt;/p&gt;  &lt;p&gt;クライアントアプリケーション作成時には、Part 2. で作成した WCF サーバを起動しておき、WSDL ファイルを入手できる状態にしておく必要があります。このため、以降の作業は Part.2 で作成した WCF サーバアプリケーションを起動した状態で作業を進めてください。&lt;/p&gt;  &lt;p&gt;※ Part 2. で完成させたソリューションは以下になります。&lt;/p&gt; &lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-1dcf7da3767124a8.skydrive.live.com/embedrowdetail.aspx/Codes/WCF|_Part2|_Completed.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="87" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb.png" width="315" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;本エントリでは、以下の作業を行います。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;WCF プロキシクラスの作成と利用 &lt;/li&gt;    &lt;li&gt;サービスログとトランスポートログ &lt;/li&gt;    &lt;li&gt;TCP/IP 通信への通信プロトコルの切り替え &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;では具体的な作業手順を以下に説明したいと思います。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 10］ WCF プロキシクラスの作成と利用&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;まず、Visual Studio 2008 を&lt;strong&gt;もう一つ起動し&lt;/strong&gt;、新規にコンソールアプリケーションをひとつ作成します（名前は &amp;quot;Sample01.Client&amp;quot; にしておきます）。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="279" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_1.png" width="348" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="251" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_2.png" width="349" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;font color="#808080"&gt;※ （参考） WCF サーバ／クライアントアプリケーションを開発する際に、&lt;strong&gt;サーバとクライアントのソリューションを分ける&lt;/strong&gt;ということに違和感を覚える方も多いと思います。&amp;#8230;&amp;#8230;が、その違和感は極めてごもっともだと思います；。本来、ソリューションは「ビルドの単位」なわけで、I/F 整合性を保ってビルドされる複数のプロジェクトは同一ソリューションに含まれるべきです。SOAP over HTTP は疎結合と言われますが、&lt;strong&gt;スマートクライアントなどの開発においてはサーバ／クライアントは実態として密結合&lt;/strong&gt;であることがほとんど。このため、XML Web サービスなどを使ってスマクラを作る場合には、サーバとクライアントは同一ソリューションに含める形で作るべきだと私は考えています。ところが WCF での開発の場合、サーバ側のアプリケーションがちゃんとビルド＋実行できないと、MEX エンドポイントが公開できず、クライアント側でプロキシクラスを手軽に作ることができないという問題があり、サーバ／クライアントのソリューションを分けて作業しないと、恐ろしく開発作業が面倒になります（実際に一度やってみるとよいかも．．．．かなり苦労します）。このため、（論理的には不適切だと思うのであまりお薦めしたくはないのですが開発の利便性を優先させて）、サーバ／クライアントをソリューションとして分けて開発する、という方法で説明しています。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;作成したら、ここに WCF サービスを呼び出すためのプロキシクラスを作成します。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ソリューションエクスプローラのコンソールアプリケーションプロジェクトを右クリックし、「サービス参照の追加」を選択します。 &lt;/li&gt;    &lt;li&gt;アドレス欄に、MEX エンドポイントの URL を打ち込み、移動ボタンを押します。      &lt;br /&gt;（手順通りに作業している場合は、&lt;a href="http://localhost:8000/Sample01.Server/WcfService/mex"&gt;http://localhost:8000/Sample01.Server/WcfService/mex&lt;/a&gt; という名前にしているはずです。） &lt;/li&gt;    &lt;li&gt;正しく WSDL ファイルが入手できると、下図のように WCF サービスの内容が表示されます。 &lt;/li&gt;    &lt;li&gt;さらに必要に応じて詳細設定を行いますが、ここでは特になにもせずに OK ボタンを押下します。（※ 例えば、既定では WCF のプロキシクラスが作成されますが、ASP.NET XML Web サービスのプロキシクラスを作成する場合には詳細設定からオプションを指定します。） &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="331" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_3.png" width="346" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;以上の作業により、プロキシクラスが作成されます。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="316" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_4.png" width="259" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;作成されたプロキシクラスは、以下のようなコードでインスタンス化して利用することができます。&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Sample01.Client&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Program&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;             ServiceReference1.WcfServiceClient proxy = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceReference1.WcfServiceClient();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; ret = proxy.GetMessage(&lt;span style="color: #006080"&gt;&amp;quot;Nobuyuki&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;             proxy.Close();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;             Console.WriteLine(ret);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;※ なお、コード中でプロキシクラスを作成・利用した後に &amp;quot;.Close()&amp;quot; メソッドを呼び出してプロキシを閉じていますが、&lt;strong&gt;&lt;font color="#ff0000"&gt;WCF を使う場合には、この .Close() 処理のコードを記述するクセをつけてください&lt;/font&gt;&lt;/strong&gt;。単純な SOAP over HTTP 呼び出しなどでは、「単発のメソッド呼び出し」で処理が終了するため、.Close() 処理は不要ですが、例えば WS-ReliableMessaging や WS-Security などを利用している場合には、サーバとクライアント間で論理セッションが張られていることがあります。このため、.Close() 処理によりこうした論理セッションを解放してやらないと、サーバ／クライアントそれぞれでリソースリークとなることがあります。&lt;/p&gt;

&lt;p&gt;実行すると、WCF サーバが呼び出され、以下のように Hello World メッセージが表示されます。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="88" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_5.png" width="483" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;ここで、クライアント側のソリューション（Sample01.Client）内にある app.config ファイルを、テキストエディタや SvcConfigEditor で開いてみてください。&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;?xml version=&lt;span style="color: #006080"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding=&lt;span style="color: #006080"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &amp;lt;configuration&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;     &amp;lt;system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &amp;lt;bindings&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;             &amp;lt;basicHttpBinding&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;                 &amp;lt;binding name=&lt;span style="color: #006080"&gt;&amp;quot;BasicHttpBinding_WcfService&amp;quot;&lt;/span&gt; closeTimeout=&lt;span style="color: #006080"&gt;&amp;quot;00:01:00&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;                     openTimeout=&lt;span style="color: #006080"&gt;&amp;quot;00:01:00&amp;quot;&lt;/span&gt; receiveTimeout=&lt;span style="color: #006080"&gt;&amp;quot;00:10:00&amp;quot;&lt;/span&gt; sendTimeout=&lt;span style="color: #006080"&gt;&amp;quot;00:01:00&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;                     allowCookies=&lt;span style="color: #006080"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; bypassProxyOnLocal=&lt;span style="color: #006080"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; hostNameComparisonMode=&lt;span style="color: #006080"&gt;&amp;quot;StrongWildcard&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;                     maxBufferSize=&lt;span style="color: #006080"&gt;&amp;quot;65536&amp;quot;&lt;/span&gt; maxBufferPoolSize=&lt;span style="color: #006080"&gt;&amp;quot;524288&amp;quot;&lt;/span&gt; maxReceivedMessageSize=&lt;span style="color: #006080"&gt;&amp;quot;65536&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;                     messageEncoding=&lt;span style="color: #006080"&gt;&amp;quot;Text&amp;quot;&lt;/span&gt; textEncoding=&lt;span style="color: #006080"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt; transferMode=&lt;span style="color: #006080"&gt;&amp;quot;Buffered&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;                     useDefaultWebProxy=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;                     &amp;lt;readerQuotas maxDepth=&lt;span style="color: #006080"&gt;&amp;quot;32&amp;quot;&lt;/span&gt; maxStringContentLength=&lt;span style="color: #006080"&gt;&amp;quot;8192&amp;quot;&lt;/span&gt; maxArrayLength=&lt;span style="color: #006080"&gt;&amp;quot;16384&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;                         maxBytesPerRead=&lt;span style="color: #006080"&gt;&amp;quot;4096&amp;quot;&lt;/span&gt; maxNameTableCharCount=&lt;span style="color: #006080"&gt;&amp;quot;16384&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;                     &amp;lt;security mode=&lt;span style="color: #006080"&gt;&amp;quot;None&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;                         &amp;lt;transport clientCredentialType=&lt;span style="color: #006080"&gt;&amp;quot;None&amp;quot;&lt;/span&gt; proxyCredentialType=&lt;span style="color: #006080"&gt;&amp;quot;None&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;                             realm=&lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;                         &amp;lt;message clientCredentialType=&lt;span style="color: #006080"&gt;&amp;quot;UserName&amp;quot;&lt;/span&gt; algorithmSuite=&lt;span style="color: #006080"&gt;&amp;quot;Default&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;                     &amp;lt;/security&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;                 &amp;lt;/binding&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;             &amp;lt;/basicHttpBinding&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt;         &amp;lt;/bindings&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  22:&lt;/span&gt;         &amp;lt;client&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  23:&lt;/span&gt;             &amp;lt;endpoint address=&lt;span style="color: #006080"&gt;&amp;quot;http://localhost:8000/Sample01.Server/WcfService&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  24:&lt;/span&gt;                 binding=&lt;span style="color: #006080"&gt;&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt; bindingConfiguration=&lt;span style="color: #006080"&gt;&amp;quot;BasicHttpBinding_WcfService&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  25:&lt;/span&gt;                 contract=&lt;span style="color: #006080"&gt;&amp;quot;ServiceReference1.WcfService&amp;quot;&lt;/span&gt; name=&lt;span style="color: #006080"&gt;&amp;quot;BasicHttpBinding_WcfService&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  26:&lt;/span&gt;         &amp;lt;/client&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  27:&lt;/span&gt;     &amp;lt;/system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  28:&lt;/span&gt; &amp;lt;/configuration&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="331" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_6.png" width="495" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;この設定ファイルに書き出された内容の詳細は理解する必要はありませんが、以下の点に注目してください。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;サーバに比べるとかなり複雑な構成設定が記述されています。これはクライアント側の app.config ファイルには WCF ランタイムの既定の設定値による構成設定値も書き出されるためです。 &lt;/li&gt;

  &lt;li&gt;SvcConfigEditor でみると、「サービス」のセクションではなく、「クライアント」のセクションにエンドポイントの構成設定（A/B/C 情報）が書き出される形になっています。（大枠として A/B/C について設定しなければならない点は同一ですが、詳細な設定項目はサーバ側とクライアント側でかなり異なっています。） &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ちなみに、クライアント側の設定の中の重要な部分だけ抜粋すると、以下のようになります。記述するセクションは異なりますが、サーバ側の構成設定とクライアントの構成設定とが対称的な設定になっていることに着目してください。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;■ クライアント側の構成設定（の要点）&lt;/strong&gt;&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;?xml version=&lt;span style="color: #006080"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding=&lt;span style="color: #006080"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &amp;lt;configuration&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;     &amp;lt;system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &amp;lt;client&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;           &amp;lt;endpoint address=&lt;span style="color: #006080"&gt;&amp;quot;http://localhost:8000/Sample01.Server/WcfService&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;               binding=&lt;span style="color: #006080"&gt;&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt; contract=&lt;span style="color: #006080"&gt;&amp;quot;ServiceReference1.WcfService&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;         &amp;lt;/client&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;     &amp;lt;/system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt; &amp;lt;/configuration&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;■ サーバ側の構成設定（の要点）&lt;/strong&gt;&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;?xml version=&lt;span style="color: #006080"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding=&lt;span style="color: #006080"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &amp;lt;configuration&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;     &amp;lt;system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &amp;lt;services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;             &amp;lt;service name=&lt;span style="color: #006080"&gt;&amp;quot;Sample01.Server.WcfService&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;                 &amp;lt;endpoint address=&lt;span style="color: #006080"&gt;&amp;quot;http://localhost:8000/Sample01.Server/WcfService&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;                     binding=&lt;span style="color: #006080"&gt;&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt; contract=&lt;span style="color: #006080"&gt;&amp;quot;Sample01.Server.WcfService&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;             &amp;lt;/service&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;         &amp;lt;/services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;     &amp;lt;/system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt; &amp;lt;/configuration&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 11］ サービスログとトランスポートログ&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;さて、このままだと実際にサーバが呼び出されたか否かがわかりませんので、構成設定ファイルを書き替えて、ログファイルを取得してみることにします。&lt;/p&gt;

&lt;p&gt;まず、いったん WCF のサーバ側アプリケーションを停止し、サーバ側（Sample01.Server）のソリューション内にある app.config ファイルを SvcConfigEditor で開きます。次に、この中の「診断」（Diagnostics）セクションを開き、以下の設定作業を行います。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;構成ウィンドウ内の「診断」セクションの「メッセージログ」を有効化する。 &lt;/li&gt;

  &lt;li&gt;メッセージログの設定項目として現れる「ログ記録レベルとして、「間違った形式のメッセージ」「サービスメッセージ」「トランスポートメッセージ」の 3 つを有効化する。 &lt;/li&gt;

  &lt;li&gt;構成ウィンドウ内のさらに「診断」セクションの下の「メッセージログ」の項目を開き、&amp;quot;LogEntireMessage&amp;quot; プロパティを &amp;quot;True&amp;quot; に変更する。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_18.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="270" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_8.png" width="403" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_16.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="104" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_7.png" width="148" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_20.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="271" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_9.png" width="405" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;通常は以上の作業でおしまいですが（これにより C:\Users\nakama\Documents\Visual Studio 2008\Projects\Sample01.Server\Sample01.Server\App_messages.svclog などにログファイルが出力されるようになる）、ここではコンソール画面上にもログデータが出力されるようにしてみます。追加で以下の作業を行ってみてください。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;リスナセクションに、新しいリスナをひとつ追加する。 &lt;/li&gt;

  &lt;li&gt;&amp;quot;TypeName&amp;quot; プロパティを、System.Diagnostics.Console.TraceListener に変更する。（&amp;quot;...&amp;quot; ボタンから選択すると簡単。選択すると、&amp;quot;System.Diagnostics.ConsoleTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot; が設定される。） &lt;/li&gt;

  &lt;li&gt;ソースとして &amp;quot;System.ServiceModel.MessageLogging&amp;quot; を追加する。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_26.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="276" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_12.png" width="412" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_28.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="241" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_13.png" width="353" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;以上の作業を行ったら、実際に WCF サービスを起動し、ログファイルを取得してみます。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;まず、既存のログファイルが残っている場合はこれを削除します。（Visual Studio のソリューションエクスプローラ上で、「すべてのファイルを表示」オプションを入れ、そこに現れる &amp;quot;App_messages.svclog&amp;quot; を削除するとラク。） &lt;/li&gt;

  &lt;li&gt;WCF サーバアプリケーション（Sample01.Server）を起動します。 &lt;/li&gt;

  &lt;li&gt;WCF クライアントアプリケーション（Sample01.Client）を実行します。（サーバ側のコンソール上にログが出力されることを確認してください。） &lt;/li&gt;

  &lt;li&gt;呼び出しが終了したら、サーバアプリケーション上でリターンキーなどを押下し、穏やかに終了させてください。（＝Ctrl+C などで強制終了させないでください。（host.Close() 処理により、ログファイルがクローズされるため。）） &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_30.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="219" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_14.png" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_24.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="271" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_11.png" width="376" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;以上の作業により、App_messages.svclog ログファイルが出力されます。このファイルの中身は XML 形式で出力されたデータファイルであるため、このままではとても読み取れません。このため、サービストレースビューアというツールで読み取ります。（プログラムメニュー内の Microsoft Windows SDK 6.0A 下にあります）&lt;/p&gt;

&lt;p&gt;※ このツールについても、SvcConfigEditor ツールなどと同様に、Visual Studio に登録しておくと便利です。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_32.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="330" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_15.png" width="451" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;実際に出力されたログファイルの内容を確認すると、&lt;strong&gt;1 回のリクエストしか行っていないにもかかわらず、4 つのログが出力されています&lt;/strong&gt;。これは、以下のような理由によります。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;先に、サービスレベルとトランスポートレベルのログを出力するように設定しましたが、これは下図のように、WCF パイプラインの入口と出口のところそれぞれについてロギングを行う、という設定になります。 &lt;/li&gt;

  &lt;li&gt;メッセージが入ってくる流れと、レスポンスが出ていく流れそれぞれでロギングが行われるので、都合 4 つのログが出力されます。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_38.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="223" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_18.png" width="348" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;なお、今回のサンプルでは、サービスレベルとトランスポートレベルのログがほとんど同じになっています。しかし、WS-Security などを使う場合には、2 つの場所で記録される内容がかなり変わります。（トランスポートレベルのメッセージは暗号化されており、サービスレベルのメッセージは暗号化されていない） WS-Security などを使う場合には、実際にログを取って確認してみるとよいでしょう。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 12］ TCP/IP 通信への通信プロトコルの切り替え（サーバ側）&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;では最後に、WCF ランタイムの大きな特徴の一つである、マルチプロトコル対応（同一通信特性を持つ通信プロトコルへの切り替え）を示してみたいと思います。ここでは、SOAP over HTTP 通信を、TCP/IP 通信に取り替えてみたいと思います。作業は以下の流れで行います。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;サーバ側のバインディングの取り換え（basicHttpBinding から netTcpBinding への取り換え） &lt;/li&gt;

  &lt;li&gt;クライアント側でのプロキシクラスの作り直し &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ではまず、サーバ側のバインディングの取り換えを行います。サーバ側アプリケーションを停止させた上で、app.config ファイルを SvcConfigEditor で開き、以下の作業を行います。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;サービスのエンドポイントを開き、Binding を netTcpBinding に取り替えます。 &lt;/li&gt;

  &lt;li&gt;さらに、Address を net.tcp://localhost:8001/Sample01.Server/WcfService に切り替えます。（※ ポート番号は 8001 番などにずらしてください。これは、ポート 8000 では HTTP による MEX エンドポイントの公開を行っており、同一のポート番号に異なるプロトコルを割り当てることができないためです。） &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_40.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="294" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_19.png" width="369" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;なお、netTcpBinding では、既定でトランスポートレベル暗号化と呼ばれる暗号化処理が行われるようになっていますが、これは Windows 統合認証ベースで動作するため、ネットワーク環境によってはうまく動かないことがあります。そこで、今回は簡単のために暗号化を off にすることにします。以下の作業を行ってください。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;「バインド」セクションから「新しいバインド構成」を選択し、netTcpBinding の新しい構成設定を追加する。 &lt;/li&gt;

  &lt;li&gt;&amp;quot;Name&amp;quot; プロパティを、&amp;quot;NewBinding0&amp;quot; から適当な名前（例えば &amp;quot;WcfService_NetTcpBinding&amp;quot; などのわかりやすい名前）に変更しておく。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_44.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="299" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_21.png" width="375" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;セキュリティタブを開き、セキュリティモードを &amp;quot;Transport&amp;quot; から &amp;quot;None&amp;quot; に変更する。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_46.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="302" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_22.png" width="379" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;最後に、「サービス」セクションのエンドポイント構成設定に戻り、今、作成したバインド構成を BindingConfiguration として割り当てる。（&lt;strong&gt;この作業も忘れがちなので注意してください&lt;/strong&gt;。） &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_48.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="306" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_23.png" width="383" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;以上の作業が済んだら、サーバアプリケーションを起動してください。（※ Windows Firewall にひっかかると思いますので、適宜許可を与えてください。）&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_50.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="80" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_24.png" width="437" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;見た目は特に変わっていませんが、このサーバは以下の 3 つのプロトコルを受け付けるようになっています。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ポート 8001 番上で、TCP/IP 通信による WCF サービス呼び出しを受け付ける。 
    &lt;br /&gt;（URL は net.tcp://localhost:8001/Sample01.Server/WcfService） &lt;/li&gt;

  &lt;li&gt;ポート 8000 番上で、HTTP 通信による WSDL ファイルの取り出し要求を受け付ける。（MEX エンドポイント） 
    &lt;br /&gt;（URL は &lt;a href="http://localhost:8000/Sample01.Server/WcfService/mex"&gt;http://localhost:8000/Sample01.Server/WcfService/mex&lt;/a&gt;） &lt;/li&gt;

  &lt;li&gt;ポート 8000 番上で、HTTP 通信によるヘルプファイルの取り出し要求を受け付ける。 
    &lt;br /&gt;（URL は &lt;a href="http://localhost:8000/Sample01.Server/WcfService/help"&gt;http://localhost:8000/Sample01.Server/WcfService/help&lt;/a&gt;） &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;なお、ポート 8000 番上の MEX エンドポイントは、HTTP 通信による WSDL ファイル取り出し要求を受け付けますが、そこで公開されている情報は &lt;strong&gt;TCP/IP 通信を受け付けるエンドポイントの情報&lt;/strong&gt;であることに注意してください。 （実際に WSDL ファイルを見てみるとわかります。）&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_52.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="246" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_25.png" width="464" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;ご参考までに、ここまでの作業で作成された app.config（サーバ側）を示します。&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;?xml version=&lt;span style="color: #006080"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding=&lt;span style="color: #006080"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &amp;lt;configuration&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;     &amp;lt;system.diagnostics&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &amp;lt;sources&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;             &amp;lt;source name=&lt;span style="color: #006080"&gt;&amp;quot;System.ServiceModel.MessageLogging&amp;quot;&lt;/span&gt; switchValue=&lt;span style="color: #006080"&gt;&amp;quot;Warning, ActivityTracing&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;                 &amp;lt;listeners&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;                     &amp;lt;add type=&lt;span style="color: #006080"&gt;&amp;quot;System.Diagnostics.DefaultTraceListener&amp;quot;&lt;/span&gt; name=&lt;span style="color: #006080"&gt;&amp;quot;Default&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;                         &amp;lt;filter type=&lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;                     &amp;lt;/add&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;                     &amp;lt;add name=&lt;span style="color: #006080"&gt;&amp;quot;ServiceModelMessageLoggingListener&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;                         &amp;lt;filter type=&lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;                     &amp;lt;/add&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;                     &amp;lt;add name=&lt;span style="color: #006080"&gt;&amp;quot;NewListener&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;                         &amp;lt;filter type=&lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;                     &amp;lt;/add&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;                 &amp;lt;/listeners&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;             &amp;lt;/source&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;         &amp;lt;/sources&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;         &amp;lt;sharedListeners&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;             &amp;lt;add initializeData=&lt;span style="color: #006080"&gt;&amp;quot;C:\Users\nakama\Documents\Visual Studio 2008\Projects\Sample01.Server\Sample01.Server\App_messages.svclog&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt;                 type=&lt;span style="color: #006080"&gt;&amp;quot;System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  22:&lt;/span&gt;                 name=&lt;span style="color: #006080"&gt;&amp;quot;ServiceModelMessageLoggingListener&amp;quot;&lt;/span&gt; traceOutputOptions=&lt;span style="color: #006080"&gt;&amp;quot;Timestamp&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  23:&lt;/span&gt;                 &amp;lt;filter type=&lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  24:&lt;/span&gt;             &amp;lt;/add&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  25:&lt;/span&gt;             &amp;lt;add type=&lt;span style="color: #006080"&gt;&amp;quot;System.Diagnostics.ConsoleTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  26:&lt;/span&gt;                 name=&lt;span style="color: #006080"&gt;&amp;quot;NewListener&amp;quot;&lt;/span&gt; traceOutputOptions=&lt;span style="color: #006080"&gt;&amp;quot;LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  27:&lt;/span&gt;                 &amp;lt;filter type=&lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  28:&lt;/span&gt;             &amp;lt;/add&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  29:&lt;/span&gt;         &amp;lt;/sharedListeners&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  30:&lt;/span&gt;     &amp;lt;/system.diagnostics&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  31:&lt;/span&gt;     &amp;lt;system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  32:&lt;/span&gt;         &amp;lt;bindings&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  33:&lt;/span&gt;             &amp;lt;netTcpBinding&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  34:&lt;/span&gt;                 &amp;lt;binding name=&lt;span style="color: #006080"&gt;&amp;quot;WcfService_NetTcpBinding&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  35:&lt;/span&gt;                     &amp;lt;security mode=&lt;span style="color: #006080"&gt;&amp;quot;None&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  36:&lt;/span&gt;                 &amp;lt;/binding&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  37:&lt;/span&gt;             &amp;lt;/netTcpBinding&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  38:&lt;/span&gt;         &amp;lt;/bindings&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  39:&lt;/span&gt;         &amp;lt;diagnostics&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  40:&lt;/span&gt;             &amp;lt;messageLogging logEntireMessage=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; logMalformedMessages=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  41:&lt;/span&gt;                 logMessagesAtServiceLevel=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; logMessagesAtTransportLevel=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  42:&lt;/span&gt;         &amp;lt;/diagnostics&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  43:&lt;/span&gt;         &amp;lt;behaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  44:&lt;/span&gt;             &amp;lt;serviceBehaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  45:&lt;/span&gt;                 &amp;lt;behavior name=&lt;span style="color: #006080"&gt;&amp;quot;WcfService_ServiceBehavior&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  46:&lt;/span&gt;                     &amp;lt;serviceDebug httpHelpPageUrl=&lt;span style="color: #006080"&gt;&amp;quot;http://localhost:8000/Sample01.Server/WcfService/help&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  47:&lt;/span&gt;                         includeExceptionDetailInFaults=&lt;span style="color: #006080"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  48:&lt;/span&gt;                     &amp;lt;serviceMetadata httpGetEnabled=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; httpGetUrl=&lt;span style="color: #006080"&gt;&amp;quot;http://localhost:8000/Sample01.Server/WcfService/mex&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  49:&lt;/span&gt;                 &amp;lt;/behavior&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  50:&lt;/span&gt;             &amp;lt;/serviceBehaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  51:&lt;/span&gt;         &amp;lt;/behaviors&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  52:&lt;/span&gt;         &amp;lt;services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  53:&lt;/span&gt;             &amp;lt;service behaviorConfiguration=&lt;span style="color: #006080"&gt;&amp;quot;WcfService_ServiceBehavior&amp;quot;&lt;/span&gt; name=&lt;span style="color: #006080"&gt;&amp;quot;Sample01.Server.WcfService&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  54:&lt;/span&gt;                 &amp;lt;endpoint address=&lt;span style="color: #006080"&gt;&amp;quot;net.tcp://localhost:8001/Sample01.Server/WcfService&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  55:&lt;/span&gt;                     binding=&lt;span style="color: #006080"&gt;&amp;quot;netTcpBinding&amp;quot;&lt;/span&gt; bindingConfiguration=&lt;span style="color: #006080"&gt;&amp;quot;WcfService_NetTcpBinding&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  56:&lt;/span&gt;                     contract=&lt;span style="color: #006080"&gt;&amp;quot;Sample01.Server.WcfService&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  57:&lt;/span&gt;             &amp;lt;/service&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  58:&lt;/span&gt;         &amp;lt;/services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  59:&lt;/span&gt;     &amp;lt;/system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  60:&lt;/span&gt; &amp;lt;/configuration&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 13］ TCP/IP 通信への通信プロトコルの切り替え（クライアント側）&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;次に、今度はクライアント側を TCP/IP 通信に切り替えます。この作業は簡単で、サーバ側アプリケーションを起動した状態（＝WSDL ファイルを取得可能な状態）にしたままで、Visual Studio のサービス参照を更新するだけです。これにより、サーバ側から最新の WSDL ファイルが入手され、プロキシクラスがリフレッシュされ、TCP/IP 通信による WCF サービス呼び出しを行うことができるようになります。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_54.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="210" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_26.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_56.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="80" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_27.png" width="436" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;※ 見た目は何も変わっていませんが、TCP/IP 通信によるサーバ呼び出しが行われています。&lt;/p&gt;

&lt;p&gt;なお TCP/IP 通信の場合には、サーバ呼び出しはバイナリエンコード方式（SOAP メッセージが、XML 形式ではなくバイナリ形式にエンコードされる）が利用されています。これについての詳細は Part.1 で解説していますので、そちらを読み返してみてください。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 14（おまけ）］ HTTP/Binary 通信を利用する方法&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;最後におまけで、CustomBinding を利用して、バイナリエンコード方式と HTTP 通信を組み合わせる方法についても紹介しておきます。&lt;/p&gt;

&lt;p&gt;ASP.NET XML Web サービスや .NET Remoting に関してよく聞く要望の一つに、「HTTP 通信上で、バイナリエンコードされたメッセージ形式が利用できないか？」というものがありました。ASP.NET XML Web サービスは、SOAP over HTTP に最適化されて実装されている、つまりメッセージ形式は XML シリアル化された SOAP メッセージに限定されていたため、この要望にこたえることができませんでしたが、WCF の場合、CustomBinding を利用することで、バイナリエンコードされたメッセージを HTTP プロトコルでやり取りすることができるようになっています。&lt;/p&gt;

&lt;p&gt;具体的には、以下のような作業を行います。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;新しいバインド構成として、CustomBinding ベースのバインド構成を作成する。 &lt;/li&gt;

  &lt;li&gt;名前を &amp;quot;HttpBinaryBinding&amp;quot; などに変更する。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_58.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="282" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_28.png" width="421" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;この画面の下側に現れる「バインド要素の拡張の位置」というのは、これは簡単にいえば WCF パイプラインの内部に含まれるモジュール（これを BindingElement と呼びます）の一覧になります。通常、basicHttpBinding や netTcpBinding などを使う場合には、このモジュールセットは自動的に用意されるのですが、CustomBinding を使うと、この内部構成を自分で決定できるため、バイナリエンコード方式と HTTP プロトコルを組み合わせる、といったことも可能になります。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;textMessageEncoding を削除し、binaryMessageEncoding に変更する。 &lt;/li&gt;

  &lt;li&gt;サービスエンドポイントの設定を変更し、Address を &lt;a href="http://localhost:8000/Sample01.Server/WcfService"&gt;http://localhost:8000/Sample01.Server/WcfService&lt;/a&gt; に、Binding を CustomBinding に、BindingConfiguration を HttpBinaryBinding （さきほど作成したバインド構成）に変更する。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_60.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="284" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_29.png" width="424" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_62.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="284" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part3.WCF_B61D/image_thumb_30.png" width="424" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;以上の作業により、サーバ側で HTTP 通信＋バイナリエンコード方式を使った WCF サービスを作成することができたので、あとはクライアント側のサービス参照を更新して使ってみてください。（見た目には変わったことがわかりませんが） HTTP/Binary ベースで通信する WCF サービスが作成できます。（余力のある方はパケットキャプチャなどでみてみるとよいと思います。）&lt;/p&gt;

&lt;p&gt;※ 最終的に完成したソリューションは以下になります。&lt;/p&gt;
&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-1dcf7da3767124a8.skydrive.live.com/embedrowdetail.aspx/Codes/WCF|_Part3|_Completed.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［このエントリのまとめ］&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;というわけでいろいろ解説してきましたが、WCF を利用すると、以下のようなことが簡単にできるようになります。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;サービス参照を作成することで、WCF サービス呼び出しのためのプロキシクラスを簡単に作ることができる。 &lt;/li&gt;

  &lt;li&gt;構成設定ファイルを書きかえることで、比較的簡単にログファイルを出力できる。 &lt;/li&gt;

  &lt;li&gt;サーバ側の構成設定を変更することで、同一通信特性を持つバインディングへの変更が容易にできる。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;従来は非常に難しかった、TCP/IP 通信や名前付きパイプ通信を行うサーバアプリケーションも、比較的簡単に開発できることをご理解いただければ幸いです。そして、次回の Part.4 の WCF 最終回では、IIS 上でこの WCF を利用する方法について解説をしたいと思います。&lt;/p&gt;

&lt;p&gt;&amp;#8230;&amp;#8230;ふう、というわけで Part 3 書き終わりです。書き終わってから思いましたが、ロギングの話はちょっと余分だったかもしれませんね；。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8961347" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nakama/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Part 2. Hello World WCF サーバの開発</title><link>http://blogs.msdn.com/nakama/archive/2008/09/25/part-2-hello-world-wcf.aspx</link><pubDate>Thu, 25 Sep 2008 08:49:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8958319</guid><dc:creator>nakama</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nakama/comments/8958319.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nakama/commentrss.aspx?PostID=8958319</wfw:commentRss><description>&lt;p&gt;では、前回のエントリに引き続いて、今回は Hello World メッセージを返す WCF サーバの開発を行ってみたいと思います。WCF のランタイムはポータブル（いろんな場所に持っていける）に設計されているのが面白いところで、IIS 上はもちろんのこと、コンソールアプリケーションや Windows サービスなどにも簡単にホストすることができるように設計されています。が、いきなりそれらの話をするも大変なので、まずはコンソールアプリケーションを使って、SOAP over HTTP のリクエストを受け付ける Hello World WCF サーバを開発する、という作業を行ってみたいと思います。&lt;/p&gt;  &lt;p&gt;・WCF サービスの作成    &lt;br /&gt;・WCF ホストプロセスの作成     &lt;br /&gt;・構成設定ファイルの作成     &lt;br /&gt;・サービスビヘイビアによる MEX (Metadata Exchange) の作成    &lt;br /&gt;・WCF テストツールによる WCF サーバの動作確認&lt;/p&gt;  &lt;p&gt;なお、本サンプルでは &lt;strong&gt;Visual Studio 2008 に用意されている WCF ライブラリのプロジェクトテンプレートなどは一切使いません&lt;/strong&gt;。これは以下の理由によります。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;テンプレートやウィザードを使ってしまうと何をやってるのかわからくなる。&lt;/li&gt;    &lt;li&gt;Application Architecture for .NET などの考え方に基づいて、通信インタフェース（SI）を分離するという設計モデルを取る場合、SI 内部でさらにインタフェースを分離することにはあまり意味がない。&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;簡単にいえば、WCF ライブラリのプロジェクトテンプレートは、従来の考え方（ビジネスロジックが直接通信機能を持つ）に近い設計モデルに基づいて作られているものだと思います（と自分は解釈している）。なので、ここではあえてプロジェクトテンプレートは利用せずに、WCF サーバを作ってみたいと思います。&lt;/p&gt;  &lt;p&gt;※ 以下の作業を Windows Vista や Windows 2008 で行う場合には、Visual Studio 2008 を管理者特権で動作させるようにしてください。VS2008 を管理者特権で動作させるためには、以下の 2 つのファイルのプロパティとして、管理者で動作させる設定を付与してください。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe&lt;/li&gt;    &lt;li&gt;C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VSLauncher.exe&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 4］ WCF サービスの作成&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;まず、Visual Studio 2008 のコンソールアプリケーションプロジェクトを使って、WCF サーバとなるアプリケーションを作成します。ここでは、名前を &amp;quot;Sample01.Server&amp;quot; としておきましょう。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="196" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;作成されたプロジェクトに対して、以下の作業を行います。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;System.ServiceModel.dll ファイルに参照設定をかける。&lt;/li&gt;    &lt;li&gt;WcfService.cs クラスファイルを追加し、WCF サービスのコードを記述する。（System.ServiceModel 名前空間に対する using 設定も忘れずに。）&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="173" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="314" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_3.png" width="390" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.ServiceModel;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Sample01.Server&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     [ServiceContract]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; WcfService&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;         [OperationContract]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; GetMessage(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; name)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;&amp;quot;Hello World, &amp;quot;&lt;/span&gt; + name;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 5］ WCF ホストプロセスの作成&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;以上で WCF サービスの作成（実際に処理を行うクラス）は終わりですが、このサービスを動作させるためには、サービスをホストするためのプロセス（ホストプロセス）が必要になります。このため、コンソールアプリケーションの Program.cs ファイルの Main() 関数に、WCF ランタイム起動のためのコードを記述します。&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.ServiceModel;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Sample01.Server&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Program&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (ServiceHost host = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceHost(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(WcfService)))&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;             {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;                 host.Open();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;                 Console.WriteLine(&lt;span style="color: #006080"&gt;&amp;quot;WCF サーバを起動しました。&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;                 Console.ReadLine();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;                 host.Close();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;             }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  22:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;1 つのサービスホストで起動できる WCF サービス（の実装クラス）は 1 つだけです。ですので、もし WCF サービスの実装クラスが複数ある場合には、以下のように記述します。（ここではコードを見やすくするために try-finally を省略してます）&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; ServiceHost host1 = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceHost(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(WcfService1));&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; ServiceHost host2 = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceHost(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(WcfService2));&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; host1.Open();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; host2.Open();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; Console.WriteLine(&lt;span style="color: #006080"&gt;&amp;quot;WCF サーバを起動しました。&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt; Console.ReadLine();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; host1.Close();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt; host2.Close();&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;以上で WCF サービスとホストプロセスの作成はおしまいです。ですが、実際に Ctrl + F5 キーでこれを起動してみると、例外が発生して動作しません。これは、サービスホストが WCF パイプライン（エンドポイント、サービス要求を受け付ける受け口）を作成するために必要な構成設定が準備されていないことによるものです。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="291" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_4.png" width="400" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 6］ 構成設定ファイルの作成&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;プロジェクトに app.config ファイルを追加し、ここに WCF エンドポイントに関する構成設定を記述します。構成設定ファイルは手で書くこともできますが、かなり大変なのでツールを使うことをお勧めします。以下の手順で作業を行ってください。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;プロジェクトに app.config ファイルを追加する。&lt;/li&gt;

  &lt;li&gt;スタートメニュー内の Microsoft Windows SDK v6.0a &amp;#8594; Tools 内にある、「サービス構成エディタ」を起動する。&lt;/li&gt;

  &lt;li&gt;ファイル &amp;#8594; 開く &amp;#8594; 構成ファイルを選択し、先ほど追加した app.config ファイル（C:\Users\nakama\Documents\Visual Studio 2008\Projects\Sample01.Server\Sample01.Server\app.config）を開く。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;これにより、エンドポイントの構成設定ファイルを、ツールを使って書くことができるようになります。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_14.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="247" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_6.png" width="369" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;なお、サービス構成エディタツールを毎回、スタートメニューから開くのは大変です。なので、VS2008 上にツールとして登録してしまうと便利です。具体的には以下のようにします。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;app.config ファイルを右クリックし、「ファイルを開くアプリケーションの選択」を選ぶ。&lt;/li&gt;

  &lt;li&gt;ここに SvcConfigEditor.exe をプログラムとして追加して使う。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_16.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_7.png" width="205" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_18.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="112" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_8.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;※ サービス構成エディタは OS や Visual Studio のバージョンによって、インストール先が異なる場合がありますので注意してください。VS2008 の場合には C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\SvcConfigEditor.exe にあります。&lt;/p&gt;

&lt;p&gt;ここに、エンドポイントの構成設定情報を書いていきます。一応、ウィザードもあるのですが、ここでは敢えてまず手で指定していってみます。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;左側の「構成」ペイン内の「サービス」フォルダを右クリックし、新しいサービスを追加。&lt;/li&gt;

  &lt;li&gt;サービスの名前として、&amp;quot;Sample01.Server.WcfService&amp;quot; （WCF サービス実装クラスのフルネーム）を指定。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_22.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="270" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_10.png" width="403" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;その下側にある「エンドポイント」フォルダから、「新しいサービスエンドポイント」を指定して、エンドポイントを追加する。&lt;/li&gt;

  &lt;li&gt;このエンドポイントに、Adress, Binding, Contract の 3 つを指定する。（後述）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_24.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="272" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_11.png" width="406" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;エンドポイントに指定しなければならない要素は、A/B/C の 3 つです。指定に関しては、以下の点に気をつけてください。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;A (Address) について&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;サーバ側のリスナアドレスを指定します。SOAP over HTTP を使う場合には、http:// ～ を指定することになります。&lt;/li&gt;

  &lt;li&gt;URL のアドレス部分は、一意であれば自由に設定できます。たとえば以下のようなアドレスを指定することができます。
    &lt;br /&gt;&lt;a href="http://localhost:8000/Sample01.Server/WcfService"&gt;http://localhost:8000/Sample01.Server/WcfService&lt;/a&gt;&amp;#160; (今回はこれを使いました)

    &lt;br /&gt;&lt;a href="http://localhost:8235/hogehoge"&gt;http://localhost:8235/hogehoge&lt;/a&gt; (ポート番号ずらしたり、ぜんぜん関係ない名前を使っても OK)

    &lt;br /&gt;&lt;a href="http://localhost:8000/WcfService.wcf"&gt;http://localhost:8000/WcfService.wcf&lt;/a&gt; (拡張子っぽいものをつけても OK)

    &lt;br /&gt;&lt;a href="http://localhost:8023/Sample01/Server/WcfService"&gt;http://localhost:8023/Sample01/Server/WcfService&lt;/a&gt; (スラッシュなどで区切ってもよい)

    &lt;br /&gt;&lt;a href="http://localhost:9732/WcfService.Server.Sample01"&gt;http://localhost:9732/WcfService.Server.Sample01&lt;/a&gt; (ピリオドでつないでもよい)

    &lt;br /&gt;要するに、&lt;strong&gt;他の WCF のエンドポイントとアドレスがぶつからなければ何を指定しても OK&lt;/strong&gt;、ということです。（が、エキセントリックな名前をつけてもあんまり意味がないので今回は一番上にしてきおきました。）&lt;/li&gt;

  &lt;li&gt;なお、TCP/IP の場合には net.tcp:// ～、名前付きパイプの場合には net.pipe:// ～ という名前で URL を指定することになります。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;B (Binding) について&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;いろんな種類の Binding が利用できますが、今回は単純な SOAP over HTTP を使うので、basicHttpBinding を使ってください。&lt;/li&gt;

  &lt;li&gt;その他の Binding については、Part.1 に簡単に紹介してありますのでそちらをご参照を。Part. 3 でも多少紹介します。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;C (Contract) について&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;[ServiceContract] を付与した I/F を、フルネームで指定します。&lt;/li&gt;

  &lt;li&gt;今回のサンプルのように、サービス実装クラスに直接 [ServiceContract] 属性を付与している場合には、サービス実装クラスの名前を指定してください。インタフェースを分離して定義している場合には、そちらを指定します。&lt;/li&gt;

  &lt;li&gt;なお、Contract を指定しなければならないのは、WCF サービス実装クラスが複数の I/F を持っているケースを想定しています。（通常、ひとつの WCF サービス実装クラスが持つ外部公開 I/F は 1 つですが、インタフェースを分離して定義した場合には、ひとつの WCF サービス実装クラスが複数の [ServiceContract] 属性つきインタフェースを継承している場合があります。）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;以上が終了したら、ファイルをセーブし、Visual Studio に戻ります。ツールから app.config ファイルが書き出され、今、記述した構成設定が画面上に現われます。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_26.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="277" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_12.png" width="344" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;?xml version=&lt;span style="color: #006080"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding=&lt;span style="color: #006080"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &amp;lt;configuration&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;     &amp;lt;system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &amp;lt;services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;             &amp;lt;service name=&lt;span style="color: #006080"&gt;&amp;quot;Sample01.Server.WcfService&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;                 &amp;lt;endpoint address=&lt;span style="color: #006080"&gt;&amp;quot;http://localhost:8000/Sample01.Server/WcfService&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;                     binding=&lt;span style="color: #006080"&gt;&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt; contract=&lt;span style="color: #006080"&gt;&amp;quot;Sample01.Server.WcfService&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;             &amp;lt;/service&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;         &amp;lt;/services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;     &amp;lt;/system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt; &amp;lt;/configuration&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;この状況でコンソールアプリケーションを実行すると、今度は問題なく WCF サーバが起動します。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_32.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="59" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_15.png" width="247" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;この WCF サーバは、&lt;a href="http://localhost:8000/Sample01.Server/WcfService"&gt;http://localhost:8000/Sample01.Server/WcfService&lt;/a&gt; というアドレスに対して HTTP で送信した SOAP メッセージを処理できるようになっています。しかし、&lt;strong&gt;ASP.NET XML Web サービス（*.asmx）とは異なり、ブラウザなどでこのアドレスを呼び出すことはできません&lt;/strong&gt;。呼び出してみると、以下のように HTTP 400 エラー（要求形式がおかしい）が発生します。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_34.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="205" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_16.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;※ ASP.NET XML Web サービスにおいて、*.asmx ファイルをブラウザから呼び出すことができたのは、これは *.asmx が、SOAP 形式ではないリクエスト（具体的には HTTP-GET や HTTP-POST と呼ばれる方式のリクエスト）を処理できるように作られていたからです。WCF ではこの挙動が厳格になっており、ここまでの設定だけでは、SOAP 形式以外のリクエストを一切処理することができません。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 7］ サービスビヘイビアによる MEX （MetadataExchange） の作成&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;また、現在のままではもう一つ困るポイントがあります。それは、クライアント側にプロキシクラスを作成することができない、という点です。クライアント側にプロキシクラスを作成するには、&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;サーバ側で WSDL ファイル（サービスの情報を記載した XML ファイル）を公開しておく。&lt;/li&gt;

  &lt;li&gt;これをクライアント側に取り込ませて、プロキシクラスを作成する。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という方法がもっとも簡単なのですが、現状のままでは WSDL ファイルが公開されていません。このため、サービスビヘイビアと呼ばれるものを利用して、WSDL ファイルを公開するようにします。&lt;/p&gt;

&lt;p&gt;サービスビヘイビアとは、簡単にいえば&lt;strong&gt;サーバ（サービスホスト）に追加するプラグイン型のパワーアップモジュール&lt;/strong&gt;で、このモジュールを追加することで、以下のようなことができるようになります。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;WSDL ファイルの自動作成と公開（serviceMetadata サービスビヘイビア）&lt;/li&gt;

  &lt;li&gt;デバッグ用の情報公開（serviceDebug サービスビヘイビア）&lt;/li&gt;

  &lt;li&gt;サーバの証明書やユーザのパスワード情報の管理機能（serviceCredentials サービスビヘイビア）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ここでは、serviceMetadata と serviceDebug をサーバに追加して、WCF サーバをパワーアップすることにします。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_36.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="182" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_17.png" width="376" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;具体的には以下の作業を行います。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;もし WCF サーバアプリケーション（さっきのコンソールアプリケーション）を動作させているのであればこれを停止する。&lt;/li&gt;

  &lt;li&gt;app.config ファイルを SvcConfigEditor.exe で開く。（すでに開いていればそのまま編集）&lt;/li&gt;

  &lt;li&gt;「構成」ペイン &amp;#8594; 「詳細設定」 &amp;#8594; 「サービス動作」 &amp;#8594; 「新しいサービス動作の構成」を選択して、サービスビヘイビア定義を作成。&lt;/li&gt;

  &lt;li&gt;まずサービス動作の名前を変更。（NewBehavior &amp;#8594; お好きな名前に。ここでは &amp;quot;WcfService_ServiceBehavior&amp;quot; にしました。）&lt;/li&gt;

  &lt;li&gt;次に、「動的要素の拡張の位置」のところから「追加」を選択し、serviceDebug と serviceMetadata を追加する。（訳語がもはや意味不明ですが、要するにサービスビヘイビアについて、拡張モジュールを追加して、それを入れる順番を指定してください、という意味です。正直、こういうものは無理に訳さない方がいい気がする．．．．）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_38.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="274" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_18.png" width="409" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;次に、各サービスビヘイビアモジュールのプロパティを設定します。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;serviceDebug モジュールについては、HttpHelpPageUrl に、ヘルプ情報を出力する URL を指定します。（&lt;a title="http://localhost:8000/Sample01.Server/WcfService" href="http://localhost:8000/Sample01.Server/WcfService/help"&gt;http://localhost:8000/Sample01.Server/WcfService/help&lt;/a&gt; など。）&lt;/li&gt;

  &lt;li&gt;servceMetadata モジュールについては、HttpGetEnabled を True に変更するとともに、HttpGetUrl に WSDL 情報を入手するための URL を指定します。（&lt;a title="http://localhost:8000/Sample01.Server/WcfService/mex" href="http://localhost:8000/Sample01.Server/WcfService/mex"&gt;http://localhost:8000/Sample01.Server/WcfService/mex&lt;/a&gt; など。）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_42.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="279" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_20.png" width="478" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_44.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="281" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_21.png" width="481" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;そして、最後に以下の作業を行います。（&lt;strong&gt;&lt;font color="#ff0000"&gt;この作業を忘れがちなので注意してください&lt;/font&gt;&lt;/strong&gt;。）&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;サービスセクションに戻り、BehaviorConfiguration として、先ほど作成したサービスビヘイビア構成設定を割り当てる。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_48.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="294" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_23.png" width="426" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;以上で設定作業はおしまいです。ファイルをセーブしてから WCF サーバを立ち上げなおしてみてください。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_50.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="78" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_24.png" width="428" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;見た目は何も変わっていませんが、Web ブラウザを起動し、以下の 2 つの URL を呼び出してみてください。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a title="http://localhost:8000/Sample01.Server/WcfService/help" href="http://localhost:8000/Sample01.Server/WcfService/help"&gt;http://localhost:8000/Sample01.Server/WcfService/help&lt;/a&gt;

    &lt;br /&gt;serviceDebug サービスビヘイビアにより、この URL を呼び出すと、WCF サービスに関するヘルプページが動的に生成されるようになります。&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://localhost:8000/Sample01.Server/WcfService/mex"&gt;http://localhost:8000/Sample01.Server/WcfService/mex&lt;/a&gt;

    &lt;br /&gt;serviceMetadata サービスビヘイビアにより、この URL を呼び出すと、WCF サービスに関する I/F 仕様情報（WSDL 情報）が動的に生成され、公開されるようになります。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;［ヘルプページ］&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_54.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="205" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_26.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;［WSDL 情報］ &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_52.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="205" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_25.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 8］ WCF テストツールによる WCF サーバの動作確認&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;さて、この状態で WCF サーバの動作確認を行いたいところですが、ASP.NET XML Web サービス（*.asmx）の場合と異なり、WCF では簡単にサーバを呼び出すことができません。これは、WCF がマルチプロトコル対応であるために、サーバを呼び出す方法が一定しないことが大きな要因だろうと思います。&lt;/p&gt;

&lt;p&gt;&lt;font color="#c0c0c0"&gt; （どうせなら、SOAP over HTTP の場合に限っては、*.asmx と同様にヘルプページからテストも行えるようにしてほしいところなのですが、とつぶやいてみる．．．．まあ贅沢を言っちゃいけないのかもですが。）&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;この問題に対処するため、Visual Studio 2008 では、WSDL 情報を元にして WCF サーバを呼び出す汎用テストクライアントツール WcfTestClient.exe が用意されました。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_64.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="274" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_31.png" width="464" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;具体的には以下のようにして利用します。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;まず、WCF サーバを起動しておきます。（※ WCF サーバが起動していないと、WSDL ファイルが入手できないため。）&lt;/li&gt;

  &lt;li&gt;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\WcfTestClient.exe を起動します。&lt;/li&gt;

  &lt;li&gt;ファイル &amp;#8594; サービスの追加を選択し、エンドポイントアドレスの入力欄に、WSDL ファイルが公開されている URL （ここでは &lt;a title="http://localhost:8000/Sample01.Server/WcfService/mex" href="http://localhost:8000/Sample01.Server/WcfService/mex"&gt;http://localhost:8000/Sample01.Server/WcfService/mex&lt;/a&gt; ）を指定します。

    &lt;br /&gt;※ WcfTestClient.exe の起動時のコマンドライン引数として、WSDL ファイルのアドレスを与えても OK です。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_58.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="80" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_28.png" width="277" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;以上の作業により、WCF サービスを呼び出す準備ができるので、あとはメソッドを選択し、パラメータ引数を入力して起動ボタンを押下してください。これにより WCF サービスを呼び出すことができます。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_66.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="281" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part2.HelloWorldWCF_C6C4/image_thumb_32.png" width="476" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;なお、&lt;strong&gt;&lt;font color="#ff0000"&gt;このツールは TCP/IP 通信や名前つきパイプ通信でも利用できます&lt;/font&gt;&lt;/strong&gt;。WSDL ファイルさえ入手できれば、あとはそれを元に動的にテストクライアントを組み上げてくれるツールになっているので、適宜活用するとよいでしょう。&lt;font color="#c0c0c0"&gt;（&amp;#8230;といっても、実際のアプリケーション開発の場合には、さくっとクライアントアプリを作ってしまった方が手っ取り早いのですが。）&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 9］ （おまけ） 構成設定ファイルを使わない方法&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;以上で説明はおしまいですが、最後におまけとして、構成設定ファイルを使わないで WCF サーバを起動する方法について説明しておきます。&lt;/p&gt;

&lt;p&gt;実際に自分のアプリケーションで WCF を使おうと思った場合にネックになる大きなポイントの一つに、&lt;strong&gt;構成設定データの維持がえらく大変&lt;/strong&gt;、という点があります。今回のサンプルの場合には、WCF サービスが一つだったので構成設定データを作成するのもラクでしたが、実際の業務アプリケーションでは WCF サービスがたくさん作成されることになるため、構成設定ファイルを作成・メンテするのがとかく面倒になります。こうした場合には、アプリケーションコードでエンドポイントを構成する手段を検討してみてください。&lt;/p&gt;

&lt;p&gt;例えば、以下のようなコードを書くと、&lt;strong&gt;app.config なしで&lt;/strong&gt; WCF サービスを起動することができます。&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (ServiceHost host = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceHost(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(WcfService)))&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// ① エンドポイントの手動構成設定 (C/B/A を指定)&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;     &lt;span style="color: #008000"&gt;//   バインディングの構成設定を行いたい場合には、Binding インスタンスのプロパティを設定する&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;     host.AddServiceEndpoint(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(WcfService), &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; BasicHttpBinding(), &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;         &lt;span style="color: #006080"&gt;&amp;quot;http://localhost:8000/Sample08.Server/WcfService&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// ② ビヘイビアの手動構成設定&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;     &lt;span style="color: #008000"&gt;//   すでにいくつかのビヘイビアは既定で追加されているため、取り払ってから再設定する&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     host.Description.Behaviors.Remove(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ServiceDebugBehavior));&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;     host.Description.Behaviors.Remove(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ServiceMetadataBehavior));&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;     host.Description.Behaviors.Add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceDebugBehavior { IncludeExceptionDetailInFaults = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt; });&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;     host.Description.Behaviors.Add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceMetadataBehavior { HttpGetEnabled = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;, &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;     HttpGetUrl = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080"&gt;&amp;quot;http://localhost:8000/Sample08.Server/WcfService/mex&amp;quot;&lt;/span&gt;) });&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// ホストのオープン&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;     host.Open();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;     Console.WriteLine(&lt;span style="color: #006080"&gt;&amp;quot;WCF サービスを起動しました。&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;     Console.ReadLine();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;     host.Close();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;このコードについては詳細には説明しませんが、このようにコードによって構成設定を行う方法もある、というのを知っておくと何かと便利ですので、覚えておいてください。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［ここまでのまとめ］&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;今回のエントリのキーポイントをまとめると、以下のようになります。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;[ServiceContract], [OperationContract] 属性を使って、WCF サービスを作成する。&lt;/li&gt;

  &lt;li&gt;WCF サービスを動作させるためには、サービスホスト（ServiceHost）の初期化とオープンが必要。&lt;/li&gt;

  &lt;li&gt;サービスホストを動作させるためには、構成設定ファイルを使ってエンドポイントの構成を指定しておく必要がある。（アプリケーションコードを使ってエンドポイントの構成を行うことも可能）&lt;/li&gt;

  &lt;li&gt;さらに、サービスビヘイビアを追加することで、ヘルプページや WSDL 情報を作成・公開したりすることができる。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;引き続き次回の Part.3 では、この WCF サーバに対するクライアントアプリケーションの作成と、通信プロトコルの差し替えなどを行ってみることにしたいと思います。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8958319" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nakama/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Part 1. WCF に導入されている新たな設計概念</title><link>http://blogs.msdn.com/nakama/archive/2008/09/18/part-1-wcf.aspx</link><pubDate>Thu, 18 Sep 2008 15:41:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8957231</guid><dc:creator>nakama</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nakama/comments/8957231.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nakama/commentrss.aspx?PostID=8957231</wfw:commentRss><description>&lt;p&gt;では順番に、WCF について説明していってみようと思います。&amp;#8230;&amp;#8230;が、WCF を理解する上で重要なのは、実装方法というよりも、むしろ WCF がなぜ作られたのかとか、どういう考えやモデルに基づいて作られているか、という点だと思います。そこで、Part 1. では、まず WCF が持っているいくつかのきわめて重要な設計概念についてまとめて説明してみたいと思います。&lt;/p&gt;  &lt;p&gt;・WCF の狙い    &lt;br /&gt;・エンドポイント （ABC モデル）     &lt;br /&gt;・WCF パイプライン（ABC モデル）と OSI 7 階層モデルの関係     &lt;br /&gt;・Message オブジェクトとエンコード方式&lt;/p&gt;  &lt;p&gt;なお、以下の説明では、ある程度リモート通信に関する基礎知識がある（例えば ASP.NET XML Web サービスを使ったことがある）方を対象として記述しています。もしリモート通信技術を全く触ったことがないという場合には、まず ASP.NET XML Web サービス（*.asmx）などを軽く学習してから本エントリをお読みいただくことをお勧めします。&lt;/p&gt;  &lt;p&gt;※ Part 1 は概念的に難しいので、よくわからない．．．という方は、Part 2 以降を読んでから、最後に戻ってきてもう一回読むとよいかと思います。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;[Step. 1] WCF の狙い&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;WCF は、様々な通信プロトコルを、&lt;strong&gt;同一のプログラミングモデル&lt;/strong&gt;の中で取り扱えるようにするための仕組みです。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="274" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb.png" width="385" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;もともと世の中に多種多様な通信プロトコルが存在するのは、通信プロトコルに求められる要件が、アプリケーションやシステムの特性によって大きく変化するため、ひとつの通信プロトコルでは多種多様な通信に対応できないからです。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;信頼性を重視しなければならない場合（一般的な業務システムとか） &lt;/li&gt;    &lt;li&gt;付加機能を充実しなければならない場合（トランザクション引き継ぎが必要な業務システムとか） &lt;/li&gt;    &lt;li&gt;とにかく性能を重視する必要のある場合（取引システムとかオンラインゲームとか） &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;このような理由から、世の中には様々な通信プロトコルが存在します（Windows 系に限ってみても、SOAP over HTTP, DCOM, TCP/IP, MSMQ, Service Broker, 名前付きパイプ, etc...）。しかし、一方で次のような問題も存在します。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;通信プロトコルごとに、プログラミング方式（API）がまるで違う。 &lt;/li&gt;    &lt;li&gt;同一の通信特性を持つ通信であっても、簡単に置き換えることができない。 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;また、最近では WS-* （WS-Security や WS-ReliableMessaging, WS-AtomicTransaction など）といった高付加価値プロトコルも開発されていますが、こうしたプロトコルは従来の通信ミドルウェアの設計ではなかなかスマートに対応させることができません。こうした問題を解決するために設計されたのが WCF です。WCF を利用すると、以下のようなメリットが得られます。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;様々な通信プロトコルを扱う際のプログラミングモデルが統合されます。      &lt;br /&gt;このため、新しい通信プロトコルを利用したアプリケーションに開発する際の学習コストが低減されます。 &lt;/li&gt;    &lt;li&gt;WS-* プロトコルへの対応が非常にスマートにできます。      &lt;br /&gt;（※ この点は極めて重要です。詳細は後述します。） &lt;/li&gt;    &lt;li&gt;同一の通信特性を持つ通信プロトコルであれば、簡単にリプレースできます。      &lt;br /&gt;例えば、SOAP over HTTP ベースで開発された WCF のアプリケーションの通信方式を、TCP/IP ベースの通信に簡単に切り替えられます。 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;例えば一例を挙げると、&amp;quot;Hello World&amp;quot; メッセージを返すサーバアプリケーションを作成する場合、WCF を利用すれば、SOAP over HTTP だろうと TCP/IP だろうと、サーバのサービス実装は全く同じになります。構成設定ファイルを書きかえることにより、通信プロトコルを変更することができます。（※ ここでは単純化して解説しています。具体的な通信プロトコルの置換方法については Part 3. で扱います。）&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;［WCF サービス実装］&lt;/strong&gt;&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; [ServiceContract]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; WcfService&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;     [OperationContract]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; GetMessage(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; name)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; String.Format(&lt;span style="color: #006080"&gt;&amp;quot;Hello World, {0}&amp;quot;&lt;/span&gt;, name);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;［SOAP over HTTP の場合の構成設定ファイルの書き方］&lt;/strong&gt;&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;configuration&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;     &amp;lt;system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;         &amp;lt;services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;             &amp;lt;service name=&lt;span style="color: #006080"&gt;&amp;quot;Server.WcfService&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;                 &amp;lt;endpoint address=&lt;span style="color: #006080"&gt;&amp;quot;http://localhost:8000/Server/WcfService&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;                           binding=&lt;span style="color: #006080"&gt;&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt; contract=&lt;span style="color: #006080"&gt;&amp;quot;Server.WcfService&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;             &amp;lt;/service&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;         &amp;lt;/services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     &amp;lt;/system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt; &amp;lt;/configuration&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;［TCP/IP の場合の構成設定ファイルの書き方］&lt;/strong&gt;&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &amp;lt;configuration&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;     &amp;lt;system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;         &amp;lt;services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;             &amp;lt;service name=&lt;span style="color: #006080"&gt;&amp;quot;Server.WcfService&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;                 &amp;lt;endpoint address=&lt;span style="color: #006080"&gt;&amp;quot;net.tcp://localhost:7000/Server/WcfService&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;                           binding=&lt;span style="color: #006080"&gt;&amp;quot;netTcpBinding&amp;quot;&lt;/span&gt; contract=&lt;span style="color: #006080"&gt;&amp;quot;Server.WcfService&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;             &amp;lt;/service&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;         &amp;lt;/services&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     &amp;lt;/system.serviceModel&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt; &amp;lt;/configuration&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;※ 2 つ目のポイントについては結構勘違いしやすいので注意してください。当たり前のことですが、&lt;strong&gt;&lt;font color="#ff0000"&gt;WCF は、通信プロトコルを任意に切り替えられるようにするものではありません&lt;/font&gt;&lt;/strong&gt;。WCF を利用しても通信特性の異なるプロトコルへの切り替えはできません。たとえば、上記の「リクエスト／レスポンス」型のアプリケーションの通信プロトコルを、「一方向」型の通信プロトコルである MSMQ などに切り替えることはできません。&lt;/p&gt;

&lt;p&gt;※ なお、WCF サービスを実装する場合、通常は上記のサンプルのように、サーバ側のコードに [ServiceContract], [OperationContract] 属性をつけたコードを記述しますが、昔ながらのリモート通信プログラミングモデルのように、インタフェース定義を分離することもできるようになっています。（下記参照） ただし、業務アプリケーションではこのようにインタフェース定義を分離する必要は通常ないので、本資料ではインタフェース分離しない形でサンプルコードを示していきます。（理由は SI 上にビジネスロジックを実装することはないためなのですが、これはまた別の機会に。）&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; [ServiceContract]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;interface&lt;/span&gt; IWcfService {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;     [OperationContract]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; GetMessage(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; name);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;     [OperationContract]&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;     PubsDataSet GetAuthorsDataByState(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; state);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; WcfServiceImpl : IWcfService {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; GetMessage(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; name) {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;&amp;quot;Hello World, &amp;quot;&lt;/span&gt; + name;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; PubsDataSet GetAuthorsDataByState(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; state) {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;         authorsTableAdapter ta = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; authorsTableAdapter();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;         PubsDataSet pds = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PubsDataSet();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;         ta.FillByState(pds.authors, state);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; pds;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;さて WCF では、&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;サーバ側のサービスを、[ServiceContract] や [OperationContract] の属性をつけた形で記述する。 &lt;/li&gt;

  &lt;li&gt;構成設定ファイルで通信プロトコルを指定する。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という形で実装していくのですが、このような通信プロトコル切り替えを実現する源泉となっているのが、&lt;strong&gt;エンドポイント&lt;/strong&gt;と呼ばれる概念です。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 2］ エンドポイント （ABC モデル）&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="208" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb_1.png" width="527" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;エンドポイントとは、サーバとクライアントの両側にできる「通信の出入り口」のことで、以下の 3 つの要素から構成されています。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A (Address) : URL （例えば http://server:8000/WcfService など。） &lt;/li&gt;

  &lt;li&gt;B (Binding) : 通信制御に利用するパイプラインの種類 &lt;/li&gt;

  &lt;li&gt;C (Contract) : SOAP メッセージの仕様 （すなわち I/F 仕様） &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;この A/B/C に関する構成をサーバとクライアントの両方で合致させることにより、適切な通信ができるようになる...と WCF の本には書かれているのですが、最初にこれを読んだときにはぶっちゃけ何のことだかさっっっぱりわかりませんでした；。たぶん、開発者の方々の場合には、以下のようなエンドポイント内部の構造を具体的に示した方がわかりやすいでしょう。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="287" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb_2.png" width="520" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;WCF によるクライアントからサーバへの通信は、以下の流れで進みます。&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;平文 SOAP メッセージの組み立て 
    &lt;br /&gt;プロキシクラスのメソッドを呼び出すと、プロキシクラスは平文の SOAP メッセージを組み立てます。 &lt;/li&gt;

  &lt;li&gt;クライアント側エンドポイントによるパイプライン処理 
    &lt;br /&gt;クライアント側エンドポイントによって、平文の SOAP メッセージに対する適切な加工処理（認証情報付与やデータ暗号化など）が行われます。 &lt;/li&gt;

  &lt;li&gt;サーバ側リスナへのデータ送信 
    &lt;br /&gt;例えば WS-Security を使っている場合には、クライアント側のエンドポイントパイプラインにより加工された（すなわち暗号化された）SOAP メッセージが、通信チャネル経由で送信されることになります。 &lt;/li&gt;

  &lt;li&gt;サーバ側エンドポイントによるパイプライン処理 
    &lt;br /&gt;2. の逆の処理（解読・復元処理）が行われます。 &lt;/li&gt;

  &lt;li&gt;サービス実装クラスへのディスパッチ 
    &lt;br /&gt;平文となった SOAP メッセージを元に、実際のサービスが呼び出されて処理されます。 &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;そしてサーバ側で処理された結果については、逆の流れをたどってクライアントに届けられます。このように、WCF サービスを正しく動作させるためには、構成設定ファイル（前掲）でこの A/B/C を正しく設定しなければならないのですが、上図から、A/B/C が具体的に何に紐づいているのかがわかると思います。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A (Address) : リスナまたはトランスポートの種類およびその URL &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;B (Binding) : SOAP メッセージに対する前加工・後加工処理を施すためのパイプラインの種類&lt;/font&gt;&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;C (Contract) : SOAP メッセージの仕様 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="212" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb_3.png" width="501" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;そして、WCF のマルチプロトコル対応は、この Binding （及びその下側にある A）の取り換えによって実現されています。例えば、Step 1. で示した SOAP over HTTP 及び TCP/IP 通信の切り換えの例の場合は、Binding を basicHttpBinding から netTcpBinding に切り替えていますが、これは下図のように、&lt;strong&gt;WCF パイプラインを入れ替える&lt;/strong&gt;ことに相当します。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="393" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb_4.png" width="505" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;つまり、端的にいえば、&lt;/p&gt;

&lt;p align="center"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Binding の変更 = WCF パイプラインの交換 = 通信ランタイムの全とっかえ&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;を意味します。（このためバインディングを変更すると、通信特性や利用可能な機能がまるごと変わる） これが、同一のプログラミングモデルで異なる通信プロトコルを取り扱うことができる仕組みの源泉になっています。&lt;/p&gt;

&lt;p&gt;※ 繰り返しになりますが、&lt;strong&gt;通信特性の異なる Binding へ取り替えても、アプリケーションは動作しない（するはずがない）&lt;/strong&gt;ので注意が必要です。&lt;/p&gt;

&lt;p&gt;なお、WCF には様々な Binding が用意されていますが、まず真っ先に覚えるべき Binding は以下の 4 つです。（覚えてしまうことを推奨）&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="93" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb_6.png" width="380" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［Step. 3］ WCF パイプライン（ABC モデル）と OSI 7 階層モデルの関係&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;さて、上で「Binding の変更は、通信ランタイムの全とっかえに相当する」と書いたのですが、そもそもそんなことが許されていいのか？！ &amp;#8230;&amp;#8230;という人も多いと思います（私もそう思います；）。ですが、この ABC モデルこそが WCF の設計上の一番の肝であり、さらにこれが実は &lt;strong&gt;&lt;font color="#ff0000"&gt;OSI 7 階層モデルの上に WCF 3 階層モデルとでも呼ぶべき新しい階層をもたらすものである&lt;/font&gt;&lt;/strong&gt;、ということに気づくと、WCF の設計の見事さがわかってくると思います。&lt;/p&gt;

&lt;p&gt;※ WCF 3 階層モデルというのは nakama が勝手に呼んでるものなので、正しいかどうかはわかりませんが、私はこういうふうに理解しました。&lt;/p&gt;

&lt;p&gt;この WCF 3 階層モデル（nakama 命名）を説明する前に、まず SOAP と WS-* の仕様の関係を改めて復習してみたいと思います。&lt;/p&gt;

&lt;p&gt;ご存じのとおり、SOAP (Simple Object Access Protocol) は、XML 形式にエンコードされた、リモートメソッド呼び出し要求のためのメッセージです。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="205" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb_5.png" width="497" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SOAP メッセージは通信プロトコルとは独立して設計&lt;/strong&gt;されているのが大きな特徴でした（つまり、この SOAP メッセージは HTTP 通信、TCP/IP 通信、極端なことを言えばメールの添付ファイルとしてサーバに送りつけることも可能）。従来の様々な RPC （リモートメソッド呼び出し）技術は、通信プロトコルと一体化して設計されてきたわけですが、SOAP はこの前提を覆し、メッセージと通信プロトコルを分離し、「通信プロトコルにはお好きなものを使ってね」というスタンスを取った、というのが大きな特徴でした。&lt;/p&gt;

&lt;p&gt;でもって、SOAP メッセージを HTTP 通信で運んだり（SOAP over HTTP）、TCP/IP 通信で運んだり（SOAP over TCP/IP）している分にはたいして問題がなかったのですが、しばらくすると、この SOAP メッセージに WS-* と呼ばれる様々な拡張機能が登場します。代表格が WS-Security で、これは SOAP メッセージを暗号化するための仕様でした。（雰囲気つかむために SOAP メッセージが暗号化された様子を下に示します。詳細は理解しなくてよいです。）&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_16.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="413" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb_7.png" width="507" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;ところがここで「？？？」となってしまう疑問が生じます。それは、&lt;strong&gt;&lt;font color="#ff0000"&gt;レイヤの逆転現象&lt;/font&gt;&lt;/strong&gt;です。例えば、HTTPS という通信プロトコルを OSI 7 階層モデルに基づいて考えた場合、レイヤの重なり方は&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;アプリケーション層（HTTP） &lt;/li&gt;

  &lt;li&gt;暗号化処理を行う層（SSL） &lt;/li&gt;

  &lt;li&gt;通信制御を行う層（TCP/IP） &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;となっているのですが、WS-Security を使った SOAP メッセージを HTTP で搬送する場合、&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;WS-Security による暗号化処理 &lt;/li&gt;

  &lt;li&gt;SOAP メッセージ &lt;/li&gt;

  &lt;li&gt;HTTP 通信 &lt;/li&gt;

  &lt;li&gt;SSL &lt;/li&gt;

  &lt;li&gt;TCP/IP &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という形のスタックになっている、つまり &lt;strong&gt;&lt;font color="#ff0000"&gt;HTTP 通信というアプリケーション層の上に、改めて暗号処理を行うレイヤを積み上げている&lt;/font&gt;&lt;/strong&gt;形になってしまっています。設計上の是非はともかく、WS-Security をはじめとした WS-* の仕様を見たときに、&lt;/p&gt;

&lt;p&gt;「これって SOAP 上にもう一度プロトコルを全部作り直してるってこと？？」&lt;/p&gt;

&lt;p&gt;という疑問を抱いたのは（きっと）私だけではないと思います&lt;font color="#c0c0c0"&gt;（というか思いたい...）&lt;/font&gt;が、通信プロトコル中立性を保ちながら、その上でメッセージを暗号化したりするためには、確かにこうした仕様は必要になります。&lt;/p&gt;

&lt;p&gt;ところがここで新たに問題になるのは、では通信インフラを WS-Security などに対応させようと思った場合に、どのような形で対応させればよいのか？（誰がどこで WS-Security の暗号化や復号処理を行うのが設計上スマートなのか？）という点です。例えば、ASP.NET XML Web サービスは、ASP.NET ランタイムが持つ HTTP パイプライン上で動作していますが、その動作モデルは下図のように描くことができます。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_18.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="197" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb_8.png" width="432" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;ASP.NET ランタイムの HTTP パイプラインは、文字通り &lt;strong&gt;HTTP 通信に紐づいた形で設計され、HTTP プロトコルを意識しながら動作するもの&lt;/strong&gt;です。もちろんこのパイプラインの中で SOAP メッセージの暗号化や復号処理を行うようなモジュールを作ることもできるでしょうが、それでは &lt;strong&gt;SOAP 及び WS-* が持つ基本設計概念である、通信プロトコル独立性に反します&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;そこで現れたのが、WCF の ABC 3 階層モデル（nakama 命名（しつこい；））です。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_20.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="270" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb_9.png" width="497" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;このように描くとわかりやすいのですが、&lt;strong&gt;&lt;font color="#ff0000"&gt;要するに A/B/C とは、OSI 7 階層モデルの上に、SOAP 及び WS-* 仕様に基づく制御レイヤを導入しようというもの&lt;/font&gt;&lt;/strong&gt;です。このレイヤが導入されることにより、クライアントコードや WCF サービスのコードは、以下のようなメリットを享受することができるようになります。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;WS-* 関連の制御から解放される。（WS-* の制御を抽象化できる） &lt;/li&gt;

  &lt;li&gt;通信プロトコルから独立したメッセージのやり取りが可能になる。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;このうち前者は極めて重要な点で、&lt;strong&gt;WS-* を利用する際には、Binding レイヤで複数回のパケット（SOAP メッセージ）の交換が自動的に行われることがあります&lt;/strong&gt;。もうちょっと突っ込んで説明するため、例えば、HTTPS （HTTP over SSL）と、WS-Security の 2 つを比較してみます。まず、HTTPS を考えてみてください。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;一般的に、HTTPS によるサーバとの通信は、アプリケーションレベルからみると「単発のリクエスト／レスポンス」に見えます。 &lt;/li&gt;

  &lt;li&gt;しかし実は TCP/IP レベルでは、SSL セッション鍵の交換のために、サーバ／クライアント間で複数回のパケット交換（ネゴシエーション処理）が行われています。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;つまり HTTPS では、&lt;strong&gt;SSL セッションを張るために複数回のパケット交換が行われているものの、アプリケーションレベルではこのパケット交換を意識しなくて済むようになっている&lt;/strong&gt;、ということになります。&lt;/p&gt;

&lt;p&gt;実は WS-Security でも、Binding レイヤにより同様のことが行われます。つまり、&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;クライアントコードから Binding （WCF パイプライン）に SOAP の平文メッセージを投入します。 &lt;/li&gt;

  &lt;li&gt;WCF パイプラインでは WS-Security の暗号化に必要なセッション鍵を入手するため、&lt;strong&gt;サーバ側の WCF パイプラインとの間で、SOAP メッセージを何度か交換します&lt;/strong&gt;。（WS-SecureConversation プロトコルによるメッセージ交換が行われる） &lt;/li&gt;

  &lt;li&gt;セッション鍵が交換されると、実際の SOAP メッセージが暗号化されてサーバに送信されます。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という挙動が行われます。&lt;strong&gt;見掛け上、クライアントコードからプロキシクラスの呼び出しが一度であっても、実は HTTP 通信レベルでみると、複数回の SOAP メッセージのやり取りが行われていることがある&lt;/strong&gt;、ということになります。しかし、&lt;strong&gt;&lt;font color="#ff0000"&gt;WCF の Binding レイヤがこれを抽象化してくれているため、アプリケーションレベルではこのネゴシエーションのためのパケット（SOAP メッセージ）交換を意識しなくて済むようになっている&lt;/font&gt;&lt;/strong&gt;、ということになります。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_24.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="190" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb_11.png" width="510" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;以上を踏まえれば、WCF のエンドポイントの ABC モデルとは、OSI 7 階層モデルの上に、SOAP 及び WS-* による 3 階層の抽象化レイヤを作るものである、と説明できるのではないかと思います。（&amp;#8592; という説明がたぶん最も的確じゃないかと思うんですが、こういう説明がなされている資料を見たことがない．．．．）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;[Step. 4] Message オブジェクトとエンコード方式&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;さて、上記において、WCF パイプラインが SOAP 及び WS-* の制御を抽象化してくれるものである、という説明をしたのですが、この動作は、&lt;font color="#ff0000"&gt;&lt;strong&gt;HTTP 通信だけでなく、すべての通信プロトコルにおいて共通の挙動&lt;/strong&gt;&lt;/font&gt;&lt;font color="#000000"&gt;になります。つまり、&lt;/font&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;WCF では、TCP/IP 通信だろうと名前付きパイプ通信だろうと、必ずSOAP が使われる。&lt;/font&gt;&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;ただし、通信チャネル（トランスポート）によっては、SOAP メッセージが XML 形式以外にエンコードされることがある。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という挙動をします。このことを、HTTP 通信を使う場合と、TCP/IP 通信を使う場合とで比較しながら説明します。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="397" alt="image" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/image_thumb_4.png" width="511" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;上図では、HTTP 通信を使うために basicHttpBinding パイプラインを、TCP/IP 通信を使うために netTcpBinding パイプラインを使っていますが、どちらの場合であっても、&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;パイプラインを通過するデータは、SOAP メッセージ。（正確には、SOAP メッセージのオブジェクト形式である System.ServiceModel.Channels.Message オブジェクト） &lt;/li&gt;

  &lt;li&gt;データを暗号化する場合には、どちらの場合でも WS-Security 仕様に基づく暗号化処理が行われる。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;となります。しかし、トランスポートレイヤでは、&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;basicHttpBinding を使った場合には、SOAP メッセージ（のオブジェクト形式である Message オブジェクト）が、XML 形式にエンコードされて転送される。 &lt;/li&gt;

  &lt;li&gt;netTcpBinding を使った場合には、SOAP メッセージ（のオブジェクト形式である Message オブジェクト）が、バイナリ形式にエンコードされて転送される。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;となり、TCP/IP 通信を使う場合にはバイナリフォーマットでのデータ転送が行われることになります。ちなみにご参考までに、Message オブジェクトが XML 形式にエンコードされた場合と、バイナリ形式にエンコードされた場合を以下に示します。バイナリ形式のデータをよく見ると、タグではなく &amp;quot;.&amp;quot; 区切りでデータがエンコードされていることがわかります。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;［XML 形式にエンコードされた Message オブジェクト］&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/%E5%9B%B31_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="194" alt="図1" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/%E5%9B%B31_thumb.png" width="501" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;［バイナリ形式にエンコードされた Message オブジェクト］&lt;/strong&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/%E5%9B%B32_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="193" alt="図2" src="http://blogs.msdn.com/blogfiles/nakama/WindowsLiveWriter/Part1.WCF_10A8F/%E5%9B%B32_thumb.png" width="498" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;つまり、TCP/IP 通信（netTcpBinding）を使った場合には、バイナリエンコード＋TCP/IP 通信によるデータ転送が行われるのですが、&lt;strong&gt;そこで運ばれているデータは SOAP データそのもの&lt;/strong&gt;です。&lt;/p&gt;

&lt;p&gt;※ WCF の開発チームによると、RPC におけるリモート呼び出しデータを持つときに最も優れたフォーマットを追及したら、結局 SOAP と同じデータ項目になったため、WCF パイプラインを通す「RPC 呼び出しデータ」の構造として、SOAP XML データのオブジェクト表現を使うことにしたそうです。&lt;/p&gt;

&lt;p&gt;そして、WCF ランタイムでは、リモートのサービス呼び出しの際のメッセージデータ構造として SOAP データを使っているが故に、&lt;strong&gt;&lt;font color="#ff0000"&gt;WS-* 仕様を、すべての通信プロトコルに対して使うことができるようになっています&lt;/font&gt;&lt;/strong&gt;。例えば、&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;SOAP over HTTP 通信において、通信データを暗号化したい場合には、WS-Security を使うことができます。 &lt;/li&gt;

  &lt;li&gt;ですが、&lt;strong&gt;TCP/IP 通信においても、通信データを暗号化したい場合には、WS-Security を使うことができます&lt;/strong&gt;。

    &lt;br /&gt;（※ ワイヤを流れるデータはちゃんとバイナリエンコードされることに注意。WS-Security により暗号化された Message オブジェクトが、バイナリエンコードされてワイヤに流れる形になります。）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;もちろん、実質的に WS-* 仕様を使う必要・意味がないケースもあります。例えば、名前付きパイプ通信はもともと信頼性のある通信であるため、WS-ReliableMessaging 仕様を適用しても意味がないがありません（このため、netNamedPipeBinding では WS-ReliableMessaging 仕様は使えないようになっています）。ですが、考え方としては、&lt;strong&gt;Binding パイプラインが基本的に通信プロトコルに対して中立である&lt;/strong&gt;、というのが非常に興味深い設計であるといえるでしょう。&lt;/p&gt;

&lt;p&gt;※ なお、上記のように、WS-* と通信プロトコルの間には組み合わせ上の適否があるため、組み込みの Binding では利用できる WS-* やエンコード方式に制限が加わっていることがほとんどです。ですが、CustomBinding を使って自分でパイプラインを組み立てると、ある程度はこの組み合わせを自由にすることができます。（例えば、HTTP 通信でバイナリエンコードをしたい場合には、CustomBinding を利用し、httpTransportChannel と binaryEncodingChannel を組み合わせる、など。）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;［ここまでのまとめ］&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;というわけで、とんでもなく説明が長くなりましたが、ここまでの解説をまとめると以下のようになります。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;WCF を使うと、様々な通信プロトコルに対して、似たようなプログラミングモデルでの開発を行うことができるようになる。 &lt;/li&gt;

  &lt;li&gt;WCF を使うと、同一の通信特性を持つ別の通信プロトコルへの切り替えが簡単にできるようになる。 &lt;/li&gt;

  &lt;li&gt;WCF では、OSI 7 階層モデルの上に、WS-* などの処理を行うための 3 階層モデルを構築している。これにより、通信プロトコルや WS-* などの付加処理が高度に抽象化されている。 &lt;/li&gt;

  &lt;li&gt;WCF では、すべての通信手法において、リモート呼び出しのデータが SOAP メッセージ（のオブジェクト表現である Message オブジェクト）として管理される。 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;次回の Part 2. では、実際に WCF のサーバアプリケーションを開発してみていくことにしたいと思います。&lt;/p&gt;

&lt;p&gt;&amp;#8230;&amp;#8230;と、概念ばっかり説明してるとわかりにくいですよね；。これだけだとわからない方も多いと思いますが、Part 2 以降で徐々にわかっていただけると思いますので、しばらくお付き合いいただけると幸いです。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8957231" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nakama/archive/tags/WCF/default.aspx">WCF</category></item></channel></rss>