2009-07-22 12 views
2

私は重要な属性を持つdatacontractを持っています。 はたとえば、次のコードで:WCFのDataContractsに属性を渡す

[DataMember] 
[Description("My Description")] 
public string Name { get; set; } 

私は説明属性は、クライアントプロキシに自動生成することにしたいです。

大規模な複製以外にも、解決策または回避策がありますか?

多くの感謝!

答えて

1

あなたはそうではありません。オブジェクトのインスタンスを渡すのではなく、テキストメッセージを渡すことを忘れないでください。

もし本当に重要なのであれば、生成されたプロキシクラスを放棄して、代わりにデータオブジェクトと契約の実装を共有することができますが、これは一層の作業であり、もちろんクライアントとサーバが外れるリスク同期の

あなたは、あなたはおそらくの作成にかなり深く掘り下げなければならないだろう、次の

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(); 
+0

私はそれがアセンブリ(あるいはソースコード)を共有することはできません。つまり、私のクライアントは、Silverlightであることを、言及を忘れてしまいました。 – Tomerico

+0

さて、結果として生じるDLLではなく、プロジェクト自体を共有し、毎回それを再コンパイルすることができます。 – blowdart

+0

あなたはまたいくつかのソースファイルをプロジェクトの続きからリンクすることができます。これはWCF RIAがそのファイルのいくつかで行うことです。 –

0

を試し、その後、パブリック修飾子で、別のアセンブリにあなたの契約および操作インタフェースを置くことを試してみたい場合はこれらの属性をクライアントが検出して再作成できる形式で渡すために、サービス記述(および結果のWSDLファイル)を作成します。不可能に近い、本当に。

プラス:WCFは相互運用可能に設計されていることを覚えておいてください。JavaまたはPHPクライアントは、これらの属性を実際にどうすればよいでしょうか。

サービス指向プログラミングは、「通常の」コンポーネントベースのシステムまたはオブジェクトベースのシステムとはまったく違っています。基本的には、テキストやバイナリ形式のメッセージを渡すだけです。これは、.NETベースのオブジェクトやコンポーネントを扱う際に慣れ親しんでいることを制限しています.SOAの世界では、動作が異なるだけです。

マルク・

関連する問題