gpt4 book ai didi

wcf - 如何使用带有 net tcp 绑定(bind)和没有 mex 绑定(bind)的 WCF 服务

转载 作者:行者123 更新时间:2023-12-04 15:46:39 25 4
gpt4 key购买 nike

我安装了一个 Windows 应用程序,它使用 WCF 服务,我只是通过以下配置通过 Windows 服务中托管的 net tcp 绑定(bind)的 WCF 服务的配置文件,我想知道客户端如何能够使用这个 WCF 服务。应用程序使用此服务在 UI 中填充数据,并且它可以工作。当我尝试使用它时,我无法通过 WCF 测试客户端这样做。那么应用程序如何使用这个服务呢?

       <system.serviceModel>
<bindings>
<netTcpBinding>

<binding name="NetTcpBinding_FirstBindingServiceContract" closeTimeout="00:10:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="999999999" maxBufferSize="999999999" maxConnections="10"
maxReceivedMessageSize="999999999">
<readerQuotas maxDepth="999999999"
maxStringContentLength="999999999"
maxArrayLength="999999999"
maxBytesPerRead="999999999"
maxNameTableCharCount="999999999" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
<security mode="Transport">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehaviors">
<serviceMetadata />
</behavior>
</serviceBehaviors>
</behaviors>

<services>
<service name="MyService.DataAccessService" behaviorConfiguration="MyServiceBehaviors">

<endpoint bindingConfiguration="NetTcpBinding_FirstBindingServiceContract"
name="firstBinding" address="net.tcp://localhost:25488/MyDataAccessService/MyFirstBindingAddress"
binding="netTcpBinding"
contract="MyDataService.IMyDataAccessService">
</endpoint>
</service>
</services>
</system.serviceModel>

最佳答案

调用 WCF 服务需要了解三件事:

  • 地址 - 在哪里打电话 - 在你的情况下 net.tcp://localhost:25488/MyDataAccessService/MyFirstBindingAddress
  • 绑定(bind) - 使用什么协议(protocol)和参数(在你的情况下:netTcpBinding)
  • 契约(Contract) - 服务契约(Contract)(public interface IMyDataAccessService)定义所需的服务方法和参数

  • 一旦你有了这些东西,你就可以很容易地在代码中设置一个客户端:
    NetTcpBinding binding = new NetTcpBinding(NetTcpBinding.None);
    EndpointAddress address = new EndpointAddress("net.tcp://localhost:25488/MyDataAccessService/MyFirstBindingAddress");

    ChannelFactory<IMyDataAccessService> channelFactory = new ChannelFactory<IMyDataAccessService>(binding, address);
    IMyDataAccessService _clientProxy = channelFactory.CreateChannel();

    现在你的 _clientProxy可以轻松调用服务器上的方法,传入参数等。

    当然,要让它工作,你 必须有契约(Contract)!例如。你 必须有 访问定义服务契约(Contract)的文件(可能还有数据契约(Contract) - 来回发送的数据类型)。由于您使用的是 netTcpBinding ,我假设电线的两端都是使用 .NET 构建的。

    这些项目可以很容易地包含在单独的 中。类库服务开发人员和客户端开发人员都可以共享和使用的项目。

    关于wcf - 如何使用带有 net tcp 绑定(bind)和没有 mex 绑定(bind)的 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19162688/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com