WCF self-host测试

简介: 如果要运行基本的WCF服务,需要基本的几个步骤: (1)为服务创建基地址 为服务基址创建Uri实例。包括Http方案,计算机,端口,服务路径 例如:Uri _baseAddress = new Uri("http://localhost:8990/FirstService/Service"); (2)服务创建宿主环境以承载服务 1 创建ServiceHost实例,指定服务契约和基址。

如果要运行基本的WCF服务,需要基本的几个步骤:

(1)为服务创建基地址

为服务基址创建Uri实例。包括Http方案,计算机,端口,服务路径

例如:Uri _baseAddress = new Uri("http://localhost:8990/FirstService/Service");

(2)服务创建宿主环境以承载服务

1 创建ServiceHost实例,指定服务契约和基址。

例如:

ServiceHost host = new ServiceHost(typeof(CaculateService), _baseAddress);

2 为服务添加终结点

添加终结点以公开服务。终结点ServiceEndpointABC组成:

·Address,告知客户端服务所在位置。地址由EndpointAddress表示。

·Binding,指定如何与终结点通信,指定传输协议、编码(二进制,文本,MTOM)、安全

·Contract,概述了终结点向客户端公开的功能。三种基本的契约类型与基本的消息交换模式相对应:单向,RR,双向

例如:

EndpointAddress _Address = new EndpointAddress(_baseAddress);

WSHttpBinding _Binding = new WSHttpBinding();

ContractDescription _Contract =

ContractDescription.GetContract(typeof(ICaculate));

 

ServiceEndpoint endpoint = new ServiceEndpoint(_Contract, _Binding, _Address);

 

3 启用元数据交换

例如:

ServiceMetadataBehavior meta = new ServiceMetadataBehavior();

meta.HttpGetEnabled = true;

host.Description.Behaviors.Add(meta);

    4 打开宿主

 

完整代码:

(1)契约

[ServiceContract(Namespace = "http://w3333.com")]

public interface ICaculate

{

[OperationContract]

double Plus(double a, double b);

 

[OperationContract]

double Subtract(double a, double b);

 

[OperationContract]

double Multiply(double a, double b);

 

[OperationContract]

double Divide(double a, double b);

}

 

public class CaculateService : ICaculate

{

 

public double Plus(double a, double b)

{

Console.WriteLine(a+"+"+b+"="+(a+b));

return a + b;

}

 

public double Subtract(double a, double b)

{

Console.WriteLine(a + "-" + b + "=" +( a - b));

return a - b;

}

 

public double Multiply(double a, double b)

{

Console.WriteLine(a + "*" + b + "=" + a * b);

return a * b;

}

 

public double Divide(double a, double b)

{

Console.WriteLine(a + "/" + b + "=" + a / b);

return a / b;

}

}

 

(2)控制台宿主

static void Main(string[] args)

{

//创建地址

Uri _baseAddress = new Uri("http://localhost:8990/FirstService/Service");

 

EndpointAddress _Address = new EndpointAddress(_baseAddress);

WSHttpBinding _Binding = new WSHttpBinding();

ContractDescription _Contract = ContractDescription.GetContract(typeof(ICaculate));

ServiceEndpoint endpoint = new ServiceEndpoint(_Contract, _Binding, _Address);

//创建宿主

ServiceHost host = new ServiceHost(typeof(CaculateService), _baseAddress);

//添加终结点ABC

host.Description.Endpoints.Add(endpoint);

 

//启用元数据交换

ServiceMetadataBehavior meta = new ServiceMetadataBehavior();

meta.HttpGetEnabled = true;

host.Description.Behaviors.Add(meta);

 host.Open();

Console.WriteLine("service Begin——");

Console.ReadLine();

host.Close();

}

 

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
C#
WCF基础教程之开篇:创建、测试和调用WCF
原文:WCF基础教程之开篇:创建、测试和调用WCF   一转眼,又半个月没有更新博客了。说实话,最近确实是有点忙。不过即使再忙忙,也要抽空来学习一些东西。最近用WCF比较多,就来跟大家分享一下关于WCF的知识吧!为了让大家都能看懂,照顾一些没有学过WCF的原有,就从最基础的东西写起,希望大家可以体谅。
1260 0
|
C#
WCF基础教程之开篇:创建、测试和调用WCF
  一转眼,又半个月没有更新博客了。说实话,最近确实是有点忙。不过即使再忙忙,也要抽空来学习一些东西。最近用WCF比较多,就来跟大家分享一下关于WCF的知识吧!为了让大家都能看懂,照顾一些没有学过WCF的原有,就从最基础的东西写起,希望大家可以体谅。
959 0
启用WCF测试客户端(WCF Test Client)的相关技巧
转载:http://blog.sina.com.cn/s/blog_55a69f170100qjid.html wcftestclient.exe是一个GUI的工具用于测试WCF,只需在Visual studio command line 窗口中键入 wcftestclient,就启动这个程序。
1017 0
|
前端开发
WCF更新服务引用报错的原因之一
WCF更新服务引用报错的原因之一
|
C# 数据安全/隐私保护
c#如何创建WCF服务到发布(SqlServer版已经验证)
c#如何创建WCF服务到发布(SqlServer版已经验证)
78 0
|
安全 数据库连接 数据库
WCF服务创建到发布(SqlServer版)
在本示例开始之前,让我们先来了解一下什么是wcf? wcf有哪些特点? wcf是一个面向服务编程的综合分层架构。该架构的项层为服务模型层。 使用户用最少的时间和精力建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案。且能与已有系统兼容写作。 简单概括就是:一组数据通信的应用程序开发接口。
114 0
|
C++
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
143 0
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题