WCF 第一章 基础 通过代码和配置文件写一个WCF服务
2011-06-24 17:29
519 查看
WCF为在配置文件中定义服务属性提供了丰富的支持。你仍然需要为你将要在服务中暴露的特性或者算法编码,但是终结点地址,绑定和行为可以从代码中移动到配置文件中。 通过配置文件定义终结点和行为比通过代码更具扩展性。举例说明,假设实现一个终结点并通过HTTP来通信。在列表1.1中,这是通过调用AddServiceEndpoint以及 BasicHttpBinding完成的。现在假设你将把绑定改为使用WSHttpBinding,通过在消息层面的处理将比在传输层面的处理带来更好的安全性能。在那种情况下,你需要改 代码并需要重新编译它们。通过把绑定部分从代码移到配置文件中,可以让我们不必重新编译代码就实现改变。或者,你想在多于两种协议上暴露契约,你可以定义 两个终结点: 一个使用基本HTTP另一个使用不用改变代码的WS-Security。这将使代码更加容易管理。
列表1.2 显示了寄宿在控制台应用程序中的一个WCF服务的完整代码。这个代码需要配置文件来定义行为和终结点信息。在这个例子中,我们主要做了以下工作。
定义契约。写一个.NET类并做一些有用的工作然后使用WCF属性修饰它。不管它通过代码还是配置文件暴露,在服务定义上都没有差别。列表1.2 中使用和列表1.1 中一样的StockService 类。
在一个操作系统进程中寄宿服务以便于它可以被客户端通过网络访问。这个通过调用在1.1 列表中的通过调用在System.ServiceModel 命名空间的ServiceHost 类创建的对象的Open方法来实现。
定义一个确定服务基地址和服务终结点ABCs的控制文件。注意在列表1.2 中的代码并不涉及配置文件。当ServiceHost.Open方法被调用时,WCF在应用程序配置文件中(app.config 或者web.config)寻找<servicemodel>来应用配置数据。
列表1.2 使用代码和配置文件实现服务
列表1.3显示显示了与列表1.1中的代码一起工作的完整的配置文件。在ServiceModel部分,定义终结点。对每一个终结点,定义地址,绑定和契 约。地址是空的,意味着终结点地址和服务的基地址一致。如果有超过一个终结点,每个终结点必须有一个独立的地址。在这个例子中的绑定是 basicHttpBinding而且契约名就是源代码中类的名称,EssentialWCF.StockService.
列表1.3 实现一个服务的配置文件
view sourceprint?
==========
转载自
作者:DanielWise
出处:http://www.cnblogs.com/danielWise/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
列表1.2 显示了寄宿在控制台应用程序中的一个WCF服务的完整代码。这个代码需要配置文件来定义行为和终结点信息。在这个例子中,我们主要做了以下工作。
定义契约。写一个.NET类并做一些有用的工作然后使用WCF属性修饰它。不管它通过代码还是配置文件暴露,在服务定义上都没有差别。列表1.2 中使用和列表1.1 中一样的StockService 类。
在一个操作系统进程中寄宿服务以便于它可以被客户端通过网络访问。这个通过调用在1.1 列表中的通过调用在System.ServiceModel 命名空间的ServiceHost 类创建的对象的Open方法来实现。
定义一个确定服务基地址和服务终结点ABCs的控制文件。注意在列表1.2 中的代码并不涉及配置文件。当ServiceHost.Open方法被调用时,WCF在应用程序配置文件中(app.config 或者web.config)寻找<servicemodel>来应用配置数据。
列表1.2 使用代码和配置文件实现服务
using System; |
using System.ServiceModel; |
namespace EssentialWCF |
{ |
[ServiceContract] |
public interface IStockService |
{ |
[OperationContract] |
double GetPrice( string ticker); |
} |
public class StockService : IStockService |
{ |
public double GetPrice( string ticker) |
{ |
return 94.85; |
} |
} |
public class Service |
{ |
public static void Main() |
{ |
ServiceHost serviceHost = new ServiceHost( typeof (StockService)); |
serviceHost.Open(); |
Console.WriteLine( "Press <Enter> to terminate.\r\n" ); |
Console.ReadLine(); |
serviceHost.Close(); |
} |
} |
} |
列表1.3 实现一个服务的配置文件
view sourceprint?
<? xml version = "1.0" encoding = "utf-8" ?> |
< configuration > |
< system.servicemodel > |
< services > |
< service name = "EssentialWCF.StockService" > |
< host > |
< baseaddresses > |
< add baseaddress = "http://localhost:8000/EssentialWCF" /> |
</ baseaddresses > |
</ host > |
< endpoint address = "" binding = "basicHttpBinding" contract = "EssentialWCF.IStockService" /> |
</ service > |
</ services > |
</ system.servicemodel > |
</
configuration
>
==========
转载自
作者:DanielWise
出处:http://www.cnblogs.com/danielWise/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- 第一章 基础 (续 通过代码和配置文件写一个WCF服务)
- WCF 第一章 基础 通过代码和配置文件写一个WCF服务
- WCF基础 (续 通过代码和配置文件写一个WCF服务)
- WCF 第五章 行为 通过配置文件暴露一个服务行为
- 一步一个脚印学习WCF系列之WCF概要—WCF服务的创建与调用HelloWorld实例,通过配置文件方式(六)
- WCF 第五章 行为 通过配置文件暴露一个服务行为
- WCF 第一章 基础 更多关于配置文件的内容
- 不通过配置文件启动WCF服务
- WCF 第一章 基础 完成一个WCF服务客户端
- WCF :通过配置文件来托管服务
- WCF 第一章 基础 完成一个WCF服务客户端
- WCF :通过配置文件来托管服务
- 第一章 基础(续 完成一个WCF服务客户端)
- WCF服务“*”有零个应用程序(非基础结构)终结点。这可能是因为未找到应用程序的配置文件,或者在配置文件中未找到与服务名称匹配的服务元素,或者服务元素中未定义终结点。
- 第一章 基础 (续 使用代码生成WCF服务)
- WCF 第一章 基础 实现一个WCF服务
- WCF 第一章 基础 为一个ASMX服务实现一个WCF客户端
- WCF中,通过C#代码或App.config配置文件创建ServiceHost类
- WCF 第一章 基础 使用代码生成WCF服务
- WCF 第一章 基础 为一个ASMX服务实现一个WCF客户端