WCF的简单使用
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的简单使用的更多相关文章
- SharePoint 2013 调用WCF服务简单示例
内容比较简单,主要记录自己使用SharePoint 2013WCF服务遇到的小问题和小经验,分享给大家,希望能够给需要的人有所帮助.好吧,进入正题! 第一部分 SharePoint 2013调用自带W ...
- WCF的简单
WCF的简单 WCF的学习之旅 一.WCF的简单介绍 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows ...
- 使用TT模板+mvc+wcf实现简单查询
今天是除夕,小编的这篇博客是掐着点儿发的,在此,祝各位小伙伴新年快乐,身体健康,万事如意:喜从天降,欣喜若狂:喜气盈门,好事成双:好人好运,金玉满堂:神采飞扬,如愿以偿,财源滚滚来,福如东海长:伴随着 ...
- WCF通信简单学习实例
最近在学习WCF通信,自己简单做个实例分享一下,环境是VS2015,使用的项目都是WPF的项目,其实大家用Winform或者Web项目也可以,都可以用的. 一.服务器端 1.创建WCF服务 服务名为W ...
- 利用WCF创建简单的RESTFul Service
1):用VS2013创建一个WCF的工程,如下图所示: 2):我们来看一下默认状态下的config文件内容,这里的内容我们会再后续的步骤中进行修改 <?xml version="1.0 ...
- WCF创建简单程序
1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序.建立完成后如下图所示: 2.删除系统生成的两个文件IService1.cs与Service1.svc,当然你也可以直接 ...
- WCF最简单的一次通信(有部分參考,多爲原創)
不廢話,直接上乾貨 1.先创建一个wcf服务库,是服务类库,远程的lib 2.全部按照默认设置,不修改.然后点发布,会出现一个wcf测试客户端,可以看有没有发布成功. 3.msdn的wcf教程还要求输 ...
- WCF客户端简单动态配置服务地址
本来想实现WCF服务无论放到哪个机器上,我的客户端都不需要重新编译,只需要配置一个服务的地址即可.各种百度找到了很多解决方案.但都比较繁琐,(只要因为个人小菜看不懂太多的代码)我对WCF内部机制还不了 ...
- WCF入门简单教程(图文) VS2010版
在这个例子中我们将使用VS 2010 创建一个WCF服务,其中会了解 [DataContract] [ServiceContract] 等特性. 内置的 WCFSVCHost ,并使用“WCF测试客 ...
随机推荐
- Android ROM 打包记录
android5.1平板或手机应用层一些常用的修改项及目录所在: 1.所以系统应用所在的目录: \alps\packages\apps 2.一些系统属性的定义:并且可以仿写自行定义变量 \alps\b ...
- SpringMVC由浅入深day01_4DispatcherSerlvet.properties
4 DispatcherSerlvet.properties DispathcerServlet作为springmvc的中央调度器存在,DispatcherServlet创建时会默认从Dispatch ...
- Python爬虫学习笔记-1.Urllib库
urllib 是python内置的基本库,提供了一系列用于操作URL的功能,我们可以通过它来做一个简单的爬虫. 0X01 基本使用 简单的爬取一个页面: import urllib2 request ...
- Django SimpleCMDB 项目
创建 SimpleCMDB 项目: [root@localhost ~]$ django-admin.py startproject SimpleCMDB 创建应用,收集主机信息: [root@loc ...
- linux 开机自启
cd /home/dpf 1.vi startup.sh #!/bin/shecho "hello world" >> /home/dpf/test.txt vi mq ...
- 目前学习.net时间让我摸不着头脑的事情
呜呜,不太喜欢做笔记,只喜欢把自己不懂的和预习时间有麻烦的简单记下,所以这里也是能可以让我写下我们的学习点滴··· 今天学习了<1>.变量的作用域,在想是不是之前听过的局部变量和全局变量? ...
- 通过设置P3P头来实现跨域访问COOKIE
通过设置P3P头来实现跨域访问COOKIE 实际工作中,类似这样的要求很多,比如说,我们有两个域名,我们想实现在一个域名登录后,能自动完成另一个域名的登录,也就是PASSPORT的功能. 我只写一个大 ...
- 【设计模式】MVC,MVP 和 MVVM 的区别
复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP ...
- linux多行注释
1.多行注释: 1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式; 2. 在行首使用上下键选择需要注释的多行; 3. 按下键盘(大写)“I”键,进入插入模式 ...
- 对Android 开发者有益的 40 条优化建议(转)
下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激 ...