代码改变世界

WCF 第七章 寄宿 自我寄宿

2010-12-28 18:46 by DanielWise, 2316 阅读, 1 推荐, 收藏, 编辑
摘要:寄宿WCF服务最常用的环境是IIS或者WAS。在一个公共架构上创建,它们都提供鲁棒性进程控制和生命周期回收服务,还有一个熟悉的管理接口。当IIS架构已经在使用时这是对大多数场景来说最合适的解决方案。 然而,也有一些情况你不想在IIS或者WAS中寄宿一个服务。你可能想显式控制事件的启动和停止。或者你可能想提供一个自定义管理接口而不是使用IIS或者WAS工具。为了实现这个,你可以使用System.ServiceModel命名空间中的ServiceHost类来在任何程序中寄宿一个服务。当你做这个时,你正在使用一个自我寄宿的WCF服务。 寄宿一个WCF服务最常用的场景是在一个随系统启动和停止的Wind 阅读全文

WCF 第七章 寄宿 在一个IIS寄宿服务中开启ASMX特性

2010-12-27 17:38 by DanielWise, 1225 阅读, 0 推荐, 收藏, 编辑
摘要:在WCF之前,ASMX是ASP.NET Web 服务中一个公共处理方式。它对公共Web服务需求提供了出色的支持并通过ASP.NET HTTP管道提供了鲁棒性扩展能力。在WCF中,服务被设计为不需了解它们的寄宿模且独立传输。所以WCF服务不能依赖于HTTP管道内部的实现,比如HTTP.SYS。 和ASMX一样,WCF也提供一个鲁棒性扩展模型。但是除了使用HTTP管道,它也采用信道栈。WCF中的信道非常灵活。它们了解传输协议,比如HTTP,但是也了解其他的协议元素比如安全和事务。信道栈在第三章”信道”和第四章”绑定”中描述。 WCF支持IIS中的一个特殊寄宿模型: ASP.NET 兼容模式。当运行 阅读全文

WCF 第七章 寄宿 在IIS7中寄宿服务

2010-12-26 14:36 by DanielWise, 963 阅读, 0 推荐, 收藏, 编辑
摘要:IIS6在Windows 2003和Windows XP SP2中存在,应用程序池作为一个运行时容器来寄宿应用程序。这允许对启动和关闭的控制,在每一个进程的基础上进行身份认证和回收服务。它原本就提供了跨应用程序的进程隔离功能,这个功能带来了很大的可信赖性。总的来说进程管理是由应用程序池架构处理的。 IIS7在Windows Vista和Windows Server 2008 中存在,进程管理已经实现对多种协议支持并移植到WAS中。ASP.NET也扩展来支持进程激活和WAS中的服务寄宿。 图片7.4 描述了在WAS架构上的IIS7. 在IIS7中寄宿一个服务的三个最小的步骤在第一章描述了。简短的 阅读全文

WCF 第七章 寄宿 在Windows 进程激活服务中寄宿服务

2010-12-26 13:54 by DanielWise, 2234 阅读, 1 推荐, 收藏, 编辑
摘要:Windows进程激活服务(WAS)是Vista和Windows Server 2008 自带的寄宿基础。先前的特性只在IIS中才有,比如进程激活,回收和身份标识管理,已经加入到WAS中而且支持所有的协议除了HTTP。 WAS允许你在一个不依赖HTTP协议的鲁棒环境中寄宿服务。HTTP协议被广泛部署和理解,但是有一些情况它并不是最好的选择。 例如,想象有一个为跟踪和分析的目的而接受一条单向消息的服务,消息由客户端发送并最终从网络中断开。为了提供在断开网络时的消息发送能力,需要一个队列结构。MSMQ协议将会完成这个,而HTTP协议将不会完成这个。或者,想象一个非常"不正式"的服务,很快发送一条大 阅读全文

.NET 中的二进制浮点类型(译文)

2010-12-24 12:22 by DanielWise, 3586 阅读, 2 推荐, 收藏, 编辑
摘要:大多数人会对他们在.NET中的算术的"出错"首先感到惊讶。使用一些称为”浮点”算术来表示非整型数字不是.NET 相比其他大多数语言/平台特殊的地方。在.NET 内部是没问题的,但是你需要知道一些底层正在发生什么,否则你将会对一些结果感到惊讶。我在这个事情上不是一个专家这不重要。虽然写了这篇文章,我也发现了另外一篇 - 这次是一个真正的专家写的,杰弗里 萨克斯(Jeffrey Sax)。我强烈建议你也同时读他的浮点文章。什么是浮点数?计算机总是需要一些表示数据的方式,最终这些表示数据的方式总是归结为二进制(0,1组合)。整数很容易表示(对负数有合适的转换,有确定好的范围可以知道表示从多大开始)但 阅读全文

