2010-09-14 35 views
1

首先,道歉,如果這是一個基本的/簡單的WCF問題,我是一個WCF新手,迄今沒有遇到過。WCF數據編組

問題1 - 有沒有辦法查看在wcf服務調用中編組數據的方法?

並給予該業務是單獨的機器上託管的定義如下

Interface IX 
{ 
    List<string> list; 
    Dictionary<string,MyType> dict; 
} 

Interface IY : IX 
{ 
    List<string> list2; 
    Dictionary<string,MyType2> dict2; 
} 

Interface IService 
{ 
    DataSet MethodX(IX arg); 
    DataSet MethodY(IY arg); 
} 

class service : IService { } 
class A : IY { } 

問題2 - 得到什麼叫MethodX & MethodY時,按如下

A instance = new A(); 
service s = new service(); 
// init instance & Service 
s.MethodA(instance);    // what carries over to service on machine B ? 
s.MethodB(instance);    // same question - full A or only properties of IY ? 

回答

2

跨運答案1:要查看序列化數據,您可以使用WCF message logging

答案2:沒什麼。代碼會拋出異常,因爲arg參數沒有可序列化的類型。

+0

將看看記錄的東西, – Kumar 2010-09-15 21:13:23

0

我不會觸及你的例子,因爲我不確定它是否是僞代碼,而且我認爲當你學習時你會意識到它在哪裏做出了很多假設。

現在:

安裝「小提琴手」,並啓動它(從IE一個新的菜單),看看實際的流量傳過來的電線。

或者,首先處理DataContractSerializer。在涉及WCF之前,在一個簡單的控制檯應用程序中構建和序列化一些類並理解發生了什麼。

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx

WCF,在一個很簡陋感,是一個系統,用於自動構建的API定義(WSDL),建立網絡連接,(反)序列化對象,併發送它們通過連接和路由他們正確的方法在遠程班上。

當您不可避免地遇到WCF錯誤時,保留您的測試應用程序以備將來排除故障。

在測試平臺中,您無需錯誤就可以知道您的類/合約序列化,如果它們沒有錯誤,那麼在控制檯應用程序中查看錯誤和解決問題比使用WCF應用程序更容易。

盧克

+0

它_very_原油感。您省略了基於REST的服務,它不使用WSDL或任何形式的元數據;不使用網絡的綁定(netMsmqBinding);並不是每個服務都基於遠程類中的方法(有些甚至不能在.NET上運行)。 – 2010-09-16 19:43:15

+0

當然。我的觀點是,所有這些都是關於數據交換和序列化 - 保持簡單,這個人剛剛開始。 – 2010-09-16 19:48:40

+0

這是非網絡服務器,所以不能使用提琴手 – Kumar 2010-10-22 15:13:23