哪有什么岁月静好,不过是有人替你负重前行!

01WCF概述与快速上手

 

 

一、WCF概述(为什么要学习WCF?)

1. WCF的概念:Windows Communication Foundation:通信框架)是基于微软.NET平台编写分布式应用的统一编程模型。

2. .NET平台下,常见的有三种分布式技术:

1】 webservice  基于http协议的soap模式(ASP.NET中用过)。

2】 remoting    也是一种分布式架构技术,常常用于tcp模式的二进制传输。

3】 MSMQ   这是一种分布式的离线式技术,用于业务解耦。

分布式技术太多,使用不方便,需要整合,WCF应运而生!因此,WCF本质就是对上面技术的再次封装。

 

二、快速搭建一个WCF程序(基本步骤)

1. 添加一个普通的控制台程序:01_MyFirstWCF

2. 添加“新建项”,找到“WCF服务”模板,取名为“TeachService

3. 观察生成的项目内容:

1)自动添加了接口:将WCF服务命名为TeachService,系统自动生成ITeachService接口,并自动实现接口,并特别注意:

在接口类上添加了 [ServiceContract]特性,表示这个接口类遵循WCF协定。

接口方法上自动添加 [OperationContract]特性,表示这个方法是服务协定的一部分。

只有添加了以上特性,才保证接口被WCF运行时获取到。将接口方法改成:string GetCourseName(int courseId)并实现具体的接口内容:

 

2)观察和定义配置文件:App.config

WCF服务添加后,在App.config中所有的定义都应该在 system.serviceModel这个配置节点下面。

在这里我们对其他节点,先忽略,重点观察下面的节点:

 

基于WCF实现客户端和服务端通信,必须了解ABC的概念:

A: Address【地址】:表示在哪里(where)?服务的地址就像我们访问web的时候,有一个地址。对于Http来说有http://myserver/myservice;对于Tcp,地址:net.tcp://myserver:8080/myservice

B: Binding 【绑定】: 表示怎么做(How)?就是我们Client和Service的通道,比如说我们访问web,我们使用http通道。那么wcf支持哪些通道? BasicHttpBinding [WSHttpBinding], NetTcpBinding,netMSMQBinding.

C:Contract【契约】:表示内容是什么(Content)?也就是我们定义的接口是什么样的参数、返回值、接口名称等。

特别注意:  

<service name="_01_MyFirstWCF. ITeachService ">节点下:

 address里面的值如果为空的话,以下面的节点为准:

 

这个节点的具体值,可以自己设定,比如设置如下:

 

3)承载WCF服务:

谁能够承载?也就是说宿主是谁?宿主:IIS、Console、Winform等都宿主。下面示例用Console项目为宿主:

 

运行测试,测试成功!

 

如果以上启动出现下面的错误:

 

修改方法:一定要获取管理员权限。右键点击“VS2015”选择“以管理员权限运行,否则会出现上面的错误!

关闭控制台,直接找到exe文件启动服务!如果还是出现以上错误,请右键点击exe文件,以管理员身份运行即可。

4)创建Client客户端程序,使用WCF服务。

1】创建可执行的客户端控制台程序01_TestClientApp。

2】添加服务引用,把配置文件中的地址(baseAddress节点的值)复制进去,找到服务引用。修改命名空间:MyWCFService,然后确定。

 

点击确定后,观察App.config配置文件,已经添加了对wcf服务的引用。

3】在Main方法中使用服务(和webservice相同)调用方法后,效果如下:

 

以上效果请参考代码:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-07-04 10:36  大果冻  阅读(402)  评论(0)    收藏  举报