




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MTS中共享属性管理器(SPM)在分布式计算环境中解决并发问题时所起的作用,并以一个实例详细说明了SPM的使用方法。1概述在分布式应用中,编写能在并发环境中正确工作的应用程序是一项件较困难的工作。微软的事务服务器(MTS,MicrosoftTransactionServer)在这方面给用户提供了一个很好的解决方案,使开发人员能将精力集中在编写自定义的商业逻辑上,将其它问题交给系统解决。在并发环境下,用户不能简单地使用全局变量来保存共享信息。这是因为并发以及命名冲突等潜在的问题会造成所需的数据和实际获得的数据不一致。SPM通过提供共享属性组(Shared PropertyGroups)为组中的所
2、有共享属性建立独一无二的名称空间来消除名称的冲突;同时,SPM应用锁和信号量机制保证共享数据在并发情况下提供用户正确的结果,大大减轻了用户开发并发应用程序的复杂度。客户机上的应用程序,该程序调用MTS对象提供的服务;客户端(Client)“则指任何调用其它MTS对象的MTS对象。说明了基础客户端和客户端的概念。基础客户端和客户端当基础客户端调用对象1时,对象1再调用对象2.此时,对象1调用了其它MTS对象提供的服务,因此对象1就是一个客户端。存储在SPM中的共享属性只能被那些在同一进程中运行的对象所访问。因此,应从客户端(即MTS组件)来使用SPM,而不要从基础客户端去使用它。如果共享属性是由
3、一个基础客户端创建的,那么它们将被安置在基础客户机的进程中,这可能不是我们所期望的。2应用方法SPM的对象模型如所示。为了防止在不同组件创建的属性之间发生命名冲突,SPM定义了“共享属性组”的概念。一个“共享属性组”为一组共享的属性建立一个名称空间。每个属性在该组内有一个名称、值和位置。名称或位置可以用来检索属性的值。可以通过“共享属性组管理器”来访问和创建共享属性组。SPM的对象模型在创建一个组时,可以指定SPM怎样管理对组内属性进行并发访问。如果isolation mode(隔离模式)被设置成LockSetGet,那么当一个属性值被读或写时,SPM就对该属性加锁。这种设置,可保证两个客户不
4、能同时读或写相同的属性,但武汉科技大学学报(自然科学版)它并不阻止客户并发地访问同一组里的不同属(隔离模式)被设置成LockMethod,那么在当前的方法调用期间,一个组中的所有属性将被加锁,以保证该客户可以排他地使用这些属性。当组内属性之间有相互依赖关系时,或者当一个客户需要保证一个读/写操作不被中断时,这种加锁功能就很有用处。在创建组时,也可以指定组内的属性何时被销毁。如果release mode(释放模式)被设置成Standard,那么当所有客户刚一释放它们对该属性的引用,该属性就被销毁。如果release mode(释放模式)被设置成Process,那么直到进程终止时,这些属性才被销毁
5、。在默认情况下,经过三分钟没有活动,MTS将会关闭一个进程。如果正在使用SPM,可能想为服务器程序包增加超时时限,以减少必须重新对SPM进行初始化的次数。为了使用SPM,必须先创建“共享属性组管理器”的一个实例。在VisualBasic中,可以通过设置一个对Shared PropertyManagerTypeLibrary(共享属性管理器类型库),即MTXSPM.DLL的引甩并且创建一个新的SharedPiopei-tyGroupManager对象来完成这项工作。如下面的程序代码所示:一旦创建了组管理器的实例,就可以调用它的CreatePropertyGroup方法,以便用一个给定的名称创建一
6、个新的共享属性组。创建组后,使用CreateProperty方法来创建共享属性;或通过在该组中的位置,利用CreatePropertyByPosition方法来创建共享属性。如果这一共享属性已存在,那么这两种方法都将返回一个对已存在的共享属性的引用,然后可以利用其Value属性来获取或设置数据的值。Value是一个VARIANT属性,可以把任何标准的Automation类型存储到共享属性中。3应用实例下面用一个实例来说明SPM的使用方法。实例代码是用Visual Basic编写的,后台数据库采笔者为本单位开发“合同管理”项目时,曾编写过一个组件bus- TakeANumber,用来管理厂家编号
7、和分类编号。示出与该组件相关的三个r糸产,笑名称van.lvu(仙分类知号i|U与例子有关的三个数据库表由于要求厂家编号与分类编号按部门进行维护,即当每个部门添加厂家信息或产品类别信息时,该组件将产生一个长整形数字作为厂家编号或分类编号(该编号是在原表中的最大编号上加一形成的)又因为各部门可能同时有几个人在输入数据,为了避免并发问题形成重复的编号,故考虑使用SPM对编号进行维护。TakeANumber表主要是用来将共享信息暂存到数据库中,以便系统突然崩溃时或在服务器进程被MTS关闭前能将共享信息保存下来,从而在SPM再次启动时能获得最近使用过的信息。程序的设计思想为:为每个部门建立一个共享属性
8、组“,以部门编码作为名称空间;每个属性组中设两个属性,即厂家编号和分类编号。当需要某个编号时,便从共享属性值中读取该值,并将原属性值加一后存入该共享属性中,同时将该属性值存入数据库作为备份,以备不时之需。个组件请求获取的厂家编号或分类编号。程序代码如下:Manager创建共享属性组管理器的一定王晓亮,等:共享信息机制及应用方法一个实例创建共享属性的一个实例=NewADODB.Connectionconn.Open“FILEDSN=”fileDSN通过DSN文件建立数据库连接如果bResult为true说明该共享属性组已存在;否则为一个新建的属性组,这时从数据库中读取备份的数据作为共享属性If回
9、该属性值将原属性值加一作为下一个返回值备份该属性值(存储到数据库中)作为不时之需错误处理在上面的方法中,属性组的隔离模式使用了LockMethod,释放模式米用Process(进程级)。GetANumber来获取产品分类编号(这里以获取分类编号为例,厂家编号的获取方法与之相似)。其中,变量U-nitCode为部门编码,ProdSort为产品类别编号,SortName为产品类别名称。Add方法完成的任务是将新的产品类别名称及分类编号存入表“产品类别”中。程序代码如下:ProdSort=EmptyThen将UnitCode强制转换为字符串,并建立一个以该字符串为名称空间的属性组;Into产品类别武汉科技大学学报(自然科学版)在这个组件中,创建了busTakeANumber的一个实例,用来产生一个与部门相关的独一无二的产品分类编号。现在,可以在客户端应用程序中调用上面两个组件来完成所需的功能。以下为一个客户端应用程序片断,它调用了组件bus-PiodSortWrite中的方法Add将部门编码为104、产品类别为“起重机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络服务配置最佳实践试题及答案
- 计算机二级VB考试典型试题及答案解析
- 新兴技术的应用与挑战试题及答案
- 企业战略实施过程中的风险试题及答案
- 未来公司市场竞争力与风险管理的互动关系试题及答案
- 计算机信息处理技巧探讨与试题及答案
- 信息处理技术员职场技能提升策略试题及答案
- 高效备考2025年网络管理员考试试题及答案
- 法学概论重要论点及反论点试题及答案
- 探寻计算机二级VB考试的有效复习及试题及答案
- 工厂计件管理方案
- SHAFER气液联动执行机构培训
- 保护海洋珊瑚礁美丽的海底景观也是重要的生态系统
- 焙炒咖啡生产许可证审查细则说明
- 河南省驻马店市重点中学2023-2024学年九年级上学期12月月考语文试题(无答案)
- 2023年10月自考00158资产评估试题及答案含评分标准
- 网络优化低PHR高占比提升优化处理案例总结
- 《公路隧道施工技术规范》(3660-2020)【可编辑】
- 2023-2024学年安徽省合肥市七年级下学期期末语文质量检测试题(含答案)
- 2023电动汽车高压配电盒技术条件及测试方法
- 医院陪护服务投标方案(技术标 )
评论
0/150
提交评论