WCF简单介绍

WCF(windows communication foundation)是微软推出的数据通信的统一编程模型,在WCF有四个主要的关键点:

abcd

Address(地址):定义服务的地址

Binding(绑定):定义通信的方式(传输协议等)

Contract(契约):定义服务的具体实现

enDpoint(终结点):由上面的abc共同构成终结点,用于服务端和客户端进行通信

WCF服务器创建

核心的dll:system.ServiceModel

由于WCF是面向服务的,面向接口的,所以首先需要创建一个服务接口

1.创建一个接口类IWCFTestService作为服务契约

2.创建一个接口的具体实现类WCFTestService

3.到此为止服务已经编写好了,接下来就是将这个服务放到宿主上,就可以作为服务被调用了。接下来创建一个控制台程序Host作为宿主。

 class Program
{
static void Main(string[] args)
{
//将服务启动起来
using(ServiceHost host=new ServiceHost (typeof(BLL.WCFTestService)))
{
host.Open();
Console.WriteLine("服务已经启动");
Console.ReadKey();
host.Close();
}
}
}

4.契约部分已经编写完毕,然后就是address、binding、endpoint,这些都是在配置文件中进行配置

<configuration>
<system.serviceModel>
<services>
<service name="BLL.WCFTestService" behaviorConfiguration="behaviorConfiguration">
<host>
<baseAddresses>
<add baseAddress="http://localhost:9000/"/>
</baseAddresses>
</host>
<endpoint address="http://localhost:9000/" binding="basicHttpBinding" contract="IBLL.IWCFTestService">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="behaviorConfiguration">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

5.启动控制台程序将服务挂起,然后在浏览器中输入终结点网址,http://localhost:9000/,如下所示,表示服务创建成功

6.接下来新建一个客户端,WindowsForm程序对创建的服务进行测试。可以直接跟WebService程序一样直接添加服务引用,系统生成代理类,然后调用相应的api

 private void button1_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtOne.Text) || string.IsNullOrEmpty(txtTwo.Text))
{
MessageBox.Show("请输入正确的数字");
}
else
{
double one = double.Parse(txtOne.Text);
double two = double.Parse(txtTwo.Text);
WCFServiceReference.WCFTestServiceClient client = new WCFServiceReference.WCFTestServiceClient();
double result= client.Add(one,two );
txtResult.Text = result.ToString();
}
}

 7.补充

WCF可以寄宿在任意类型的项目中,如何将WCF服务发布到IIS中去呢,只要创建一个空的web应用程序,然后将这个应用程序发布到IIS中就可以了,你需要在这个web项目中,添加一个“WCF服务”,这是一个一svc为后缀名的文件,添加后系统会默认的创建出契约的接口和实现类。只需要将服务的逻辑添加上,并修改配置文件即可。如果你希望将WCF寄宿到WindowsForm中去,最好不要将启动服务的代码写在Form()初始化中,应该写到Program.cs中,这样可以有效的避免,UI线程堵塞。

上面我们已经创建好了契约,那么如何将我们已经写好的契约添加到空的Web应用程序中呢?

1.添加一个文件。同时将文件的后缀名修改为svc,文件内容:

<%@ ServiceHost Service="BLL.WCFTestService" %>

2.配置web.config文件

<configuration>
<system.serviceModel>
<services>
<service name="BLL.WCFTestService" behaviorConfiguration="behaviorConfiguration">
<endpoint binding="basicHttpBinding" contract="IBLL.IWCFTestService">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="behaviorConfiguration">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

上面的配置文件中,没有对address进行配置,因为当部署到IIS上的时候,会为程序分配地址和端口号,服务默认的使用IIS的地址

