簡體   English   中英

對WCF服務感到困惑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM