本文demo已上传至github:xinyuehtx/WCFdemo
宇宙起源于helloworld
开启宇宙第一IDE——visual studio。创建一个工程
我们看到vs已经为我们提供了许多wpf的默认模板。
但是作为入门教程,建议大家创建一个.NET Framework 的控制台应用,然后一步步进行开发。
因为WCF一开始设计是专用于windows平台的,而.NET Core是跨平台的。
在写这篇博客时,WCF在github有一个.NET Core相关的社区开源项目,正在实现.NET版本的WCF。
但是遗憾的是目前这个版本功能还远不及.NET Framework 版本的WCF强大。所以在这个系列的博客中都会采用.NET Framework 版本的WCF(以后不再对此做区分)
回归正题,首先我们需要建立一个协定
我们建立一个接口IHelloWorld
然后添加ServiceContract
特性
然而vs给出了错误提示,说明我们需要添加一个额外的库System.ServiceModel
我们添加了对应的库后和using之后,就可以正常编译了。
不过光有服务不行,还需要服务对应的方法,比如这里使用OperationContract
标记SayHello方法
接下来就是对服务的实现
接着我们就可以使用ServiceHost
启动这个服务。这里我们使用localhost的8888端口注册一个HelloWorld服务
接着是客户端,我们同样使用控制台作为承载程序。
这个客户端继承了ClientBase<T>
的抽象类,并且实现IHelloWorld
接口,实际上是搭建了服务的一个代理。
而在使用时在调用IHelloWorld
接口方法即调用服务的实现。
当然除此之外我们还需要指定通信方式和服务地址,所以我们需要创建一个构造函数,对这些配置进行传入。(当然,也可以通过配置文件等方式进行设置)
好,现在我们可以启动这个客户端了,这里需要指定下绑定方式为TCP,服务地址端口要正确。
最后我们看下效果
我们看到启动服务和客户端,客户端调用SayHello
方法,服务端成功响应。
参考链接:
本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/wcf%E5%85%A5%E9%97%A8-2.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。