一、什么是WCF
Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由.NET Framework 3.0开始引入。
WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。
WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。
WCF专门用于面向服务开发。
客户机使用浏览器访问服务器A,服务器A为了业务需要与其他各种应用部署在服务器B、C、D…再通过WCF技术互相通信,相互访问…然而面向服务的好处不仅仅在此,他还提供了不同语言不同操作系统的可交互性。
二、创建WCF的基本流程
环境是建立在VS2017的基础上,不同版本VS操作上可能会有点不同
1、新建项目
2、创建之后,生成这样的目录
3、删除系统生成的两个文件IService1.cs与Service1.svc
4、添加自定义的WCF【服务文件】
添加自定义的WCF【服务文件】CalcServicce.svc,此时vs2017会自动生成WCF接口文件ICalcServicce.cs,我们在ICalcServicce中定义WCF方法PlusNumber,在CalcServicce.svc.cs对该接口的方法进行实现。
自定义的服务文件中自带了一个接口DoWork函数,如果不需要可以删除
5、创建服务内容
先创建接口
[ServiceContract]
public interface ICalcService
{
[OperationContract]
double PlusNumber(double num1,double num2);
}
大家可以看到,在WCF中的接口与普通接口的区别只在于两个上下文,其他的和我们正常学习的接口一样。定义这个上下文要添加System.ServiceModel的引用。
[ServiceContract],来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。
[OperationContract],来说明该方法是一个WCF接口的方法,不加的话同上。
6、调试
此时我们的第一个WCF服务程序就建立好了,将CalcServicce.svc“设为起始页”,然后F5运行一下试试,如下图所示,VS自动调用了WCF的客户端测试工具以便我们测试程序,然后双击PlusNumber()方法名,就会出现下图:
在请求窗口中的值中输入参数“num1”与“num2”,然后点击“调用”,在响应窗口中会出现返回值“WCF服务计算结果:num1+num2的值”,说明测试成功,点击下面的XML也可以看到XML的数据传输。我们现在建立好了服务的应用程序和业务逻辑。
7、将WCF部署到IIS
到IIS右击网站,然后添加网站,将下图的参数填上。
然后就可以浏览此服务
点击CalcService.svc,跳转到以下调用页面
点击 http://192.168.1.99:8022/CalcService.svc?wsdl,从这里可以看到我写的方法,这个地址也是我们后用将要引用的地址:
现在我们的WCF服务就算是已经部署完成了
三、调用WCF
1、创建一个Winform程序
2、选择添加服务引用
3、将服务地址输入选择转到
4、寻找到创建的服务CalcService选择确定
5,然后在项目中通过CalcService命名空间可以找到一个CalcServiceClient客户端实例化
public MainWindow()
{
InitializeComponent();
}
CalcService.CalcServiceClient client = new CalcService.CalcServiceClient();
private void Button_Click(object sender, RoutedEventArgs e)
{
double num1 = double.Parse(textBox.Text);
double num2 = double.Parse(textBox_Copy.Text);
label.Content = client.PlusNumber(num1, num2).ToString();
}