十八 COM+.

Slides:



Advertisements
Similar presentations
高级服务器设计和实现 1 —— 基础与进阶 余锋
Advertisements

LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
J2EE与中间件技术 ——Lab.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
北京移动(中国移动的子公司)是中国主要的无线运营商之一。中国移动做为无线市场的开拓者,拥有中国70%的无线通信市场,也是世界上第二大的无线提供商,北京移动拥有上亿的手机用户,支持60多个国家的漫游业务。 为北京移动创造的价值 … 优秀的性能,支持了庞大的用户群 标准化了系统接口 加强了系统的灵活性.
Microsoft Application Platform 開發技術導引
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
SVN的基本概念 柳峰
第二讲 搭建Java Web开发环境 主讲人:孙娜
面向对象建模技术 软件工程系 林 琳.
从现在做起 彻底改变你自己 Sanjay Mirchandani EMC公司高级副总裁、首席信息官.
SOA – Experiment 3: Web Services Composition Challenge
大学计算机基础 典型案例之一 构建FPT服务器.
SVN服务器的搭建(Windows) 柳峰
SQL Injection.
辅导课程六.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
Visual Studio Team System 简介
Windows网络操作系统管理 ——Windows Server 2008 R2.
Windows网络操作系统管理 ——Windows Server 2008 R2.
第17章 网站发布.
Web Services 开发 杨永智 MCT/MVP 微软校园大使.
PaPaPa项目架构 By:Listen 我在这.
ENS 10.1安装配置指南 王俊涛 | SE.
Windows 7 的系统设置.
DevDays ’99 The aim of this mission is knowledge..
任务1-3 使用Dreamweaver创建ASP网页
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
SQL Server Mobile 2005 程序开发(五)
第四章 团队音乐会序幕: 团队协作平台的快速创建
VisComposer 2019/4/17.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
COM组件及其设计 一、COM组件定义和DNA思想简介 二、COM组件的特点 三、COM组件对象的软件工程方法 四、DNS、MTS
分裂对象模型 C++ otcl.
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
Select模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
解决“最后1公里”问题.
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
SQL Server2000概述 SQL Server简介 SQL Server安装 SQL Server数据库 2019/5/8.
Chapter 18 使用GRASP的对象设计示例.
Visual Basic程序设计 第13章 访问数据库
Delphi 7.0开发示例.
WEB321 使用ASP.NET2.0快速开发电子商务网站
OpenStack vs CloudStack
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
Google的云计算 分布式锁服务Chubby.
_07多连接之select模型 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
Chinese Virtual Observatory
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Presentation transcript:

十八 COM+

COM 桌面应用 DCOM C/S应用 COM+ Services 分布式应用/企业应用

企业应用与COM+ 从桌面应用发展到企业应用、Web应用 企业应用特点: 大型、分布式、实现企业的关键业务 企业应用的挑战 关键业务:业务逻辑 基础设施:涉及到系统方方面面 开发、调试、测试、配置、维护 如transaction、security、event等 COM+对COM的增强和改进 增强了COM runtime library 增强了MTS(Microsoft Transaction Server) 事务服务、安全服务 提供了新的runtime服务 队列服务、事件服务、负载平衡、(内存数据库) COM+兼容COM,只是提供了更多的功能

管理控制 目录,配置 事务处理 MTS, DTC, RM, CRM 安全性服务 同步服务 控制并发访问,不需要转换线程或者使用消息队列排队(因为性能) 队列组件 异步的通讯,利用MSMQ作为通讯通道 事件服务 松耦合的事件机制 对象池 性能,高负载 即时(JIT)激活 可伸缩性

COM+的设计思想、目标 使程序员和用户把注意力和精力集中在业务逻辑上,而不是基础设施上 使组件尽可能地通用 编译时刻特性与运行时刻特性分离 客户和组件的透明性

COM+管理工具 Component Services snap-in 可以从 应用(Application) 即COM组件载体,DLL 组件(Component)即COM对象 接口 方法 等4个层次进行属性配置.

COM+ Catalog(COM+目录) COM+管理信息、系统数据库 COM+ Registration Database COM+ Administration Library,支持脚本 组件服务snap-in管理工具就是该对象模型的一个功能缩影 用户可以通过COMAdminCatalog组件进入到对象模型中 ProgID:COMAdmin.COMAdminCatalog 所有的操作都可以使用代码来进行.包括安装卸载程序,配置各种属性等等.

COMAdminCatalog组件使用举例 Dim Catalog As new COMAdminCatalog Dim Applications As COMAdminCatalogCollection Dim Components As COMAdminCatalogCollection Dim AppObject As COMAdminCatalogObject ' get the Applications collection and populate it Set Applications = Catalog.GetCollection("Applications") Applications.Populate ' get the correct application, My Application For Each AppObject in Applicationss If AppObject.Name = "My Application" Then Exit For Next ' get the Components collection for My Application Set Components = Applications.GetCollection( "Components" , AppObject.Key )

COM+对于组件的要求 要求DLL形式的组件 要求自注册 DllRegisterServer、DllUnregisterServer 要求有typelib typelib既可以绑在dll上,也可以单独的文件 组件可以单独存在,不进行配置,即作为单纯的COM,不使用COM+所提供的各种服务. 以EXE方式存在的组件只能单独存在

COM+ Context(COM+环境) 对象所生存的COM+状态, 包括程序,组件,接口,方法的各种属性配置,比如事务性要求,安全性,并发性等等统称为对象的环境(Context) COM激活对象时,创建context 对象的环境与对象紧紧绑在一起 根据组件的属性(attribute)决定环境的状态 环境属性也是对象与客户之间的约定

