[英]Confused about WCF Services
我對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());
}
而我迷路了。 從字面上看,我什么都看不到在客戶端和服務器之間建立任何連接,但是該程序可以正常工作。 如果有人能以這種方式建立連接的背后提供解釋,我將非常感謝。
神奇之處在於這兩行:
public partial class LGeDDCClient : System.ServiceModel.ClientBase<LGeDDC>
和
return base.Channel.ReqDDCNetworkStatus(out status);
代理類從ClientBase繼承,該類實現消息的實際發送(執行遠程調用)。
基類System.ServiceModel.ClientBase完成所有連接工作。 您只需設置服務的URL和其他一些參數,這通常是使用配置文件來完成的。 檢查配置文件中的服務端點,參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.