通过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方式寄宿服务的更多相关文章

  1. [老老实实学WCF] 第三篇 在IIS中寄存服务

    老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...

  2. (转) [老老实实学WCF] 第三篇 在IIS中寄存服务

    第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我们对WCF的编程生 ...

  3. 在IIS中寄存服务

    http://blog.csdn.net/songyefei/article/details/7381595 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型 ...

  4. 微软 WCF的几种寄宿方式,寄宿IIS、寄宿winform、寄宿控制台、寄宿Windows服务

    WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用.本文分别对这几种方式进行详 ...

  5. 关于WCF引用方式之WCF服务寄宿控制台

    1.创建解决方案WCFService 依次添加四个项目,如上图,Client和Hosting为控制台应用程序,Service和Service.Interface均为类库. 2.引用关系 Service ...

  6. 重温WCF之构建一个简单的WCF(一)(1)通过控制台和IIS寄宿服务

    一.理解什么是WCFWCF就是.NET平台下各种分布式技术的集成,并提供了一套统一的编程接口 二.WCF的定义WCF(Windows Communication Foundation)是微软为构建面向 ...

  7. WCF之各种WCF引用方式

    写在开头:本文内容来自 WCF全面解析中的一个经典例子,如果你已经看过了,那么可以忽略本文,本文旨在和大家分享不一样的WCF使用方法. 准备工作: 1.创建解决方案WCFService(当然名字可以任 ...

  8. WCF引用方式

    WCF之各种WCF引用方式 写在开头:本文内容来自 WCF全面解析中的一个经典例子,如果你已经看过了,那么可以忽略本文,本文旨在和大家分享不一样的WCF使用方法. 准备工作: 1.创建解决方案WCFS ...

  9. Xamarin.Android 入门实例(2)之实现WCF 寄宿于IIS 的Web服务提供

    1.WCF 契约 ICalculator.cs using System.ServiceModel; namespace Contracts { [ServiceContract] public in ...

随机推荐

  1. iOS Layout机制相关方法

    iOS Layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size - (void)sizeToFit ——————- - (void)layoutSubview ...

  2. 【Windows】netsh动态配置端口转发

    文章转载自傲风 使用多个虚拟机,将开发环境和工作沟通环境分开(即时通,办公系统都只能在windows下使用-),将开发环境的服务提供给外部访问时,需要在主机上通过代理配置数据转发. VirtualBo ...

  3. Python 常用 PEP8 编码规范

    Python 常用 PEP8 编码规范 代码布局 缩进 每级缩进用4个空格. 括号中使用垂直隐式缩进或使用悬挂缩进. EXAMPLE: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  4. Python 读取window下UTF-8-BOM 文件

    with open('target.txt', 'r', encoding='utf_8_sig') as fp: print(fp.read())

  5. tornado源码分析系列一

    先来看一个简单的示例: #!/usr/bin/env python #coding:utf8 import socket def run(): sock = socket.socket(socket. ...

  6. 决定整理一下canvas的基础学习

    好久没有用过canvas,都要忘完了.还是决定复习一下以前的笔记,以及整理一下笔记,以后好查阅

  7. Linux:tee命令详解

    tee tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin,简单的说就是把数据重定向到给定文件和屏幕上. 语法 tee(选项)(参数) 选项 -a:向文件 ...

  8. Kotlin Reference (一) Basic Syntax

    什么是Kotlin Kotlin翻译成中文叫"靠他灵",它是由JetBrains公司发明的一种基于JVM的编程语言,目前Google宣布kotlin为Android开发的官方语言. ...

  9. java读取resource/通过文件名获取文件类型

    java读取resource java读取resource目录下文件的方法: 借助Guava库的Resource类 Resources.getResource("test.txt" ...

  10. [Linux] ssh免密码登录

    目标:本地机器ssh登录远程目标机器时不用输入密码 (默认状态下,ssh user@192.xxx.x.xxx需要输入密码) 原理:通过公钥和私钥实现系统认证 实现:把本地机器的公钥复制到目标机器 具 ...