WCF引用方式之IIS方式寄宿服务
通过IIS方式寄宿服务
之前的例子是将控制台作为WCF的寄宿方式或者是直接添加契约项目的引用,然后通过配置或者是ChannelFactory的形式进行创建服务对象,其实在大多的开发中以IIS的形式创建WCF也是比较常见的。
每一个Webservice都是具有一个asmx文本文件,客户端通过访问.asmx文件即可实现Webservice的调用。当然WCF和Webservice类似,每一个WCF服务都有一个对应的.svc文本文件。基于IIS服务寄宿要求的WCF服务都具有相应的.svc文件,.svc文件部署于IIS站点中,对WCF服务的调用提现在对.svc文件的访问上。.svc文件仅仅包含一个%@ ServiceHost这样的指令,该指令具有一个必须的Service属性和一些可选的属性,如下代码所示就是一个简单的.svc文本的内容
其中指定了Service属性为一个完整名称的WCF服务类。
寄宿在IIS下的WCF服务实际上就是一个WEB应用,所以通常会把.svc文件放在Web下,并且通过web.config文件进行配置WCF的终结点和用于发布元数据的ServiceMetadataBehavior服务行为。由于服务调用是通过访问服务对应的.svc文件来实现的,这个.svc文件所在的地址对于客户端来说就是服务(终结点)的地址,因此是不需要配置终结点的adder的,配置代码如下:
除了终结点没有指定address之外,服务行为ServiceMetadataBehavior用于元数据发布时也没有指定元素的发布地址。在这种情况下,.svc文件的地址加上?wsdl查询字符串就是元数据发布地址。对于当前例子来说,当服务被成功寄宿到本地的Web应用之后,就可以通过http://127.0.0.1:1111/网站名称/CalculatorService.svc?wdsl得到表示服务元数据的WSDL文件,这也就是为什么我们右键浏览.svc文件的时候返回的是很长的xml内容。
再次修改客户端:
仅仅修改了address属性,当前假设我们的Web应用程序叫做MyWeb,这也我们的address就可以找到发布后的.svc文件了。
至此,我们一共介绍了两大类的WCF的方法:
一种是将WCF服务寄宿在控制台程序:
1.通过添加服务引用(根据元数据的地址添加),然后创建了一个Client对象,然后就可以操作了;
2.通过添加对契约项目的引用,然后通过ChannelFactory创建了一个Channel对象(通过契约类型,Binding,以及一个地址);
3.通过添加对契约项目的引用,然后通过ChannelFactory创建了一个Channel对象(首先会在config中配置endpoint信息,然后通过endpoint的name作为 ChannelFactory的参数进行创建)。
一种是依靠IIS作为寄宿:
1.添加对契约项目的引用,然后通过修改配置文件的endpoint的address为.svc的地址,这样同样还是通过ChannelFactory方式进行创建代理对象;
2.添加契约项目的引用,然后通过ChannelFactory创建了一个Channel对象(通过契约类型,Binding,以及一个地址,这时候的地址应该是.svc)。
WCF引用方式之IIS方式寄宿服务的更多相关文章
- [老老实实学WCF] 第三篇 在IIS中寄存服务
老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...
- (转) [老老实实学WCF] 第三篇 在IIS中寄存服务
第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我们对WCF的编程生 ...
- 在IIS中寄存服务
http://blog.csdn.net/songyefei/article/details/7381595 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型 ...
- 微软 WCF的几种寄宿方式,寄宿IIS、寄宿winform、寄宿控制台、寄宿Windows服务
WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用.本文分别对这几种方式进行详 ...
- 关于WCF引用方式之WCF服务寄宿控制台
1.创建解决方案WCFService 依次添加四个项目,如上图,Client和Hosting为控制台应用程序,Service和Service.Interface均为类库. 2.引用关系 Service ...
- 重温WCF之构建一个简单的WCF(一)(1)通过控制台和IIS寄宿服务
一.理解什么是WCFWCF就是.NET平台下各种分布式技术的集成,并提供了一套统一的编程接口 二.WCF的定义WCF(Windows Communication Foundation)是微软为构建面向 ...
- WCF之各种WCF引用方式
写在开头:本文内容来自 WCF全面解析中的一个经典例子,如果你已经看过了,那么可以忽略本文,本文旨在和大家分享不一样的WCF使用方法. 准备工作: 1.创建解决方案WCFService(当然名字可以任 ...
- WCF引用方式
WCF之各种WCF引用方式 写在开头:本文内容来自 WCF全面解析中的一个经典例子,如果你已经看过了,那么可以忽略本文,本文旨在和大家分享不一样的WCF使用方法. 准备工作: 1.创建解决方案WCFS ...
- Xamarin.Android 入门实例(2)之实现WCF 寄宿于IIS 的Web服务提供
1.WCF 契约 ICalculator.cs using System.ServiceModel; namespace Contracts { [ServiceContract] public in ...
随机推荐
- IOS UI-控制器的生命周期
一.控制器的生命周期 代码 @interface NJOneViewController () @property (nonatomic, strong) NSArray *foods; @end @ ...
- 伪共享(False Sharing)和缓存行(Cache Line)
转载:https://www.jianshu.com/p/a9b1d32403ea https://www.toutiao.com/a6644375612146319886/ 前言 在上篇介绍Long ...
- SQL 按照多个字段为标准的重复数据处理
表结构:T1 id int Uncheckedname nchar(10) Checkedvalue nchar(10) Checked 数据: 1 a a1 2 a a1 3 b b1 4 b b2 ...
- String.Remove
String.Remove方法注意事项: 1.该方法不改变元字符串: 2.str = ‘’: str.Remove(str.Length-3);明显超限,但是不报错,返回值为''; str = '1 ...
- node 垃圾回收
一些思考 回收 nodejs垃圾回收 跟浏览器js不同, 以下代码会找出内存泄露 var theThing = null var replaceThing = function () { var o ...
- xss 防御
系列 防御原则 第一.在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL.查询关键字.http头.post数据等 第二.在输出方面,在用户输内容中使用 <XMP>标签 还是 ...
- vim学习相关链接
1:http://blog.csdn.net/niushuai666/article/details/7275406 2:http://ju.outofmemory.cn/entry/79671 3. ...
- SQL 动态PIVOT查询
DECLARE @sql_str VARCHAR(8000)DECLARE @sql_col VARCHAR(8000) SELECT @sql_col = ISNULL(@sql_col + ',' ...
- 层序遍历二叉树 完整层序重建二叉树 python
给定一个二叉树的完整的层次遍历序列(包含所有节点,包括空节点),利用这个序列生成一颗二叉树. 我们首先来看怎样对一颗二叉树进行层序遍历,下图所示的二叉树层次遍历的结果为[a,b,c,d,e],在这个过 ...
- linux c++ 服务器端开发面试必看书籍
摘自别人博客,地址:http://blog.csdn.net/qianggezhishen/article/details/45951095 打算从这开始一本一本开始看 题外话: 推荐一个 githu ...