WCF的简单使用的更多相关文章

  1. SharePoint 2013 调用WCF服务简单示例

    内容比较简单,主要记录自己使用SharePoint 2013WCF服务遇到的小问题和小经验,分享给大家,希望能够给需要的人有所帮助.好吧,进入正题! 第一部分 SharePoint 2013调用自带W ...

  2. WCF的简单

    WCF的简单 WCF的学习之旅 一.WCF的简单介绍  Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows ...

  3. 使用TT模板+mvc+wcf实现简单查询

    今天是除夕,小编的这篇博客是掐着点儿发的,在此,祝各位小伙伴新年快乐,身体健康,万事如意:喜从天降,欣喜若狂:喜气盈门,好事成双:好人好运,金玉满堂:神采飞扬,如愿以偿,财源滚滚来,福如东海长:伴随着 ...

  4. WCF通信简单学习实例

    最近在学习WCF通信,自己简单做个实例分享一下,环境是VS2015,使用的项目都是WPF的项目,其实大家用Winform或者Web项目也可以,都可以用的. 一.服务器端 1.创建WCF服务 服务名为W ...

  5. 利用WCF创建简单的RESTFul Service

    1):用VS2013创建一个WCF的工程,如下图所示: 2):我们来看一下默认状态下的config文件内容,这里的内容我们会再后续的步骤中进行修改 <?xml version="1.0 ...

  6. WCF创建简单程序

    1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序.建立完成后如下图所示: 2.删除系统生成的两个文件IService1.cs与Service1.svc,当然你也可以直接 ...

  7. WCF最简单的一次通信(有部分參考,多爲原創)

    不廢話,直接上乾貨 1.先创建一个wcf服务库,是服务类库,远程的lib 2.全部按照默认设置,不修改.然后点发布,会出现一个wcf测试客户端,可以看有没有发布成功. 3.msdn的wcf教程还要求输 ...

  8. WCF客户端简单动态配置服务地址

    本来想实现WCF服务无论放到哪个机器上,我的客户端都不需要重新编译,只需要配置一个服务的地址即可.各种百度找到了很多解决方案.但都比较繁琐,(只要因为个人小菜看不懂太多的代码)我对WCF内部机制还不了 ...

  9. WCF入门简单教程(图文) VS2010版

    在这个例子中我们将使用VS 2010 创建一个WCF服务,其中会了解 [DataContract] [ServiceContract] 等特性.  内置的 WCFSVCHost ,并使用“WCF测试客 ...

随机推荐

  1. linux环境中安装NRPE插件执行远程"本地资源"检查?NRPE安装?

    需求描述: 在安装完nagios之后,需要对本地资源进行监控,比如磁盘空间的使用,进程数,swap空间,等等.这些都不是通过网络提供出来的, 所以,都是本地资源,可以通过NRPE插件实现在客户端中采集 ...

  2. git链接github仓库

    配置Git 我们先在电脑硬盘里找一块地方存放本地仓库,比如我们把本地仓库建立在C:\MyRepository\1ke_test文件夹下 进入1ke_test文件夹 鼠标右键操作如下步骤: 1)在本地仓 ...

  3. iOS开发-- 使用VVDocumenter-Xcode添加代码注释

    在开发Java代码过程中,我们只需在Eclipse中敲/**即可生成字段.方法对应的文档,简单便捷. 在Xcode如果想添加文档注释,需要花费很多时间,有没有简单.快速的方法搞定这一切? 在网上搜索了 ...

  4. Mac上zip,rar,tar文件命令解压和压缩

    经常遇到在windowns上的压缩文件,在mac上解压出现问题,特意总结了下在Terminal里常用命令的方式解压和压缩文件 1.zip压缩文件 zip命令的参数很多,可以利用"zip -- ...

  5. python中的数据类型与json的数据类型之间的转化

    什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...

  6. 深入浅出MongoDB应用实战开发

    写在前面的话: 这篇文章会有点长,谨此记录自己昨天一整天看完<深入浅出MongoDB应用实战开发>视频时的笔记.只是在开始,得先抛出一个困扰自己很长时间的问题:“带双引号的和不带双引号的j ...

  7. CMS4.0——后知后觉

    前言: 2016年底,自己作为参与者加入CMS3.0的改版中:2017年中,CMS4.0在经过一个月有余的时间,华丽丽的蜕变成现在大家喜闻乐见的:http://news.gangguwang.com/ ...

  8. Java的I/O操作

    一.概述 Java的IO支持通过java.io包下的类和接口来完成,在java.io包下主要有包括输入.输出两种IO流,每种输入输出流又可分为字节流和字符流两大类.从JDK1.4以后,Java在jav ...

  9. iOS - 截屏,view截图的基本方法

    推荐一个第三方好用的框架:SDScreenshotCapture #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice cur ...

  10. Myeclipse10使用git

    用Myeclipse安装egit,使用官网最新地址或者下载最新的egit插件到本地安装均在team中看不到git,最后发现到http://download.eclipse.org/egit/updat ...