本书涵盖了.NET Remoting的各种主要特性,主要讲解了.NET Remoting的体系结构、用.NET Remoting建立分布式应用程序层次、简单对象访问协议和消息流、消息与代理对象、消息接收器与语境、通道与通道接收器以及序列化格式程序等内容。书中还特别讲述了如何使用.NET Remoting的可插入式体系结构来扩展和定制分布式应用程序。\r\n 本书概念清晰、条理性强,提供了大量的范例,是一本针对基于Internet的分布式应用开发不可多得的好书。
译者序\r\n关于作者\r\n前言\r\n\r\n第1章 理解分布式应用开发 \r\n\r\n1.1 简短历史 \r\n1.1.1 分布式体系结构 \r\n1.1.2 分布式技术 \r\n1.2 分布式对象——一个受欢迎的抽象概念 \r\n1.3 分布式应用开发的优点 \r\n1.3.1 容错 \r\n1.3.2 可扩展性 \r\n1.3.3 管理 \r\n1.4 分布式应用开发的要求 \r\n1.4.1 性能 \r\n1.4.2 安全 \r\n1.4.3 互操作性与线路格式 \r\n1.4.4 Internet与防火墙 \r\n1.4.5 配置 \r\n1.4.6 位置无关性 \r\n1.4.7 对象生存期管理 \r\n1.5 使用 .NET Remoting 满足分布式应用开发要求 \r\n1.5.1 性能 \r\n1.5.2 扩展与自定义Remoting \r\n1.5.3 配置 \r\n1.5.4 CLR与CTS的优点 \r\n1.5.5 互操作性 \r\n1.5.6 安全 \r\n1.5.7 生存期管理 \r\n1.5.8 企业服务 \r\n1.6 小结 \r\n\r\n第2章 理解 .NET Remoting体系结构 \r\n\r\n2.1 Remoting 边界 \r\n2.1.1 应用程序域 \r\n2.1.2 上下文 \r\n2.1.3 穿越边界 \r\n2.2 对象激活 \r\n2.2.1 服务器端激活 \r\n2.2.2 客户端激活 \r\n2.3 对象的生命租用 \r\n2.3.1 租用 \r\n2.3.2 租用管理器 \r\n2.3.3 发起者\r\n2.4 穿越应用程序的边界\r\n2.4.1 通过ObjRef 列集远程对象引用\r\n2.4.2 客户端经由代理与远程对象通信\r\n2.4.3 消息形成Remoting 基础\r\n2.4.4 通道越过Remoting 边界传输消息\r\n2.4.5 通道接收器链可以作用于消息\r\n2.5 小结\r\n\r\n第3章 使用 .NET Remoting建立分布式应用程序\r\n\r\n3.1 设计一个分布式作业分配应用程序\r\n3.2 实现JobServer 应用程序\r\n3.2.1 实现JobServer 应用程序逻辑\r\n3.2.2 添加 .NET Remoting\r\n3.3 实现JobClient 应用程序\r\n3.3.1 选择客户端应用程序域\r\n3.3.2 获取服务器端元数据\r\n3.3.3 为 .NET Remoting 配置 JobClient应用程序\r\n3.4 将JobServerImpl类暴露为一个Web服务\r\n3.4.1 修改范例应用程序\r\n3.4.2 使用SOAPSuds工具\r\n3.4.3 给Web服务添加安全\r\n3.4.4 .NET Remoting 使用基于角色的安全\r\n3.5 扩展带有客户端激活对象的范例\r\n3.5.1 JobNotes类\r\n3.5.2 JobClient应用程序的变动\r\n3.5.3 为 .NET Remoting 客户端激活对象配置客户端\r\n3.5.4 为 .NET Remoting 客户端激活对象配置服务器\r\n3.5.5 给租用添加发起人\r\n3.6 元数据相关性问题\r\n3.6.1 删除JobServer对JobClient 元数据的相关性\r\n3.6.2 开发出替代类进行发布以取代JobServerImpl 元数据\r\n3.6.3 远程化IJobServer 接口\r\n3.7 小结\r\n\r\n第4章 SOAP与消息流\r\n\r\n4.1 简单对象访问协议\r\n4.1.1 为什么要关注SOAP\r\n4.1.2 基于HTTP的RPC\r\n4.1.3 SOAP消息元素\r\n4.1.4 文档/文字SOAP\r\n4.2 消息流\r\n4.2.1 add_JobEvent 请求消息\r\n4.2.2 add_JobEvent 响应消息\r\n4.2.3 GetJobs 请求消息\r\n4.2.4 GetJobs 响应消息\r\n4.2.5 CreateJob 请求消息\r\n4.2.6 CreateJob 响应消息\r\n4.2.7 UpdateJobState 请求消息\r\n4.2.8 UpdateJobState 响应消息\r\n4.2.9 JobNotes 激活请求消息\r\n4.2.10 JobNotes 激活响应消息\r\n4.2.11 remove_JobEvent 请求消息\r\n4.2.12 remove_JobEvent 响应消息\r\n4.3 小结\r\n\r\n第5章 消息与代理\r\n\r\n5.1 消息\r\n5.1.1 构造函数调用消息\r\n5.1.2 方法调用消息\r\n5.1.3 消息类型\r\n5.2 代理\r\n5.2.1 TransparentProxy/透明代理\r\n5.2.2 RealProxy/真实代理\r\n5.2.3 扩展RealProxy\r\n5.2.4 练习自定义代理对象\r\n5.3 小结\r\n\r\n第6章 消息接收器与上下文\r\n\r\n6.1 消息接收器\r\n6.1.1 IMessageSink\r\n6.1.2 同步消息处理\r\n6.1.3 异步消息处理\r\n6.2 理解上下文\r\n6.2.1 建立上下文\r\n6.2.2 上下文属性和成员属性\r\n6.2.3 上下文和Remoting\r\n6.2.4 动态上下文接收器\r\n6.2.5 客户端上下文接收器链\r\n6.2.6 服务器上下文接收器链\r\n6.2.7 服务器对象接收器链\r\n6.2.8 特使对象接收器链\r\n6.3 小结\r\n\r\n第7章 通道与通道接收器\r\n\r\n7.1 如何构建通道\r\n7.1.1 通道术语\r\n7.1.2 HttpChannel\r\n7.1.3 HttpServerChannel\r\n7.1.4 HttpServerTransportSink\r\n7.1.5 HttpClientChannel\r\n7.1.6 HttpClientTransportSinkProvider\r\n7.1.7 HttpClientTransportSink\r\n7.2 创建自定义通道\r\n7.2.1 创建自定义 .NET Remoting 通道的步骤\r\n7.2.2 创建自定义通道FileChannel\r\n7.3 实现一个自定义的通道接收器\r\n7.4 小结\r\n\r\n第8章 序列化格式程序\r\n\r\n8.1 对象序列化\r\n8.1.1 可序列化属性\r\n8.1.2 自定义对象序列化\r\n8.1.3 对象图序列化\r\n8.1.4 对象图逆序列化\r\n8.1.5 序列化替代品及替代品选择器\r\n8.2 序列化格式程序\r\n8.2.1 获取某类型的可序列化成员\r\n8.2.2 遍历对象图\r\n8.2.3 使用ObjectManager 类\r\n8.2.4 使用Formatter 类\r\n8.2.5 实现一个自定义的序列化格式程序\r\n8.3 创建一个格式程序接收器\r\n8.3.1 客户端格式程序接收器\r\n8.3.2 服务器端格式程序接收器\r\n8.4 小结
分布式计算几乎已经成为所有软件开发中不可缺少的组成部分。.NET Remoting出现之前,DCOM是开发Microsoft平台上的分布式应用程序的首选方法。但是,对一般的开发人员来说,理解和使用DCOM都不那么容易。那就进入 .NET Remoting吧,它是一个有助于使用Microsoft .NET进行分布式应用开发的面向对象体系。正如 .NET Framework取代COM成为建立组件的首选方式一样,.NET Remoting取代了DCOM成为使用 .NET Framework建立分布式应用程序的首选方式。此外,.NET Remoting还提供 .NET Web服务的基础支持内容。因此,从根本上理解 .NET Remoting对开发人员转向使用 .NET Framework开发更加基于Internet的分布式应用是至关重要的。
本书深入讨论了 .NET Remoting的体系结构,并提供了具体的C#编码范例,说明如何扩展和定制 .NET Remoting。我们将剖析 .NET Remoting的功能,用以说明如何定制 .NET Remoting的关键部分。这些也正是.NET Remoting真正出类拔萃的地方。此外,.NET Remoting体系还提供了许多可扩展性“钩子”(hook),以便读者使用各种协议和配置选项。
一旦开始使用 .NET Framwork,你就会惊喜地发现使用 .NET Remoting建立分布式应用是多么的容易,与使用DCOM进行开发形成了很大的反差!而且,在扩展 .NET Remoting基础设施的时候,很快就会意识到.NET Remoting的真正威力。一般而言,可以发现 .NET Remoting具有一个富含逻辑性且非常连贯的对象模型,这使得 .NET Remoting基础设施的配置简单修改和高级扩展更加容易。此外,.NET Remoting支持开放和基于Internet的标准,例如,Web服务和简单对象访问协议(SOAP)。当然,它不是完美的,通常任何新技术都有瑕疵。然而,我们几乎总能为自己遇到的问题找到合理的工作区(书中会指出这些工作区)。我们已经看到新技术的共享,而且我们相信,.NET Remoting对它的前身(DCOM)是个强有力的替代者,同时也是现今开放式Internet互联环境中支持分布式应用开发的强大工具。
预期读者
本书是为那些具有一些 .NET Framwork程序开发经验,并且想要学会如何使用 .NET Framework建立分布式应用程序的人编写的。书中详细介绍了 .NET Remoting,这个主题不需要任何预备知识。所有的范例均用C#实现,因而最好具有C#的工作技能。不过,我们并没有用到C#的众多高级特性。尽管应当熟练掌握.NET Framwork 和C#,但对于具有C++、Microsoft Visual Basic .NET或Java背景的人来说,本书仍然非常易于理解。如果曾经使用这些语言中的任意一种编写过远程应用程序,就应当具备了掌握本书的足够知识。
结构安排
本书分为如下8章。前两章是概念,其他章节集中于高级概念,并说明了如何最大限度地利用 .NET Remoting所提供的可扩展性。
·第1章 理解分布式应用开发 该章以讨论分布式体系结构和技术的历史作为开篇。讨论了远程过程调用(RPC)、DCOM、远程方法调用(RMI)及SOAP/XML技术。该章的目的是要说明这些过去技术的成功之处以及缺点。然后深入分析 .NET Remoting如何既满足过去又满足现在的分布式应用开发的需要。
·第2章 理解 .NET Remoting体系结构 该章介绍了 .NET Remoting基础设施的主要结构部件。在后续章节中会深入研究这些内容。该章既可作为引言也可作为这些 .NET Remoting概念的参考资料。它介绍了构成 .NET Remoting体系结构的每个主要组成部分:激活(服务器端激活与客户端激活)、按引用列集、按值列集、租用、通道、消息以及格式程序等。
·第3章 使用 .NET Remoting建立分布式应用程序 该章就如何使用 .NET Remoting提供的各种常用特性构建分布式应用程序做了详细的介绍。这里我们创建了一个假设的作业分配应用程序,用它来说明 .NET Remoting的基本概念,例如,客户端激活对象和服务器端激活对象。此外,这个应用程序还说明了如何使用 .NET Remoting实现Web服务。该章也展示了如何使用Microsoft Internet 信息服务(IIS)的强大安全特性给 .NET Remoting应用增加安全性,并说明了如何将一个远程对象发布为一个Web服务。
·第4章 SOAP与消息流 该章是关于SOAP的入门读物,同时讨论了第3章中开发的客户端应用与服务器端应用之间交换的消息。此外还说明了由 .NET Remoting产生并使用的外围产品,让读者学习一点其他的内容。
·第5章 消息与代理 该章一开始讨论了消息,这是扩展和定制 .NET Remoting基础设施的基础。该章也讨论了作为本地对象与远程对象之间桥梁的代理,客户端代码调用代理对象,接着由代理对象激活远程对象的方法。我们展示了开发自定义代理的三种方法,并解释了如何将它们插入 .NET Remoting的基础设施。我们使用自定义代理对象开发了两个范例应用程序:一个是在不能通过TCP进行连接(例如,由于防火墙的存在)的时候,动态地从使用TCP转换为使用HTTP;另一个提供负载平衡。
·第6章 消息接收器与上下文 该章说明了如何使用 .NET Remoting环境对上下文中执行的对象实施规则和行为。该章还对什么是消息接收器链表以及它们为何是 .NET Remoting Framework中的一个重要可扩展点做了解释和说明,它们提供了强大的上下文侦听功能所依赖的基础。我们也对每一个不同的上下文相关消息接收器做了说明,并介绍了如何使用这些接收器。
·第7章 通道与通道接收器 通道是 .NET Remoting的基础组成部分。该章首先说明了 .NET Remoting的HttpChannel的体系结构及其支持类,这样读者就能够更好地理解如何创建自定义通道。然后通过将文件系统用作 .NET Remoting的消息传输机制的自定义通道类型范例来讨论对 .NET Remoting的扩展。最后,创建了一个在用户定义的时间段内阻塞方法调用的自定义接收器。
·第8章 序列化格式程序 最后一章仍然建立在前面章节所讨论的概念上,并详细描述了序列化格式程序。在介绍了一般的序列化概念后,我们向读者说明了如何通过创建自定义的序列化格式程序和格式程序接收器来扩展 .NET Remoting。
系统要求
要建立并执行书中的范例代码,需要Microsoft Visual Studio .NET。还需要IIS来运行Web服务和演示第3章讨论的安全技术。尽管使用拥有两台或更多计算机的网络才能最好地说明 .NET Remoting的许多特性,但本书中的所有范例代码都可以在单机上运行。
范例文件
本书的范例文件可以在Web上获得:http://www.microsoft.com/mspress/books/6172.asp。来到这个网站后要获取本书的参考内容,请单击网页右边More Information菜单里的Companion Content链接。这样就会装载参考内容页面,其中包含了下载范例文件的链接。