上接    WCF学习之旅—WCF服务部署到IIS7.5(九)

WCF学习之旅—WCF服务部署到应用程序(十)

WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一)

八、WAS宿主

  IIS7允许通过HTTP外的协议进行激活和网络通信。此环境适合开发可通过 WCF支持的任何网络协议(包括http、net.tcp、net.pipe、net.msmq)进行通信的WCF服务。部署简单、管理方便,这些网络协议在部署时可像Http一样,直接丢到IIS7上即可,我们在下面的例子中以net.tcp为协议为例。IIS7以下的版本只能支持Http的通信。

  1、确保已安装IIS7的激活组件

  在应用WAS宿主时,必须确保IIS7的激活组件安装好。打开“控制面板”-->“打开或关闭Windows功能”-->对话框“Windows功能”中查看“Microsoft .NET Framework 3.5.1”中的“WCF的HTTP激活”与“WCF的非HTTP激活”。如果没安装,请安装。如下图所示。

如果没有安装,“勾选相应的功能”,然后点击“确定”,进行安装。如下图所示:

安装成功后我们打开IIS,点击“网站”-->“新建网站”,如下图。

在“添加网站”对话框中,根据如下图填写相应的信息,在绑定信息中填写“808:*”,给网站添加net.tcp协议。如下图所示

如果只添加了net.tcp协议,则网站无法启动,如下图。

使用鼠标点击WCFWAS网站,需要再次添加HTTP协议。如下图。

设置成功之后,如下图。

 

  2、开通net.tcp的协议 

  在安装成功并且在指定的网站上绑定了net.tcp以后,我们还要开通.net.tcp协议,点击我们要部署WCF的网站,在IIS管理器的操作功能区有一项“高级设置”点击后出现如下图所示高级配置的窗体

  在启用的协议中添加net.tcp协议(原来只对http协议支持,现在把tcp协议追加上去),中间用逗号隔离开,如上图所示。

  注意:这几个步骤一个也不能少,否则会出现:“找不到具有绑定 NetTcpBinding 的终结点的与方案 net.tcp 匹配的基址。注册的基址方案是 [http]”的错误信息。

  3、建立服务程序

  (1)在解决方案下新建WCF服务应用程序项目 WCFHost_WAS。

  (2)建立IUser与User,代码同例二一样。

  (3)修改配置文件Web.config代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
</system.webServer>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="netTcpBindConfig">
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" /> </security>
</binding>
</netTcpBinding>
</bindings> <services> <service behaviorConfiguration="BookBehavior" name="WcfServiceLib.BookService"> <endpoint address="" binding="netTcpBinding" contract="WcfServiceLib.IBookService" bindingConfiguration="netTcpBindConfig"></endpoint> <!--元数据交换的终结点-->
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" ></endpoint>
</service> </services>
<behaviors>
<serviceBehaviors>
<behavior name="BookBehavior" > <serviceMetadata/>
<serviceDebug includeExceptionDetailInFaults="true" /> <dataContractSerializer maxItemsInObjectGraph="6553600"/> </behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel> <system.web>
<compilation defaultLanguage="c#" />
</system.web>
</configuration>

  4、部署服务

  像其他的Web应用程序一样,把相关的文件丢到服务器端指定目录即可。

  鼠标右键浏览User.svc,如现如下所示:

  说明部署成功,如上所示的服务地址为:net.tcp://服务器名/User.svc/mex

  5 、建立客户端

