1. ホーム
  2. c#

[解決済み] WCF名前付きパイプの最小限の例

2023-02-20 14:21:06

質問

WCF名前付きパイプの最小限の例を探しています(名前付きパイプを介して通信できるサーバーとクライアントという2つの最小限のアプリケーションを想定しています)。

マイクロソフトは、次のような素晴らしい記事を用意しています。 入門チュートリアル は、HTTP経由のWCFについて説明しており、私はWCFと名前付きパイプについての同様の何かを探しています。

私はインターネット上でいくつかの記事を見つけましたが、それらは少し"advanced"です。私は、コードを追加してアプリケーションを動作させることができるように、最小限の、必須の機能だけのものを必要としています。

名前付きパイプを使用するように置き換えるにはどうしたらよいでしょうか。

<endpoint address="http://localhost:8000/ServiceModelSamples/Service/CalculatorService"
    binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ICalculator"
    contract="ICalculator" name="WSHttpBinding_ICalculator">
    <identity>
        <userPrincipalName value="OlegPc\Oleg" />
    </identity>
</endpoint>

名前付きパイプを使うようにするには、どのように置き換えるのですか?

// Step 1 of the address configuration procedure: Create a URI to serve as the base address.
Uri baseAddress = new Uri("http://localhost:8000/ServiceModelSamples/Service");

// Step 2 of the hosting procedure: Create ServiceHost
ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);

try
{
    // Step 3 of the hosting procedure: Add a service endpoint.
    selfHost.AddServiceEndpoint(
        typeof(ICalculator),
        new WSHttpBinding(),
        "CalculatorService");

    // Step 4 of the hosting procedure: Enable metadata exchange.
    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
    smb.HttpGetEnabled = true;
    selfHost.Description.Behaviors.Add(smb);

    // Step 5 of the hosting procedure: Start (and then stop) the service.
    selfHost.Open();
    Console.WriteLine("The service is ready.");
    Console.WriteLine("Press <ENTER> to terminate service.");
    Console.WriteLine();
    Console.ReadLine();

    // Close the ServiceHostBase to shutdown the service.
    selfHost.Close();
}
catch (CommunicationException ce)
{
    Console.WriteLine("An exception occurred: {0}", ce.Message);
    selfHost.Abort();
}

名前付きパイプを使用するクライアントを生成するにはどうすればよいですか?

どのように解決するのですか?

私はちょうど見つけた この優れた小さなチュートリアル . リンク切れ ( キャッシュされたバージョン )

マイクロソフトのチュートリアルもいいのですが、私もパイプだけでよかったので、それに従いました。

見ての通り、設定ファイルやその他面倒なものは必要ありません。

ところで、彼はHTTPとパイプの両方を使用しています。HTTPに関連するコード行をすべて削除すれば、純粋なパイプの例が得られます。