移植到 Windows 2000 和 COM+
有了 Windows 2000 CD 之后,下一步就是要了解如何开始使用 COM+。您可能需要保持与一些开发人员计算机的互操作性,或者可能要升级服务器并且希望了解如何做。
本节的目标是帮助您将服务器和开发环境转换为 Windows 2000。与以前的技术相比,COM+ 有了很大的改进,因此移植是值得的。请完整阅读本节,并为您和您的小组制订一个移植计划。
考虑从零开始安装 Windows 2000
在安装 Windows 2000 时,可以选择从零开始安装系统或升级当前的配置。如果是后者,那么 Windows 2000 安装程序实际上是将老的配置移植到新的安装中,包括将 MTS 软件包转换为 COM+ 应用程序。最好在干净的系统中安装 Windows 2000 并手动重新创建软件包。这可以防止老的配置中的缺陷进一步扩散。
为什么
根据在升级方面的经验,我们认为节省的时间(因为不重新配置服务器)并没有价值,因为无法保证不将任何错误的状态(已损坏或不干净的注册、阻塞目录等等)带入新的环境。
当然有例外情况。根据机器的角色,可以决定在升级过程中保留状态(例如升级主域控制器)。但是,应用程序服务器通常不保留许多本机状态,因此可以很好地进行“全新安装”。
详细信息
在计划升级时,通常应该阅读“Windows 2000 Server 资源大全”中的 Windows 2000 计划和设计指南。部署指南列出了 Windows 2000 专业版、Windows 2000 Server 和 Windows 2000 Advanced Server 的支持升级路径,并且说明了可能对升级,而不是执行干净安装的决策产生影响的其他因素。(请记住,术语“升级”意味着用 Windows 2000 的升级功能替换操作系统。干净安装代表先格式化磁盘,再重新安装操作系统和所有应用程序)。然后讨论使操作系统升级过程自动化的工具和步骤。
参考
部署计划指南(英文)
远程 OS 安装的逐步指南(英文)
将 MSMQ 1.0 企业版升级到 Windows 2000 域中的“消息队列部署”(英文)(该文可从 ftp://ftp.microsoft.com/bussys/distapps/msmq/win2000/migration/migration3.doc 下载。)
创建新的软件包并验证所有属性
如果从零开始安装 Windows 2000,那么 MTS 软件包不会移植到 COM+ 应用程序中。有两个选择可以将 MTS 软件包移植到 COM+ 应用程序中:
如果 MTS 软件包有 PAK 文件,那么可以在 Windows 2000 中安装 MTS 软件包的 PAK 文件,将 MTS 应用程序转换为 COM+ 应用程序。但是,将 MTS 应用程序转换为 COM+ 应用程序可能会产生更多错误,并且携带太多信息或者已经更改的信息(例如角色成员)。此外,这些应用程序所需的所有 DLL 文件相关性可能不会正确安装在服务器上。
根据现有的 MTS 应用程序,创建、安装和配置全新的 COM+ 应用程序。只有这样才能保证您的应用程序被正确安装并配置在新的环境中。
操作方式
在安装 Windows 2000 之前,请确保应用程序的文档是最新的,特别是与 MTS 下的组件配置有关的文档。确保应用程序包括:
安装在什么软件包下的组件。
如果软件包是 Server 或 Library。
验证级别、角色和安全性设置。
应用程序标识。
分布式事务协调器 (DTC) 日志大小,超时。
事务的属性。
非特定于 MTS 的记录配置信息,例如:
DCOM 验证和安全性设置。
MTS 软件包和服务的标识的特权。
SQL Server 连接配置设置。
可能已经安装的任何服务(例如 Microsoft 消息队列服务器 (MSMQ) 听众)。
注册表项。
网络设置。
手动添加的主机名解析项(在 LMHOSTS 或 HOSTS 中)。
在安装了 Windows 2000 后,请完成下列步骤:
为组件运行安装程序,以确保这些组件需要的所有相关性都就绪。
如果需要,为 Application 标识创建用户(请记住,在 COM+ 中 MTS 软件包称为 Applications),并授予这些用户必要的特权。
创建需要的 COM+ Applications。现在必须确保应用程序、软件包和接口属性与 MTS 软件包中的设置相匹配。
向 COM+ 应用程序添加角色。
将组件添加到 COM+ Application 中,根据需要配置它们。
为对象和接口(以及方法)设置正确的角色。
参考
关于 Windows 2000 部署的详细信息,请参阅“考虑从零开始安装 Windows 2000”一节中的链接。详细信息,请参阅该“知识库”文章。
基本知识:将 MTS 软件包转换为 COM+ Applications (Q252400)(英文)
保持构造环境与部署目标的同步
当编译要在 Windows 2000 下运行的对象时,请将它们编译和包装为可以在 Windows 2000 计算机上部署。
为什么
应用程序所依赖的许多系统 DLL、类型库和大量其他资源,可能已经从 Windows NT 改变到 Windows 2000。作为一种规则,如果在 Windows 2000 中安装在 NT 4.0 中编译的组件,系统应该不会有危险,但是为什么还有风险呢?因为若是保持构造环境与测试和部署环境相一致,可能您自己保留了许多难以跟踪或解决的问题。
操作方式
如果要在 Windows 2000 中部署组件,请用 Windows 2000 计算机作为构造机器。
清除接口转发
您可能想利用新的开始(它不是新的仟僖年,而是新的操作系统)的机会清除对象接口。如果构造过程不是很严格,那么最终可能出现称为接口转发的问题。如果在将方法或参数添加到组件后告诉 VB 希望保持二进制兼容性,则会发生接口转发。应该尝试避免接口转发。
请记住,如果客户机使用早期绑定,则需要用对新的 DLL 或类库的引用来重新构造它们。根据分布策略的不同,部署成本可能很难用“干净接口”来解释。
操作方式
取消接口转发的最简单方式是:
将当前 DLL 的副本存储在某个安全的地方(或者重命名它)。
在“项目”..“属性”..“组件”中设置“无兼容性”并重新编译 DLL。
设置为“二进制兼容性”并指向已保存的 DLL;再次重新编译 DLL。
为什么
MTS 几乎不能与有接口转发的组件一起正常工作,并且该功能几乎没有测试过。它还对注册增加了不必要的复杂性,而且某些卸载程序在处理该功能时感到迷惑。
详细信息
如果在项目上设置了“二进制兼容性”,并在以后决定给对象添加方法,那么可以选择打破或保持兼容性。如果选择保持兼容性(不要尝试这么做),那么 VB 会使用特殊的 COM 注册功能,称为接口转发。这意味着将注册旧的接口 ID,但是信息将转发给新的接口。
对接口添加方法,或对函数添加可选的参数,绝对需要接口的新的 IID。它完全浓缩为某件简单的东西 — 您的 IID 标识接口(一件东西)以及它表现的内容,而不是客户机如何使用它的安排。因此,如果对接口可以做的全部事情的组合改变了的话,IID 也必须改变。可以将它比作在键盘上添加一个键。可以假定以前的用户不按此键。甚至可以决定不重新打印手册。但是,键盘的 SKU 编号必须改变。
参考
保持二进制兼容性(英文)
PRB:在有 MTS 的 Visual Basic 中已经将错误转发给该接口 (Q222634)(英文)
构造、版本管理和维护 Visual Basic 组件(英文)
使用 COM+ 的 Windows 2000 类型库和 ProgID
您的组件可能有对 Transaction Server 对象、Shared Property Manager 等等的引用。在 Windows 2000 中,类型库名称已经改变,因此请仔细检查您的引用是否正确,以及是否可以创建需要的对象。
将 DLL 或 EXE 带入 Windows 2000 时,可以看到,它仍然能够创建 Administration 和 Shared Property 对象 — 无论使用 New 关键字或 CreateObject 和 ProgIDs 关键字。
详细信息
下表概述了某些最重要的改动。如果项目引用 MTS 库,那么在 Windows 2000 计算机上打开时,这些引用将得到更新,如下表所述。
MTS
COM+
Microsoft 事务服务器类型库
(MTXAS.DLL)
COM+ 服务类型库
(COMSVCS.DLL)
共享属性管理器类型库
(MTXSPM.DLL)
COM+ 服务类型库
(COMSVCS.DLL)
MTS 2.0 管理类型库
(MTXADMIN.DLL)
MTS 2.0 管理类型库
(MTSADMIN.TLB)
MTS Admin DLL 引用已经转换为 MTS TLB 引用以获得向后兼容性。COM+ Admin 引用是单独的项目。但是,如果计划使用 COM+ Admin 对象,则需要仔细阅读文档,因为它们支持的集合、属性和方法已经改变。
操作方式
如上所述,将工作的 DLL 带入 Windows 2000 中不会破坏它,至少不会在创建 MTS 对象时破坏它。当第一次在 Windows 2000 中编译时,由于新类型库名称而可能会发现一些新的问题。最简单的解决方案是从变量声明中删除类型库的限定符。使用下面的检查列表帮助您进行更改。
如果您有变量声明为:
MTxSpm.SharedProperty[...]
将它们改变为:
COMSVCSLib.SharedProperty[...]
或者删除 TypeLib 限定符:
SharedProperty[...]
如果您有变量声明为:
MTxAS.ObjectContext (or MtxAS.[...])
将其变为:
ObjectContext
ProgIDs MTSAdmin.Catalog、MTSAdmin.Catalog.1、和 MTxSpm.SharedProperty[...].1 在 Windows 2000 下将正常工作。
熟悉新的配置选项和术语
熟悉 COM+ 为对象带来的所有新配置选项。下面所列的文章概述了新的 COM+ 功能。但是,通过浏览“COM+ 组件服务管理器”树和计算机、应用程序、对象、接口、方法等等的属性表,可以对新选项有更好的了解。
在开始使用之前了解这些设置会使效率提高很多,而阅读下面的“知识库”文章是良好的开端。也可以查看 MSDN 并花几分钟时间阅读主要的文档。有趣的事情会在思想火花出现时开始。下面的“知识库”文章提供了有用的链接,并有助于决定和您关系最密切的内容。
参考
信息:COM+ 1.0 的新内容 (Q253669)(英文)
建立有效的管理控制台
Windows 2000 在管理任务上的效率是惊人的,但是来自 Windows NT 4.0 的工具已经转移到更好的位置。请尝试找到您使用的实用程序,并将它们组合到自己的 MMC 控制台以方便使用。
详细信息
下面列出了 MTS/COM+ 开发人员和管理员使用的一些常见工具,以及它们的新位置。
Transaction Server Explorer:已经移动到“组件服务”(或者“组件服务管理器”)管理单元中。通过单击开始按钮,单击程序、管理工具和组件服务可以直接访问它。
MSMQ Explorer:已经转移到 [服务和应用程序]...[消息排队]下的“计算机管理”管理单元中。
ODBC:已经转移到“管理工具”...“数据源”[ODBC] 中。
Local Security & Auditing:它们可以在“管理工具/本地安全策略”和“本地用户和组”管理单元中找到。
事件查看器:现在它是管理单元。
服务:它现在也是管理单元。
操作方式
通过下列步骤可以保存自己的控制台:
单击开始按钮,然后单击运行,再键入 MMC。
在控制台菜单中,进入添加/删除管理单元。
在“添加/删除管理单元”对话框(下面的图 1)中,单击添加按钮并选择需要的管理单元。
可以使用下面的项目:
组件服务
事件查看器
SQL Server 企业管理器
Internet 信息服务
计算机管理
本地用户和组
性能日志和警报
服务
系统信息
还能将“到 Web 地址的链接”添加到“Microsoft 知识库”或 MSDN 搜索、intranet 站点中,或将链接添加到使用最多的文件共享中。如果觉得控制台的管理单元太多的话,请尝试将它们组织到文件夹中。
进入“控制台”并选择“选项”。选择“用户模式”可以防止进一步改动。为它选择正确的标题和图标,选择是否保存更改。
将控制台保存到能够方便得到的 MSC 文件中。
将 MSC 文件拖到“开始”按钮上以便为它创建快捷方式。甚至可以对它指定快捷方式键序列。
图 1. 方便的 MMC 管理单元
也可以为远程管理启用“终端服务”。这样就可以使用其他计算机作为您的服务器的终端,避免了在远程使用标准管理工具时遇到的局限性。
关于如何实现的详细信息,请参阅下面的链接。
参考
使用终端服务远程管理 Windows 2000 Server 系列(英文)
查看 Windows 2000 Server 应用程序准则
Microsoft 已经发布了一系列与应用程序必须保持的行为和资源交互有关的准则,它们是为 Windows 2000 状态设计的。即使您对获得正式证书不感兴趣,那也可以查看其概述的实践,了解 Microsoft 对“正常工作”的 Windows 2000 应用程序的正式定义。
参考