前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019-1-23-wcf入门(2)

2019-1-23-wcf入门(2)

作者头像
黄腾霄
发布2020-06-10 11:25:57
3920
发布2020-06-10 11:25:57
举报
文章被收录于专栏:黄腾霄的博客黄腾霄的博客

本文demo已上传至github:xinyuehtx/WCFdemo

宇宙起源于helloworld


HelloWorld

开启宇宙第一IDE——visual studio。创建一个工程

1548226798672
1548226798672

我们看到vs已经为我们提供了许多wpf的默认模板。

但是作为入门教程,建议大家创建一个.NET Framework 的控制台应用,然后一步步进行开发。

1548227312904
1548227312904
来自灵魂的拷问 ——为什么不用 .NET Core?

因为WCF一开始设计是专用于windows平台的,而.NET Core是跨平台的。

在写这篇博客时,WCF在github有一个.NET Core相关的社区开源项目,正在实现.NET版本的WCF。

但是遗憾的是目前这个版本功能还远不及.NET Framework 版本的WCF强大。所以在这个系列的博客中都会采用.NET Framework 版本的WCF(以后不再对此做区分)

回归正题,首先我们需要建立一个协定

我们建立一个接口IHelloWorld 然后添加ServiceContract特性

1548228465251
1548228465251

然而vs给出了错误提示,说明我们需要添加一个额外的库System.ServiceModel

1548228587325
1548228587325

我们添加了对应的库后和using之后,就可以正常编译了。

1548228703341
1548228703341

不过光有服务不行,还需要服务对应的方法,比如这里使用OperationContract标记SayHello方法

1548249630065
1548249630065

接下来就是对服务的实现

1548250515636
1548250515636

接着我们就可以使用ServiceHost启动这个服务。这里我们使用localhost的8888端口注册一个HelloWorld服务

1548250564801
1548250564801

接着是客户端,我们同样使用控制台作为承载程序。

1548251420447
1548251420447

这个客户端继承了ClientBase<T>的抽象类,并且实现IHelloWorld接口,实际上是搭建了服务的一个代理。

而在使用时在调用IHelloWorld接口方法即调用服务的实现。

当然除此之外我们还需要指定通信方式和服务地址,所以我们需要创建一个构造函数,对这些配置进行传入。(当然,也可以通过配置文件等方式进行设置)

1548252010689
1548252010689

好,现在我们可以启动这个客户端了,这里需要指定下绑定方式为TCP,服务地址端口要正确。

1548252097073
1548252097073

最后我们看下效果

1548252387722
1548252387722

我们看到启动服务和客户端,客户端调用SayHello方法,服务端成功响应。

参考链接:


本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/wcf%E5%85%A5%E9%97%A8-2.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-01-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HelloWorld
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档