山东11选5计划软件

WCF中使用nettcp协议进行通讯的方法

 更新时间:2019年07月12日 14:24:02   山东11选5:hcb   我要评论

这篇文章主要给大家介绍了关于WCF中使用nettcp协议进行通讯的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用WCF具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

快速阅读

山东11选5计划软件如何在wcf中用net tcp协议进行通讯,一个打开Wcf的公共类。比较好好,可以记下来。 配置文件中注意配置 Service,binding,behaviors. Service中配置endpoint 指明abc ,binding中配置tcp通讯的要关参数,behaivor中配置http请求的 地址

1.建立服务服务端

还是用上次的代码,提供一个user类,实现一个方法

[ServiceContract]
 public interface IUser
 {
 [OperationContract]
 string GetUserInfo();
 }
[ServiceContract]
 public interface IUser
 {
 [OperationContract]
 string GetUserInfo();
 }

2.ServiceHostManager公有类

通过公有类可以减少代码编写量,可以保存下来,以后用的时候 直接拿来用

public interface IServiceHostmanager : IDisposable
 {
 void Start();
 void Stop();
 }

 public class ServiceHostManager<TService>:IServiceHostmanager 
 where TService:class
 {
 private ServiceHost host;
 public void Dispose()
 {
  Stop();
 }

 public ServiceHostManager()
 {
  host=new ServiceHost(typeof(User));
  host.Opened+= (sender, e) =>
  {
  Console.WriteLine("wcf服务已经启动监听{0}",host.Description.Endpoints[0].Address);
  };
  host.Closed+= (sender, e) =>
  {
  Console.WriteLine("wcf服务已经启动关闭{0}", host.Description.Endpoints[0].Address);
  };
 } 
 public void Start()
 {
  Console.WriteLine("正在启动wcf服务{0}",host.Description.Endpoints[0].Name);
  host.Open();
 }

 public void Stop()
 {
  if (host != null && host.State == CommunicationState.Opened)
  {
  Console.WriteLine("正在关闭wcf服务{0}", host.Description.Endpoints[0].Name);
  host.Close();
  }
  
 }

 public static Task StartNew(CancellationTokenSource conTokenSource)
 {
  var task = Task.Factory.StartNew(() =>
  {
  IServiceHostmanager shm = null;
  try
  {
   shm = new ServiceHostManager<TService>();
   shm.Start();
   while (true)
   {
   if (conTokenSource.IsCancellationRequested && shm != null)
   {
    shm.Stop();
    break;
   }
   }
  }
  catch (Exception ex)
  {
   Console.WriteLine(ex.Message);
   if (shm != null) shm.Stop();
  }
  },conTokenSource.Token);
  return task;
 }
 }

3.配置的相关参数

配置文件中注意配置 Service,binding,behaviors. Service中配置endpoint 指明abc ,binding中配置tcp通讯的要关参数,behaivor中配置http请求的 地址

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <system.serviceModel>
 <services>
 <service name="hcbServiceB.User" behaviorConfiguration="userBehavior">
 <endpoint address="net.tcp://localhost:12345/User" binding="netTcpBinding" contract="hcbServiceB.IUser">
  <identity>
  <dns value="localhost"/>
  </identity>
 </endpoint>
 </service>
 </services>
 <bindings>
 <netTcpBinding>
 <binding name="netTcpBindingConfig" closeTimeout="00:30:00" openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="100" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="100" maxReceivedMessageSize="2147483647">
  <readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647 " maxBytesPerRead="4096" maxNameTableCharCount="16384" />
  <reliableSession ordered="true" inactivityTimeout="00:30:00" enabled="false" />
  <security mode="Transport">
  <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
  </security>
 </binding>
 </netTcpBinding>
 </bindings>
 <behaviors>
 <serviceBehaviors>
 <behavior name="userBehavior">
  <serviceMetadata httpGetEnabled="True" httpGetUrl="http://localhost:8081/User" />
  <serviceDebug includeExceptionDetailInFaults="True" />
  <serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000" />
 </behavior>
 
 </serviceBehaviors>
 </behaviors>
 </system.serviceModel>

</configuration>

4.启动服务

控制台中启动服务

 static void Main(string[] args)
 {
 Console.WriteLine("初始化...");
 Console.WriteLine("服务运行期间,请不要关闭窗口。");
 Console.Title = "wcf net tcp测试 ";
 var cancelTokenSouce = new CancellationTokenSource();
 ServiceHostManager<User>.StartNew(cancelTokenSouce);
 while (true)
 {
  if (Console.ReadKey().Key == ConsoleKey.Escape)
  {
  Console.WriteLine();
  cancelTokenSouce.Cancel();
  break;
  }
 }
 }

5wcftesttoos软件测试

软件路径位于,可以根据自己安装vs的目录去找。
D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE

测试


参考:

WCF绑定netTcpBinding寄宿到控制台应用程序:http://pkufys.com/article/165257.htm

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对山东11选5计划软件的支持。

您可能感兴趣的文章:

相关文章

  • AJAX使用post发送数据xml格式接受数据

    AJAX使用post发送数据xml格式接受数据

    AJAX使用post发送数据xml格式接受数据,需要的朋友可以参考一下
    2013-03-03
  • VS2013安装时如何避开IE10的限制

    VS2013安装时如何避开IE10的限制

    这篇文章主要介绍了VS2013安装时如何避开IE10的限制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • ASP.NET缓存方法分析和实践示例代码

    ASP.NET缓存方法分析和实践示例代码

    尽早缓存;经常缓存 您应该在应用程序的每一层都实现缓存。向数据层、业务逻辑层、UI 或输出层添加缓存支持。
    2008-11-11
  • ajaxToolkit:CalendarExtender演示与实现代码

    ajaxToolkit:CalendarExtender演示与实现代码

    Ajax的CalenderExtender的日期选择实现介绍,感兴趣的你可以了解下,就当是巩固知识,希望本文对你有所帮助
    2013-01-01
  • .NET Core 2.0如何生成图片验证码完整实例

    .NET Core 2.0如何生成图片验证码完整实例

    这篇文章主要给大家介绍了关于.NET Core 2.0如何生成图片验证码的相关资料,该功能主要是利用ZKWeb.System.Drawing来实现,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • asp.net实现图片以二进制流输出的两种方法

    asp.net实现图片以二进制流输出的两种方法

    这篇文章主要介绍了asp.net实现图片以二进制流输出的两种方法,以简单实例形式分析了asp.net实现以二进制流形式读写图片文件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-12-12
  • NET Core TagHelper实现分页标签

    NET Core TagHelper实现分页标签

    这篇文章主要介绍了NET Core TagHelper实现分页标签,讲述实现一个简单分页和总要注意步奏,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 微信公众平台开发之地理位置.Net代码解析

    微信公众平台开发之地理位置.Net代码解析

    这篇文章主要为大家详细解析了微信公众平台开发之地理位置.Net代码,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • .net4.0中tuple元组的使用方法

    .net4.0中tuple元组的使用方法

    Tuple是.NET 4.0的新特性,主要功能是动态返回数据结构,也可以用做临时数据结构。现在有了元组[Tuple],看看它怎么用
    2014-02-02
  • ASP.NET MVC 3实现访问统计系统

    ASP.NET MVC 3实现访问统计系统

    我们将介绍用ASP.NET MVC 3实现一个访问统计系统,包括统计代码和Cookie等方面,希望对大家有所帮助。
    2015-10-10

最新评论

众盈彩票网址 - 杭可科技 新生彩票娱乐平台网址 好乐多彩票平台网址 - 长乐市工艺美术协会