WCFを使用する利点は、ネットワーク内または外部にサービスを公開する場合、コードを変更せずにいくつかの追加の設定を変更または追加するだけで済みます。
クライアントとサーバーの両方を1台のマシンまたはネットワーク内に持つというシナリオでは、絶対に問題はありません。簡単な方法は、2つのエンドポイントを公開して、同じサービス上の要件を処理することです。
1つのエンドポイントでも回避できますが、異なるバインドメカニズムを使用して異なるエンドポイントを使用すると、認証時にオーバーヘッドが減少します。例:同じマシン上にいる場合は、net:pipeまたはnet:tcp bindingを使用できます。 ドメイン内にいるときは、net:tcpまたはhttpbindingを使用できます。
異なるバインディングを使用するとパフォーマンスが異なります。あなたはClientCredentials.UserNameにユーザー名/パスワードの組み合わせを設定することができ、クライアント側で
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="MyNamespace.MyValidator, MyNamespace" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
:
似たようなものが必要でしたし、別の組み込みオプションを見直した後に、MessageInspector http://msdn.microsoft.com/en-us/library/aa717047.aspxを使うことにしました。これを使用することで、クライアントとサービス実装ロジックの外部のヘッダーにデータを注入できます。 – Michael