环境由一个环境对象来表示,环境对象是一个COM对象,它支持如下接口 IObjectContext(老的接口,与MTS兼容) IGetContextProperties IObjectContextInfo IObjectContextState ISecurityCallContext 如何访问“环境对象” CoGetObjectContext COM对象在环境对象中生存,环境对象在套间中生存:

每一个对象属于一个环境, 不同的环境表征不同的属性. 每一个环境属于一个套间 COM对象,环境,套间,进程,线程的关系 每一个对象属于一个环境, 不同的环境表征不同的属性. 每一个环境属于一个套间 不兼容的环境之间的调用,将引发跨环境调用.截取(interception).列集,散集. 一个独立的客户程序使用“默认的环境”,即不包含任何事务,同步等属性. 环境C 套间Y 环境A 环境B 套间X 进程P 进程Q

同步(synchronization) 或者serialization STA对象不需要同步, MTA、TNA对象需要同步 COM+提供了“activity -based synchronization” activity:代表单个客户 执行任务的一组对象 相当于一个逻辑线程 每个activity都包含一 个进程范围内的锁 可以处理跨越机器 边界的嵌套调用

事务 事务的特性(ACID) Atomicity 要么所有的变化都有效,要么都无效 Consistency 状态一致性 Isolation 事务外部看不到事务的中间结果 Durability 缓存的中间结果要能“持久” DTC(Distributed Transaction Coordinator) 每个组件对DTC负责,DTC知道所有的组件 两阶段提交 准备和提交 对象表态:committing、aborting COM+ runtime提供了免费的DTC 组件与DTC的通讯 IObjectContext::SetComplete IObjectContext::SetAbortComplete 组件的属性设置

COM+ RM COM+ RM(Resource Manager) 知道当参与事务的对象改变它的状态时,该如何把资源的变化缓存起来 例如:各种数据库系统、MSMQ DTC两阶段提交过程 对象不参与提交过程,只是表态 准备阶段:RM把状态信息保存起来,保证不会失败 提交阶段:DTC通过RM提交事务 CRM. (Compensating Resource Manager)

COM+事务的用法(一)

COM+事务的用法(二)

COM+事务的用法(三) [ uuid(04CF0B76-1989-11D0-B917-0080C7394688), helpstring("Account Class"), TRANSACTION_REQUIRED ] coclass CAccount { [default] interface IAccount; }; [ uuid(04CF0B7B-1989-11D0-B917-0080C7394688), helpstring("MoveMoney Class"), coclass CMoveMoney { [default] interface IMoveMoney;

对象池与JIT activation 池组件 对象必须实现 IObjectControl接口 Activate Deactivate CanBePooled 池组件满足以下条件: 线程模型不能为STA 可被聚合 不能聚合其他的池组件 资源利用 —— 可伸缩性 系统帮助回收资源 回收的价值:部分回收所占整体的比例,以及资源本身的重要性(比如数据库连接)

队列组件(Queued Components) 在分布式系统中, 同步、异步并存 企业活动中,电话、电子邮件、电话留言 通讯双方在时间点上的分离 例如:在off-line下写email,然后放到outbox中,一旦on-line,邮件就被发送出去 资源分配更为合理(通过设置优先级别),从而提高资源利用率和可伸缩能力 不必要求所有的应用系统都在同一个时刻运行,从而简化分布式应用的开发 队列组件 COM+为这种通讯方式提供了一套基础设施

MSMQ基础

QC模型 基客户 QC.Recorder 异步 MSMQ QC.Player 对象 代替了RPC通道

QC的意义 对于组件透明 同样的组件既可以与Queue结合,也可以不结合 对于客户不完全透明 避免了MSMQ编程的复杂性 编写QC无需任何编写MQ的经验 缺点:缺少控制能力

QC的配置

QC的消息队列

QC的设计 QC与事务的结合 MSMQ本身就是一个RM 在客户端QC与事务的结合 在服务器端QC与事务的结合 QC的安全性 接口设计 禁止使用[out]、[in,out]、[retval] 必须使用按值传递参数方式 客户对一系列组件方法的调用必须能够满足自己功能的需要,例如,不能使用枚举器对象 不能返回与应用相关的错误码,返回值只表示QC.Recorder是否记录成功。 QC与事务的结合 MSMQ本身就是一个RM 在客户端QC与事务的结合 在服务器端QC与事务的结合 QC的安全性 与同步方式的认证过程不同 每个消息包含数字签名 使用Moniker创建QC对象,例如 GetObject(“queue:/new:VBShipProj.VBShip“) 封装了组件的创建过程,使组件对于两种方式透明

COM+事件模型 事件模型中用到的两个概念 publisher:发布者 subscriber:订阅者 变化通知 轮循法 可连接对象 —— tightly coupled event COM+的方案:loosely coupled event model Client Source Connection point Sink object Publisher Event object Subscriber

COM+事件模型结构 COM+目录 事件类 订阅信息表 Publisher 1 注册 Subscriber 2 注册 事件对象 IFoo ... 3 创建 4 激发 5 读入subscriber 列表 6 把事件递 交到每个 subscriber 7 接收事件

安装新的事件类

Subscriber创建一个subscription

COM+的其他服务 IMDB(In-Memory Database) 内存缓冲,以空间换时间策略 CLB(Component Load Balancing) 已移到“Application Center Server”中 Windows 2000 Advanced Server中保留 与clustering service一起提供high-availability and scalability

COM+开发 在现有工具下,基本没有变化 新的工具会有新的支持 底层原理不变,但是包装会做得更好——比如ATL Attributed Programming 分两个方面 COM+组件的开发,针对每一种服务有一些新的要求,大多数保持与原来开发模式的兼容性,新的特性多数可以通过配置获得 与COM+系统提供的各种服务和管理工具打交道