重要な属性を持つデータコントラクトがあります。たとえば、次のコードでは:
[DataMember]
[Description("My Description")]
public string Name { get; set; }
クライアント プロキシで Description 属性を自動生成する必要があります。
大規模な複製以外に解決策や回避策はありますか?
どうもありがとう!
重要な属性を持つデータコントラクトがあります。たとえば、次のコードでは:
[DataMember]
[Description("My Description")]
public string Name { get; set; }
クライアント プロキシで Description 属性を自動生成する必要があります。
大規模な複製以外に解決策や回避策はありますか?
どうもありがとう!
あなたはそうではありません。オブジェクトのインスタンスを渡すのではなく、テキスト メッセージを渡すことに注意してください。
本当に重要な場合は、生成されたプロキシ クラスを放棄し、代わりにデータ オブジェクトとコントラクトの実装を共有できますが、これにはさらに多くの作業が必要であり、もちろん、クライアントとサーバーが同期しなくなるリスクがあります。
それを試してから、コントラクトと操作インターフェイスをパブリック修飾子を使用して別のアセンブリに入れ、次のことを試してください。
Binding binding = new BasicHttpBinding(); // or which one you
EndpointAddress endpoint =
new EndpointAddress("endpointUrl");
ChannelFactory<IServiceInterface> channelFactory =
new ChannelFactory<IServiceInterface>(binding, endpoint);
IServiceInterface client = channelFactory.CreateChannel();
MyDataType result = client.Operation(myOtherDataType);
((IClientChannel)client).Close();
クライアントが属性を検出して再作成できるような形式でこれらの属性を渡すには、おそらくサービス記述 (および結果の WSDL ファイル) の作成をかなり深く掘り下げる必要があります。ほぼ不可能です、本当に。
さらに、WCF は相互運用できるように設計されていることを思い出してください。Java または PHP クライアントはこれらの属性を実際にどう処理すればよいのでしょうか。
サービス指向プログラミングは、「通常の」コンポーネント ベースまたはオブジェクト ベースのシステムとはまったく異なります。基本的に、テキスト形式またはバイナリ形式でメッセージをやり取りするだけです。これにより、.NET ベースのオブジェクトやコンポーネントを扱う際に慣れ親しんだ特定のことが制限されます。SOA の世界では動作が異なるだけです。
マルク