0

我是 WCF 的新手,但我对 Web 服务(ASMX 文件)有点熟悉

我有几个关于 wcf 客户端配置条目的问题

当我们创建任何 Web 服务 (ASMX) 代理时,不会像下面的条目那样在配置文件中添加任何内容,但在 WCF 的情况下,会添加下面的条目。我只需要知道以下条目的重要性。

1)如果我删除这些下面的条目会发生什么......我不能从客户端调用服务吗?

2)当我们从客户端调用Web服务时告诉我,如果客户端添加了多个端点地址,我该怎么说我的服务将使用哪个端点地址来调用服务?

3) 当我进行服务调用时,如何从cient 方面明确提及Web 服务URL?

<system.serviceModel>
    <bindings>
        <wsDualHttpBinding>
            <binding name="WSDualHttpBinding_ICommService" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:00:05"
                bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00" />
                <security mode="Message">
                    <message clientCredentialType="Windows" negotiateServiceCredential="true"
                        algorithmSuite="Default" />
                </security>
            </binding>
        </wsDualHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost/CommService/"
            binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_ICommService"
            contract="Services.ICommService" name="WSDualHttpBinding_ICommService">
            <identity>
                <dns value="localhost" />
            </identity>
        </endpoint>
    </client>
</system.serviceModel>
4

1 回答 1

1

是的,这些是 WCF 所需的重要配置。您可以通过配置文件或代码提供它。

1)您需要在某个地方提供它。如果你把它们从配置中拿走。您应该在代码中执行此操作。

2) WCF 具有 ABC 的基本规则。地址,绑定和合同。同样,如果它已经在您的配置文件中,您不必说什么。

对于多个客户。您还可以从配置文件中提及端点名称。例如

MyClient someClientObject = new MyClient("WSDualHttpBinding_ICommService");

3) 默认情况下,当您添加服务引用操作时,WCF 运行时会为您提供客户端代理。

您可以通过简单的方式做到这一点。无参数。

MySVCClient svcproxy = new MySVCClient();

你需要有你的服务合同的条目。您还可以使用如下构造函数...使用端点地址和投标等。

BasicHttpBinding myBinding= new BasicHttpBinding(SecurityMode.None);   
EndpointAddress endpointAdd= new EndpointAddress("http://localhost/CommService/");
MySVCClient svcproxy = new MySVCClient (myBinding, endpointAdd);

由于您在这里定义了代码中的所有内容。您不需要配置文件中的任何内容。

于 2013-02-07T15:12:39.637 回答