java wcf服务 nettcp,WCF中使用nettcp协议进行通讯的方法

快速阅读

如何在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: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();

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请求的 地址

4.启动服务

控制台中启动服务

static void Main(string[] args)

{

Console.WriteLine("初始化...");

Console.WriteLine("服务运行期间,请不要关闭窗口。");

Console.Title = "wcf net tcp测试 ";

var cancelTokenSouce = new CancellationTokenSource();

ServiceHostManager.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

测试

9950692c02541daf3e7ce7cecddfb14c.png

参考:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值