WCF第II章サービスで複数の契約およびエンドポイントを実装する契約

サービスは、エンドポイントのシリーズとして定義されます。各エンドポイントは、アドレス、バインディング、および契約を結んでいます。契約は、エンドポイントの機能を公開しています。アドレスは、アプリケーションまたはサービスがネットワーク契約がそれらにアクセスする方法についてであるアドレス見つけることができます。
エンドポイントとの契約の間には多くの関係があります。停止点は一つだけの契約を持つことができますが、契約は、多くのエンドポイントで参照することができます。一方のエンドポイントにのみ契約を確認することができるが、重合を可能にするインターフェースは、別個の契約の複数のインターフェースを露出させます。加えて、異なるが均等に結合契約複数のエンドポイントがあり、同じアドレスにあるすべての契約を実装するために単一の終端点の錯覚を与えることができます。
サービスで複数のエンドポイントによる契約への曝露は、あなたはサービスが異なる結合でアクセスすることができますすることができます。あなたはより高速なパフォーマンスを実現するためにTCPプロトコルとバイナリコード化されたエンドポイントを使用するために他のを使用している間、トラフィックを最大化するために、WS-I基本的なプロトコルバインディングを使用してエンドポイントを定義することができます。インターフェースのような錯覚になり、複数のインターフェースによって、あなたは最初にマージすることによって、別のインターフェイス機能に成文化され、単一のサービスにアクセスすることができます。
リスト2.10での契約で複数のエンドポイントを公開
 
      
使用して システムを。
使用 System.ServiceModelを。
使用して System.Threadingを。

名前空間 EssentialWCF
{
[のServiceContract]
パブリック インターフェース IGoodStockService
{
[OperationContract]
二重 GetStockPrice( 文字列 ティッカー)。
}
【のServiceContract]
パブリック インターフェース IGreatStockService
{
[OperationContract]
二重 GetStockPriceFast( 文字列 ティッカー)。
}
【のServiceContract]
パブリック インターフェイス IALLStockServices:IGoodStockService、
IGreatStockService {}。
パブリック クラス AllStockServices:IALLStockServices
{
公共 ダブル GetStockPrice( 文字列 ティッカー)
{
のThread.sleep(
5000 );
返す 94.85を
}
公共 ダブル GetStockPriceFast( 文字列 ティッカー)
{
戻り 94.85を
}
}
}
3つの契約の2.11リストは、複数のエンドポイントプロファイルを公開します。2つのエンドポイントIGreateStockService契約とIAllStockServicesのための契約の終了の終了ポイントIGoodStockService契約は、あります。
複数のエンドポイントがあるため、アドレス指定方式共有し、各エンドポイントは、異なるアドレスを定義する必要があります。相対アドレスを使用するので、各エンドポイントの完全なアドレスは、サービスのベースアドレスに加えて相対アドレスです。
2.11サービスにおけるエンドポイントのリストより多くの露出
 
      
<? XMLバージョン= "1.0"エンコード= "UTF-8" ?> < 設定> < system.serviceModel > < サービス> < サービス名は= "EssentialWCF.StockServices"



behaviorConfiguration = "mexServiceBehavior" > < ホスト> < baseAddresses > < 追加BASEADDRESS =に"http:// localhost:8000 / EssentialWCF" /> </ baseAddresses > </ ホスト> < エンドポイント= "GoodStockService" バインディング= "basicHttpBinding" 契約= "EssentialWCF.IGoodStockService" /> < エンドポイント= "BetterStockService" アドレス= "より良い" バインディング=」basicHttpBinding」 契約











= "EssentialWCF.IGreatStockService" /> < エンドポイント= "BestStockService" アドレス= "最高の" バインディング= "wsHttpBinding" 契約= "EssentialWCF.IGreatStockService" /> < エンドポイント名は= "AllStockServices" アドレス= "すべて" バインディング= "wsHttpBinding " 契約=" EssentialWCF.IAllStockServices」/> < エンドポイント= "MEX" バインディング= "mexHttpBinding" 契約= "IMetadataExchange"</サービス> </ サービス>













</ system.serviceModel > </ 設定>
IGreatStockService契約が複数のエンドポイントに露出しているため、契約のプロキシインスタンスを作成する際に、クライアントアプリケーションは、エンドポイント名を参照する必要があります。エンドポイント名が確認されていない場合は、それが使用するエンドポイントを知ることができないので、WCFはエラーをスローします。2回使用2.12 GreatStockServiceClientエージェントのリストを示しています。一回一回wsHttpBindingアクセスBestStockServiceで、basicHttpBindingアクセスBetterStockServiceを使用。
複数のエンドポイントは、各エンドポイントを確認するために名前を使用して定義されているリスト2.12
 
      
使用 (localhost.GreatStockServiceClientプロキシ = 新しいClient.localhost.GreatStockServiceClient(" BetterStockService " )){ Console.WriteLineを(proxy.GetStockPriceFast(" MSFT " ))。} 使用(localhost.GreatStockServiceClientプロキシ= 新しいClient.localhost.GreatStockServiceClient(" BestStockService " )){ Console.WriteLineを(proxy.GetStockPriceFast(" MSFTを" )); }








==========

より転載

著者: DanielWise
出典: http://www.cnblogs.com/danielWise/
この記事は、執筆者に属し、公園の合計をブログ、転載することを歓迎しますが、この節で宣言され、著者の同意なしに保持され、記事ページの見かけ上の位置に元の接続を指定する必要がありますそうでない場合は、法的責任を追及する権利。
 

ます。https://www.cnblogs.com/llbofchina/archive/2011/06/27/2091372.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33816946/article/details/94206772