日期:2009-08-04  浏览次数:20535 次

 简介:

  微软事务处理服务(MTS)代表了一类新的产品,它使开发和布置高性能的、可变尺度的、可靠的分布式应用程序更加容易。这是通过将以组件为基础的开发和布置技术与事务处理控制器的可变尺度性、可靠性结合起来而实现的。


  为什么使用微软事务处理服务?

  微软事务处理服务被设计用于使的构造 高性能的、可变尺度的、可靠的internet和intranet应用程序更加容易。多年以前,我们就能构造这些应用程序了,但它所要求的才赋和投资超出了大多数公司的能力。

  MTS以已被证实的事务处理方法为基础,但它的重要性超出了事务处理控制器的领域,它对分布式、以组件为基础的服务器应用程序定义了一个简单的 编程模式和执行环境。

  应用程序由能够提供商业应用功能的微软ActiveX组件组合而成。这些组件似乎被开发用于单用户。通过在MTS环境下安装这些组件来执行它们,服务器应用程序能高性能的、可靠的自动改变尺度以支持同时存在的多客户。

  MTS 被特别设计用于允许服务器应用程序在一个很大的用户范围内变化(从小的单用户系统到高容量的网络服务器)。它还具有通常只有高档的事务处理系统才具有的鲁棒性和完整性。

  下面这部分对开发一个优秀的服务器应用程序的复杂性作一个简单的回顾。

  我们从三个不同角度来讨论这个问题:

  第一、它强调了一个网络服务器为提供合理水平服务所必须作的工作。

  第二、它论述了当构造以组件为基础的应用程序所引起的问题。

  第三、它描述了即使是在错误发生时,维持应用程序的完整的重要性。

  MTS提供了一个应用程序编程模式,使得开发者避开了这些复杂之处,允许开发者将精力集中于程序的功能上,并降低了构造程序所需的费用和时间。

  服务器基本结构:

  服务器要有一个高级的基础。从零开始建造一个网络应用服务器不是一件容易的事。完成实际的商业功能,例如处理在线书库的订单,实际只是工作的一小部分。典型的服务器系统必须有一个高级基础来获取可接受的性能和尺度。

  应用程序服务开发者必须亲自经常开发基本构件中的许多部分。举个例子,序调用提供了丰富的服务,系统开发者仍必须作下面的工作:

  注册目录系统服务器;

  管理服务器处理池和线程池;

  最后,服务器需要为多用户请求提供的服务管理线程池,而不只是针对一个单用户。使多客户同时请求使用共享数据和资源的要求同步。这要求高级锁定协议能解释死锁、条件竞争、资源匮乏及其他性能上的问题。管理客户内容,包括数据库连接和数据结构的全视图。(目标视图)

  客户缓冲状况以改善潜在慢速网络通行。

  完成安全保障以确保商业功能和对象仅提供给被授权者。

  完成管理和确认工具以允许服务器的远程安装和管理。

  MTS提供了一个应用程序/服务器基本结构来满足上面的要求。

  构造以组件为基础的应用程序:

  从组件构造应用程序对开发者有极大的吸引力并且是面向对象计算的早期目标之一。由于它提供了一个自然的方法来封装商业功能,因而对开发服务器应用程序更具吸引力。

  然而,组件工程程序比它原来显现出来的要困难。早期对象系统的一个根本弱点是缺乏共同的框架来允许开发者无论是在同一进程或是交叉进程,都能将不同部分创造的对象结合到一个完整的程序里。组件对象模型(COM)解决了这个问题。

  然而,简单的用一个COM模型来从组件构造服务器应用程序是不够的。该组件必须使用共同的服务框架。那些自己构造服务器框架的开发者使用其他组的组件开发程序的机会就会很小。

  MTS程序工程师和编程界面提供了一个共同的框架来构造以组件为基础的服务器应用程序。


  保持程序的完整性:

  非常重要的一点是,商业系统应能准确的维持商业状态。例如,一个在线书库必须可靠的跟踪订单。若不然,将会产生巨大的收入损失。现存的订单可能丢失或在取订单、填订单的时候有延时,不满意的用户可能会转到别处作生意。

  维持商业系统的完整性从不容易,特别在发生错误以后。具有讽刺意义的是,即使计算机变的越来越可靠,系统作为一个整体变得更加不可靠。对提供internet和intranet连接到数十、数百、甚至可能数万个服务器上的无数桌式计算机来讲,错误是常事。

  对分布式程序的要求使问题复杂化。商业事务,如订书,逐渐地卷入多个服务者,必须证实其信用,书必须船运,必须管理存货目录,并且客户必须有资金。这一切都使在多服务器上的多个数据库更新成为必须。分布式开发者必须预料到程序的某一部分能在其他部分发生错误后继续运行。这些防错方案是单个程序的好几倍。

  商业程序经常被要求将多个工作协调为单个商业事务。一个在线书库绝对不能在没有处理恰当的订单前就去安排装运的日程,同时也不可能向用户收取费用而不通知其送货日期。协调这些工作使它们都发生或都不发生,若无特殊系统支持是非常困难的。

  即使在发生错误时要确保程序最小单位的更新,是很不容易的。尤其当一个应用程序分布在多个数据库和系统上时。使用在设计上隐藏了其可完成性的多种组件造成了这个问题。

  当多个用户获取同一组件时程序也必须能提供一致的行为。对同一本书同时的定单不应产生只送一本书给两个用户的情况。除非程序被正确书写,资源竞争最终将引起不一致性。这些问题很难解决并将花很多钱。并且随着程序增长和费用增多而更可能发生。这也是由于使用组件引起的。

  MTS使用以组件为基础的编程完整事务使得你能开发出鲁棒,分布式的,以组件为基础的程序。


  MTS工程师

  这部分对MTS工程师主要元素作一简介

  这些元素包括:

  ActiveX组件,完成应用程序功能。

  事务管理服务执行者,为程序组件运行服务。

  服务处理,提供存放程序组件的代理处理环境。

  资源管理者(RM),管理程序的可耐阶段,例如包括相关数据库系统和事务性消息队列。

  资源分配者,管理进程内组件非耐久性共享数据,例子包括数据库连接池,管理队列。

  微软分布事务协调者,允许通过多个资源管理者,分配者和程序组件协调事务。

  微软事务服务器组件:程序组件使商业行为模式化。这些组件了完整商业规则,提供视图和程序状态变化情况。考虑在线书库的例子。用在数据库系统中的记录代表商务的耐久状态,如挂起订单,方便的目录,可接受帐单。应用程序组件刷新状态以反映如新定单和目录发送的变化。

  MTS程序组件是ActiveX处理中服务器(DDL)。通过使用Microsoft Visual Basic,Visual C++,Visual J++或任何与ActiveX相兼容的开发工具,你可以创造并实现这些组件。

  ActiveX以COM为基础,包括:

  界面概念,客户从对象请求服务的方法;

  通过处理器和机器界限与透明对象的连接;

  确认组件,动态装载和执行组件的机制;

  对象能通过MTS工程师支持多界面,并提供给用户查询支持对象的特殊界面的方法。并允许组件提供不同水平的功能并逐渐引入新版本。

  MTS扩展了COM以提供一个通用的服务器程序框架。除了上面提到的COM内在的特性外,MTS还处理服务器注册,进程,线程管理,内容管理,共享资源的管理和同步化,以及以组件为基础的安全性管理。

  将事务引入到程序模板作为获得最小单元更新和在组件、数据库系统及网络边界达到一致性的机制。每个组件都有一个事务属性指出组件的事务性语义。这允许事务性内容被MTS自动管理。MTS使用户避免了复杂的服务事件,使用户可以专注于完成商业功能。由于在MTS下运行组件可充分利用事务服务程序,用户可以把程序当成各自独立的状态来编写程序。MTS处理同时事件,资源池,内容管理及其他系统水平的复杂的事件。事务系统,与数据库服务器和其他类型的资源管理协同工作,确保同时事务是强大的、一致的、有恰当的分离性,并且,一旦完成,变化是可耐久的。

  应用程序作为ActiveX的组件来分配,称为包裹。包裹定义了错误分离和信任边界。


  事务管理服务执行器:

  事务管理服务执行器是一个动态连接库(DDL),它对事务管理服务组件提供运行时服务。这些服务包括线程管理和内容管理。这些动态连接库被加载到应用程序组件的宿主进程中,并且在后台透明的执行。

  服务进程:

  服务进程是应用程序组件执行的宿主系统进程,对数十、成百、上