0

私は4つの異なるクライアントを持つWCF Webサービスを持っています.クライアントの1つはより多くの機能を望んでいるので、新しい DataContract といくつかの既存のものを使用する新しい OperationContract を追加しています

  • 既存の操作コントラクトまたは DataContracts は変更されていません
  • 新しい OperationContracts といくつかの新しい DataContracts を追加するだけです

    1. すべてのクライアントがサービス参照を更新する必要がありますか? (または、新しいメソッドの追加機能を必要としないクライアントは、そのままサービスを使用し続けることができます)

    2. すべてのクライアントがサービス参照を更新する必要がある場合、それを回避する方法はありますか? (新しい operationContract を使用したいクライアントのみがサービス参照を更新する必要があります)

netTcp と basichttp バインディングがあります

4

2 に答える 2

0

既存のクライアントを変更する必要はありません。内部では、クライアントとサーバー間のコントラクトは、特定の操作のスキーマに基づく SOAP メッセージです。これらの操作は変更されていないため、石鹸は同じであるため、クライアントは機能します。

于 2013-07-25T22:16:07.030 に答える
0

この優れた MSDN 記事に示されているように、バージョン管理に関しては、WCF は非常に柔軟です。MEX エンドポイントを介して自動的に公開されるサービス コントラクトを変更すると、すべてのクライアントが新しい変更にアクセスできるようになります。

サービスによって公開されるコントラクトを厳密に制御する場合は、MEX エンドポイントをオフにして、編集した WSDL (および singlefile を使用しない場合は適切なXSD ) ファイルを特定のクライアントに配布できます。これをセキュリティ対策と見なさないでください。これは、サービスが明らかにしているより多くの操作をサポートしているという事実を「覆い隠す」だけだからです。

異なるコントラクトを保護する必要がある場合は、個別のサービスを作成して、適切なコントラクトを許可されたクライアントに公開する必要があります。

于 2013-07-24T14:24:13.940 に答える