質問

私はWCFは、接続の両側でDataContractsがまったく同じであることを確認してください(とそうでない場合は接続しようとする例外をスロー)を持つことが可能である場合と思いまして。

たとえば、このサービスを想像します:

[DataContract]
enum State
{
    [EnumMember]
    Red,
    [EnumMember]
    Yellow,
    [EnumMember]
    Green
}

[ServiceContract]
interface MyService
{
    [OperationContract]
    void SetState(State newState);
}

これでサービスが更新され、新しい国家、「オレンジ」をサポートしている想像してみてください。上記のようにクライアントがまだのDataContractを持っています。

のサービスへのクライアントからのすべての呼び出しが失敗する今、私がしたいのクライアントとサービスが同じのDataContractを使用していないので。これは可能でしょうか?

任意の助けを事前に感謝!

役に立ちましたか?

解決

さて、あなたは本当にに関するすべてのこと多くを行うことはできません - しかし、あなたは、バージョンXML名前空間を使用してデータ契約できた - このような何かます:

[DataContract(Namespace="http://data.yourcompany.com/DataSchema/2009/11")]
enum State
{
    [EnumMember]
    Red,
    [EnumMember]
    Yellow,
    [EnumMember]
    Green
}

あなたのクライアントは、このデータコントラクトを使用する - XML名前空間と

あなたは来月サーバー上のデータコントラクトを変更する場合は、あなたがにXML名前空間を変更することができます:

[DataContract(Namespace="http://data.yourcompany.com/DataSchema/2009/12")]
enum State
{
 ....
}

あなたは新しいデータのみの契約に新しいエンドポイントを持っている「/ 2009/11」データコントラクトを使用して、すべてのサービスエンドポイントを引退した場合、クライアントが正常にXML名前空間以来(もうあなたのサービスのメソッドを呼び出すことができなくなります2 DataContractsの)一致していません。

たぶんそれが進むべき道だろうか?

マルク

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top