我完全不瞭解這個WCF服務的事情,所以任何指導方針將不勝感激。關於WCF服務的困惑
我收到一個大型項目,其代碼用於檢查某個設備的網絡狀態。我的老闆告訴我要搜索TCPSocket的創建並更改套接字上的某些選項。
檢查網絡狀態的函數是ReqDDCNetworkStatus。當然,我搜索的代碼的來源,並在我的服務引用發現這個界面:
public interface LGeDDC
{
[System.ServiceModel]
[System.ServiceModel.XmlSerializerFormatAttribute()]
[return: System.ServiceModel.MessageParameterAttribute(Name="result")]
string ReqDDCNetworkStatus(out string status);
}
此文件被稱爲References.cs,我以爲它是從一個WSDL(SOAP)文件運行svcutil.exe的產生用於在程序和相關設備之間進行通信。
這與實際功能的類,它被調用:
namespace XrayEngines.DDCService
{
public partial class LGeDDCClient : System.ServiceModel.ClientBase<LGeDDC>, LGeDDC
{
public LGeDDCClient(string endpointConfigurationName, string remoteAddress) :
base(endpointConfigurationName, remoteAddress)
{
}
public string ReqDDCNetworkStatus(out string status)
{
return base.Channel.ReqDDCNetworkStatus(out status);
}
}
}
因此函數會以下列方式被稱爲:
try
{
for (int i = 0; i < p.Length; i++)
{
v = ddc.ReqDDCNetworkStatus(out r);
writeMessage("v:" + v + " , r:" + r);
}
}
catch (Exception e)
{
writeMessage("Network Exception Occurred: ."+e.ToString());
}
而且我迷路了。我從字面上看不到任何在客戶端和服務器之間建立連接的任何事情,但該程序起作用。如果有人能夠以這種方式提供關於如何建立連接的解釋,我會非常感激。
我真的很感激確切和迅速的迴應。我明白,WCF中的服務是在客戶端和服務器之間發送數據的更高級別的抽象,以便您不必混淆套接字。但是有可能研究服務實際傳輸消息的詳細過程嗎? – l46kok
也只是出於好奇,ClientBase使用什麼協議來傳輸消息? – l46kok
它取決於'> .config文件中配置的內容坐下並深呼吸後,請參閱:http://msdn.microsoft.com/en-us/library/ms731734.aspx –