.NET 中的十进制浮点类型(译文)

2010-12-23 18:37 by DanielWise, 2776 阅读, 1 推荐, 收藏, 编辑
摘要:在我的二进制浮点类型文章里,我简要提到了System.Decimal类型(或者仅仅是C#中的十进制类型)。这篇文章给出了更多关于这个类型的细节,包括它的表示和它与更多公共二进制浮点类型的区别。从这开始,我应该仅仅称它为十进制类型而不是System.Decimal, 这同样是单精度浮点类型(float)和双精度浮点类型(double)所提及的, 我的意思分别是指.NET 类型中的System.Single和System.Double. 为了让这篇文章看起来很容易,我也将从这开始弃用正式类型中的名字。什么是十进制类型?十进制类型仅是浮点数的另外一种表示形式 - 但是与单精度浮点类型和双精度浮点类型 阅读全文

WCF 第七章 寄宿

2010-12-23 13:51 by DanielWise, 597 阅读, 0 推荐, 收藏, 编辑
摘要:一个服务宿主就是用来管理一个WCF服务的生命周期和上下文服务的一个操作系统进程。服务宿主,或者仅称为”宿主”,负责启动和停止WCF服务并提供一些基本的管理函数来控制WCF服务。除了这方面,宿主对运行在它的内存空间里的WCF服务知道的很少。 任何操作系统进程都可以是一个服务宿主。IIS和Windows 进程激活服务(WAS)有内建的可以让这个过程简单的结构。与ASP.NET 一起,它们提供一个公共的服务寄宿环境。除了IIS和WAS,你可以在一个与操作系统一起启动/停止的Windows托管服务(NT 服务)中寄宿服务。你可以在一个当前窗体最大化的正在运行的Windows应用程序或者最小化到系统托盘 阅读全文

WCF 第六章 序列化和编码 总结

2010-12-22 18:18 by DanielWise, 662 阅读, 0 推荐, 收藏, 编辑
摘要:这一章描述了WCF的序列化和编码能力。作为WCF的剩余部分,有很多特性允许你自定义和扩展序列化。使用WCF序列化有如下的一些指导原则: 1. 试着在任何时候和任何可能的地方使用DataContract来序列化。这是WCF中默认的序列化器,意味着可以通过强制显式定义契约来将它用于面向服务开发。 2. 在很多情况中,你将需要依赖XmlSerializer,比如对现有.NET类型的支持,与ASP.NET 网络服务兼容,控制序列化XML的输出结果等。如果你依赖XmlSerializer来进行序列化你需要把[XmlSerializerFormat]放到你的契约的合适位置。如果你的所有操作都需要使用XML 阅读全文

WCF 第六章 序列化与编码 编码选择

2010-12-22 18:05 by DanielWise, 1836 阅读, 0 推荐, 收藏, 编辑
摘要:文本编码与二进制编码 在WCF之前,你有很多创建分布式应用程序的选择。其中的两个选择是.NET Remoting和ASP.NET 网络服务。.NET Remoting 很适合.NET 应用程序间的通信因为它使用二进制编码传输数据。这比ASP.NET 网络服务提供更好的性能,ASP.NET 网络服务在交互中使用文本编码。由于文本编码允许跨平台交互所以它在ASP.NET 网络服务中是被广泛接受的。W... 阅读全文

WCF 第六章 序列化和编码 为自定义序列化使用XmlSerializer

2010-12-21 22:04 by DanielWise, 2352 阅读, 0 推荐, 收藏, 编辑
摘要:DataContractSerializer是WCF中优先选择的序列化方法。然而,有时你需要使用默认序列化方法以外的方法。一个改变序列化方法的选项是使用XmlSerializer,包括实现自定义序列化的能力,共享类型和支持原有网络服务的能力。对DataContractSerializer,XmlSerializer是WCF集成的一部分。这部分主要查看下XmlSerializer并讨论它如何用来控制XML输出。 DataContractSerialzier总是使用XML元素进行序列化而不是使用XML属性。列表6.31显示了一个使用DataContractSerializer的Employee实例 阅读全文