2. 通过自我寄宿的方式寄宿服务,在解决方案中建立一个控制台应用程序
WCF服务需要依存一个运行着的进程(宿主),服务寄宿就是为服务指定一个宿主的过程。WCF是一个基于消息的通信框架,采用基于终结点(Endpoint)的通信手段。终结点由地址(Address)、绑定(Binding)和契约(Contract)三要素组成
服务寄宿的目的就是开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或多个终结点,使之暴露给潜给的服务消费者。服务消费者最终通过相匹配的终结点对该服务进行调用。我们可以完全通过代码的方式完成所有的服务寄宿工作,下面的代码体现了通过一个控制台应用对CalculatorService的寄宿:
a) 建立一个App.Config文件
在App.Config上右键编辑WCF配置
i. 新建服务:从bin/debug中找到wcf的dll文件,并选择其中的服务
ii. 指定服务的服务约定:直接下一步
iii. 基于Http的通信
iv. 指定终结点的地址:http://127.0.0.1:1234/ CalculateService
v. 在高级->服务行为中:新建服务行为配置 (默认名为:NewBehavior0)
vi. 添加一个行为服务扩展元素:servicemetadata
vii. 并双击这个元素,在HttpGetUrl中输入:http://127.0.0.1:1234/ CalculateService/abc
viii. 并将HttpGetEnabled设置为true
ix. 最后选择“服务”结点下的wcf服务,并在behaviorConfiguration中选择刚才新建的服务行为配置名(NewBehavior0)
x. 保存退出
b) 在main函数中输入:
using (ServiceHost host = new ServiceHost(typeof(CalculateService)))
{
host.Opened += delegate
{
Console.WriteLine("CalculaorService已经启动,按任意键终止服务");
};
host.Open();
Console.Read();
}
3. 创建一个独立的Web应用程序
a) “添加服务引用”
b) 输入:http://127.0.0.1:1234/CalculateService/abc
c) 给一个引用名:MyWcf
d) 在页面中输入:
protected void Page_Load(object sender, EventArgs e)
{
CalculateServiceClient service = new CalculateServiceClient();
double sum = service.Add(4, 7);
Response.Write(sum);
}