(1)在WinClient项目中,添加对服务的引用(在引用上右键-->输入我们定义的服务宿主的基地址(此处为:net.tcp://developer/BookService.svc/mex-->转到-->确定)。如下图。

(2) 在From1中添加一个“WAS获取BOOK”按钮。如下图。

(3) 在btnWAS_Click事件中添加如下代码

  private void btnWAS_Click(object sender, EventArgs e)
{ WASBookWCF.BookServiceClient client = new WASBookWCF.BookServiceClient();
string book = client.GetBook("");
textBox1.Text = book; }

  (4) 我们此时看客户端的配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup> <system.serviceModel>
<bindings>
<netTcpBinding>
<bindingname="NetTcpBinding_IBookService"> <securitymode="None" />
</binding>
</netTcpBinding>
<wsHttpBinding>
<binding name="WSHttpBinding_IBookService" /> </wsHttpBinding> </bindings>
<client>
<endpoint address="http://localhost:8080/BookService" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IBookService" contract="BookServiceReference.IBookService" name="WSHttpBinding_IBookService">
<identity>
<userPrincipalName value="DEVELOPER\Administrator" /> </identity>
</endpoint>
<endpointaddress="net.tcp://developer/BookService.svc"binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IBookService"contract="WASBookWCF.IBookService" name="NetTcpBinding_IBookService" />
</client>
</system.serviceModel>
</configuration>

(5) 点击“WAS获取BOOK”按钮,最终结果如下。

 

WCF学习之旅—WCF服务的WAS寄宿(十二)的更多相关文章

  1. WCF学习之旅—WCF服务部署到IIS7.5(九)

    上接   WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...

  2. WCF学习之旅—WCF服务部署到应用程序(十)

    上接  WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...

  3. WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一)

    上接    WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) 七 WCF服务的Windows 服务程序寄宿 这种方式的服务寄宿,和IIS一样有一个一样 ...

  4. WCF学习之旅—WCF服务的批量寄宿(十三)

    上接    WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一) WCF学习之旅—WCF ...

  5. WCF学习之旅—第三个示例之三(二十九)

    上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...

  6. WCF学习之旅—WCF第二个示例(五)

    二.WCF服务端应用程序 第一步,创建WCF服务应用程序项目 打开Visual Studio 2015,在菜单上点击文件—>新建—>项目—>WCF服务应用程序.在弹出界面的“名称”对 ...

  7. WCF学习之旅—WCF第二个示例(七)

    三.创建客户端应用程序 若要创建客户端应用程序,你将另外添加一个项目,添加对该项目的服务引用,配置数据源,并创建一个用户界面以显示服务中的数据. 在第一个步骤中,你将 Windows 窗体项目添加到解 ...

  8. WCF学习之旅—WCF第二个示例(六)

    第五步,创建数据服务 在“解决方案资源管理器”中,使用鼠标左键选中“SCF.WcfService”项目,然后在菜单栏上,依次选择“项目”.“添加新项”. 在“添加新项”对话框中,选择“Web”节点,然 ...

  9. WCF学习之旅—实现支持REST客户端应用(二十四)

    WCF学习之旅—实现REST服务(二十二) WCF学习之旅—实现支持REST服务端应用(二十三) 在上二篇文章中简单介绍了一下RestFul与WCF支持RestFul所提供的方法,及创建一个支持RES ...

随机推荐

  1. C语言 · Torry的困惑(基本型)

    问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7--这样的数叫做质数.Torry突然想到一个问题,前10.100.1000.10000--个质数的乘积是多少呢?他把这个问题告诉老师 ...

  2. jsp中出现onclick函数提示Cannot return from outside a function or method

    在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...

  3. PowerShell实现批量重命名文件

    [string]$FileName="E:\test11" #-------------------------------------- Clear-Host foreach($ ...

  4. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  5. submit text3常用快捷键

    在网上找了一些submit text的快捷键: Ctrl+D 选词 (反复按快捷键,即可继续向下同时选中下一个相同的文本进行同时编辑)Ctrl+G 跳转到相应的行Ctrl+J 合并行(已选择需要合并的 ...

  6. RabbitMq应用一

    RabbitMq应用一 RabbitMQ的具体概念,百度百科一下,我这里说一下我的理解,如果有少或者不对的地方,欢迎纠正和补充. 一个项目架构,小的时候,一般都是传统的单一网站系统,或者项目,三层架构 ...

  7. Windows下Visual studio 2013 编译 Audacity

    编译的Audacity版本为2.1.2,由于实在windows下编译,其源代码可以从Github上取得 git clone https://github.com/audacity/audacity. ...

  8. 基于NPOI的Excel数据导入

    从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请 ...

  9. redis大幅性能提升之使用管道(PipeLine)和批量(Batch)操作

    前段时间在做用户画像的时候,遇到了这样的一个问题,记录某一个商品的用户购买群,刚好这种需求就可以用到Redis中的Set,key作为productID,value 就是具体的customerid集合, ...

  10. 最小生成树(Kruskal算法-边集数组)

    以此图为例: package com.datastruct; import java.util.Scanner; public class TestKruskal { private static c ...