使用.NET应用为宿主程序来运行WCF服务
来源:互联网 发布:中国四大财团 知乎 编辑:程序博客网 时间:2024/05/24 03:54
在这个练习中,我们要把第一个练习中定义和实现的服务运行起来。更具体地说,我们会以一个.NET控制台程序为宿主程序来运行服务。
以类似Windows服务之类的应用程序为宿主程序来运行WCF服务通常很有用。这样在布署和管理WCF服务时就不必依赖外部的宿主程序,比如IIS。
1.在解决方案中添加一个控制台应用程序
在这个实验中,宿主程序是一个简单的控制台应用程序。
在这个任务中,我们将在解决方案中添加一个控制台应用程序,并给它添加成为WCF服务的宿主程序所需引用的程序集。
(1)选择File | Add | New Project菜单项。
(2)在New Project对话框中的Project Types部分选择Visual C# | Windows | Console Application。
(3)在Name文本框中输入Host,如图1所示。
图1 Add New Project对话框
(4)单击OK按钮。
(5)选择File | Save All菜单项。
添加对WCF的引用
(6)在Solution Explorer中Host项目的References文件夹上按鼠标右键并选择Add Reference菜单项。
(7)在.NET选项卡中选择System.ServiceModel。
(8)单击OK按钮。
添加对服务项目的引用
(9)在Solution Explorer中Host项目的References文件夹上按鼠标右键并选择Add Reference菜单项
(10)在Projects选项卡中选择DerivativesCalculatorService,如图2所示。
图2 添加项目引用
(11)单击OK按钮。
2.实现服务宿主程序
(1)在类文件中,添加using语句来导入下面的名字空间:
·System.ServiceModel
·System.Configuration
·DerivativesCalculatorService
(2)代码看起来应该如下所示:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.ServiceModel;
using DerivativesCalculatorService;
namespace Host
{
class Program
{
static void Main(string[] args)
{
}
}
}
wordend 相关阅读:
- 如何在宿主程序中运行并保护WCF服务
- 详解在IIS中配置并运行WCF服务
- 为数据瘦身 打造定制的WCF编码器
(3)在Main方法中添加下面的代码:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
static void Main(string[] args)
{
Type serviceType = typeof(Calculator);
using (ServiceHost host = new ServiceHost(serviceType))
{
}
}
第一行代码得到一个类型引用,这个类型就是具体实现WCF服务的那个类,也是我们将要在宿主程序中运行的类。
using语句用来对ServiceHost实例进行初始化,在作用域结束时ServiceHost的Dispose()会被自动调用。
(4)在using语句内部,我们先启动ServiceHost,然后通过等待用户输入的方式来阻止应用程序退出。
(5)下面是完整的代码,新增的代码加亮显示。
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
namespace Host
{
class Program
{
static void Main(string[] args)
{
Type serviceType = typeof(Calculator);
using (ServiceHost host = new ServiceHost(serviceType))
{
host.Open();
Console.WriteLine("The calculator service is available.");
Console.ReadKey();
}
}
}
}
(6)选择File | Save All菜单项。
(7)在进入下一个任务之前请确保解决方案能够编译通过(按CTRL+Shift+B快捷键)。
3.配置服务
配置WCF服务的过程非常直接。配置选项对服务在运行的时候的行为进行控制。虽然服务的配置选项有许多,但在这个任务中我们只对服务的一些非常基本的行为进行配置。
(1)在Solution Explorer中选中Host项目,然后在主菜单中选择Project | Add New Item菜单项。
(2)在Project | Add New Item对话框中选择Application Configuration File模板,如图3所示。
图3 Add New Item对话框
(3)不要修改文件名,新的配置文件的文件名仍然是app.config。
(4)单击Add按钮。
(5)用下面的XML代码替换掉新添加的app.config文件中的所有内容。下面对配置设定做了一个简单的介绍。
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="DerivativesCalculatorService.Calculator"
behaviorConfiguration="metadataBehavior">
<endpoint
address="CalculatorService"
binding="basicHttpBinding"
contract="DerivativesCalculatorService.IDerivativesCalculator"/>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/Derivatives/" />
<add baseAddress="net.tcp://localhost:8010/Derivatives/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="metadataBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
WCF配置文件的结构
• 这一节包含了所有的WCF配置元素。
• 服务在这一节定义。每个服务有自己的服务配置区段。
• 这一节包含了一个WCF服务的设定。它还包含了该服务暴露的终结点。
• 这一节用来指定服务终结点的绑定、契约和地址属性。服务通过终结点暴露给外界。
• 这一节用来指定服务宿主程序的设定。
• 这一节用来定义两个名为endpointBehaviors和serviceBehaviors的子集合。每个集合分别定义由终结点和服务使用的行为元素。每个行为元素通过一个独一无二的名字attribute来标识。
• 这一节包含了为一个指定的服务所定义的所有行为。
(6)选择File | Save All菜单项。
(7)确保解决方案能够正常编译(选择Build | Build Solution菜单项)。
wordend 相关阅读:
- 如何在宿主程序中运行并保护WCF服务
- 详解在IIS中配置并运行WCF服务
- 为数据瘦身 打造定制的WCF编码器
4.运行服务
我们已经定义了一个WCF服务,实现了该服务,对它进行了配置,还创建一个宿主程序来运行它。现在只要一切能够正常工作,我们的服务就可以运行并供用户使用了。
运行WCF服务
(1)在Solution Explorer中右键单击Host项目并选择Debug | Start new instance菜单项。这会启动命令行的服务宿主程序,看起来应该如图4所示。
图4 命令行的服务宿主程序
现在服务已经运行起来了,可以供用户调用。
验证服务
(2)在浏览器中打开下面的URL:
http://localhost:8000/Derivatives/
这是我们在app.config文件中给服务指定的位置。
注意:如果在Internet Explorer中遇到一个警告并看到一个如图5所示那样的黄色信息条,那么关掉警告对话框并在黄色的信息条上单击右键,选择Enable Intranet Settings,并在随后的确认对话框中选择Yes。
网页中显示的是我们刚创建的服务的WCF信息页。
图5 Internet Explorer 7显示的信息条
(3)单击靠近页面顶部的链接http://localhost:8000/Derivatives/?wsdl,并检查随后出现的WSDL页面。这就是服务的契约。
(4)关闭浏览器。
调用服务
Visual Studio提供了一个专门用来调用服务的工具WCF Test Client。这个工具不但可以查看一个已经发布的服务的接口,而且提供了一个图形界面来让我们调用服务。
(1)打开Visual Studio命令行窗口。
具体步骤:
在Windows的开始菜单中选择下面的菜单项:
Start | All Programs | Microsoft Visual Studio 2008 | Visual Studio Tools | Visual Studio 2008 Command Prompt.
(2)在命令行窗口输入:WcfTestClient.exe
程序随即启动。
(3)在WCF Test Client中选择File | Add Service菜单项。
Add Service对话框出现。
(4)根据我们在宿主程序中为服务配置的地址,在对话框中输入:
http://localhost:8000/Derivatives/
(5)单击OK按钮。
(6)WCF Test Client添加了一个对该WCF服务的引用,并更新了用户界面让我们能够调用服务,如图6所示。
图6 WCF Test Client
用户界面右边的上半部分显示的是发往服务的请求,下半部分显示的是调用服务所得到的响应。
(7)在窗口的Request部分(上方),将方法的days参数设为5天。
(8)另外两个参数保持不变,仍然为null。我们的服务会忽略这两个参数。关于如何输入WCF Test Client将要发送的请求,请参见图15。
(9)单击Invoke按钮。
现在请求已经被发往WCF服务,得到的响应会在窗口的Response部分显示。
(10)重复调用服务几次。
(11)关闭WCF Test Client应用程序。
(12)关闭Visual Studio命令行窗口。
(13)返回正在运行服务宿主程序的命令行窗口并按Enter键,来关闭宿主程序。
(14)返回Visual Studio。
(15)选择Window | Close All Documents菜单项来关闭所有窗口。
wordend 相关阅读:
- 如何在宿主程序中运行并保护WCF服务
- 详解在IIS中配置并运行WCF服务
- 为数据瘦身 打造定制的WCF编码器
- 使用.NET应用为宿主程序来运行WCF服务
- 使用WindowsService为宿主实装WCF 服务
- WCF 应用台程序宿主
- 使用Winform程序作为WCF服务的宿主
- 使用Winform程序作为WCF服务的宿主
- WCF服务怎样与宿主程序交互
- WCF服务怎样与宿主程序交互
- WCF服务怎样与宿主程序交互
- WCF服务以控制台程序为宿主时的跨域访问问题(附源码)
- WCF服务以控制台程序为宿主时的跨域访问问题(附源码)
- 以windows服务为宿主的WCF服务
- WCF服务自宿主
- wcf宿主为windows服务时,如何配置log4net
- 宿主程序为windows服务的remoting
- WCF创建宿主程序
- WCF服务在宿主程序中的配置说明
- 使用网站作为WCF服务宿主的几种做法
- 使用一个窗体应用程序作为WCF服务的宿主
- 水电站安全生产MIS
- 蔡勒公式的推导过程
- Access 錯誤代碼3052超過檔案共用限制數
- 八条佛曰
- 2010年刚来,伊朗就给Google来个大礼
- 使用.NET应用为宿主程序来运行WCF服务
- Java中List效率的比较
- (转)install java5 on ubuntu 9.10
- 第一家公司数据库开发规范
- 一个图形绘制时的问题
- Parsing error...
- 类项丢失的问题
- 故人重逢—再用C++Builder
- 辞职