我有一個datacontract,它具有重要的屬性。 例如,下面的代碼:在WCF的DataContracts上傳遞屬性
[DataMember]
[Description("My Description")]
public string Name { get; set; }
我想Description屬性是在客戶端代理自動生成。
除了大量重複之外,是否有解決方案或解決方法?
非常感謝!
我有一個datacontract,它具有重要的屬性。 例如,下面的代碼:在WCF的DataContracts上傳遞屬性
[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世界中的作用不同。
馬克
我忘了提,我的當事人是在Silverlight中,這意味着它無法將共享組件(或者甚至是源代碼)。 – Tomerico 2009-07-22 08:38:05