谁能简单明了的说一下MTS是如何实现的?(送分)

glsoft232 2003-10-17 11:12:19
谁能简单明了的说一下MTS是如何实现的?(包括具体如何实现!)
COM+是如何实现的?
以及分布式应用需要注意的事项?
(答对一题送一百分!)
...全文
75 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
IBM911 2004-02-23
  • 打赏
  • 举报
回复
!!!!!! 学习
online 2004-02-21
  • 打赏
  • 举报
回复
http://www.microsoft.com/china/msdn/library/techart/complus.asp
zxindut 2004-02-21
  • 打赏
  • 举报
回复
到http://www.microsoft.com/china/msdn/vbasic/downloads/download81.htm看看把
yoki 2004-02-21
  • 打赏
  • 举报
回复
转贴:
终于试验成功了!
我在原本只有win2000 professional 的机器上又安装了一个win2000 server,并将其配置成主域
控制器,然后在另一台win98机器上用Administrator登录,启动VB,写个小程序试了一下,OK!

为避免大家继续在黑暗中摸索,我现将试验用的具体例子及步骤详述如下(一个最简单的例子):
1、在win2000 server机器上用VB(+SP5.0)创建一个ActiveX(DLL)工程,将工程名字改为“COM_Test”
2、添加一个类模块,名称为“ClsAdd”,并输入如下几行代码:
Option Explicit
Public x, y As Integer
Public Function myAdd() As Integer
myAdd = x + y
End Function
3、打开“工程属性”对话框,选择“生成”,选中“自动升级”;选择“部件”,选中“远程服务器文件”(此点很重要,否则编译时不会生成类型库文件COM_Test.TLB)及“二进制兼容”,最后“确定”
4、保存并编译,生成“Com_Test.dll”
5、打开“控制面板/管理/组件服务”,在“COM+应用程序”下利用“COM+应用程序安装向导”创建一个空的COM+应用程序,名称为“MyTest”
6、在“MyTest”下,新建“组件”,在“组件安装向导”中,选择“安装新组件”(注意:不要使用“导入已被注册的组件”),然后将第4步生成的Com_Test.dll及Com_Test.tlb都添加进来(两个文件都要!),完成。
7、右击“COM+应用程序”上方的“我的电脑”,选择“属性”,然后在“属性”对话框中的“默认属性”页下,将“默认身份验证级”改为“无”,确定。
8、右击“MyTest”,导出客户端的“应用代理”。注意:在导出对话框中,必须选择“应用程序代理”而不是“服务器应用程序”!
9、将导出后的两个文件(即应用程序代理)安装到win98机器上,此时它会在注册表中添加几处注册项,并在C:\program files\ComPlus Applications下产生一个以CLISD命名的文件夹,打开来可看到Com_Test.tlb及Apl82.tmp二个文件。
注意:win98机器上是没有Com_Test.dll文件的,该文件在win2000 server机器上!

好了,准备工作至此结束,下面在win98机器上来验证你的COM+配置型组件能否工作。(先用Administrator及口令登录)
10、启动VB(+sp5.0),创建一个exe工程,在窗体上放置一个文本框与一个命令按钮,并在命令按钮的Click事件中加入代码:

Dim ox as object
set ox=createobject("Com_Test.ClsAdd","win2000 server 的IP地址")
ox.x=12
ox.y=13
text1.text=ox.myAdd()

执行程序,win2000 server 机器的硬盘灯一阵闪烁之后,Text1中欢快地跳出“25”
---成功了!

以上经验是在我经过多次痛苦的失败之后摸索出来的,看来靠别人不如靠自己。

后记:

1、此前,我对有关COM+的内容可以说是一片空白,什么都不懂,甚至也没做过有关DCOM的试验。近来空闲,络续看了点CSDN论坛中的提问与回答,可没有一个让人满意的。万不得已,自力更生。
2、个人以为,COM+组件并不一定要配置在主域控制器上,但必须配置在某个域中的某台win 2000 Server上,而不是一般的2000 professional上(可能考虑到安全性)。
3、配置COM+组件不是在win98机器上的,而是在win 2000 Server上。比如,你在win98机器上安装
应用程序代理后,找不到相应的DLL文件,只有TLB文件(类型库),该DLL文件在win 2000 Server上由Dllhost.exe来负责装入内存。
4、若是创建非配置型组件,则第一步中不是创建一个ActiveX(DLL)工程,而是ActiveX(EXE)工程,
因为该exe文件在服务端不是由Dllhost.exe来负责装入内存,而是自行执行。此种情形下,当然也
就不需要第5至9步的操作了。

以上观点,只是个人看法,错误难免,欢迎各位不吝赐教。
望来信交流。
Gelim 2003-10-27
  • 打赏
  • 举报
回复
指定VB6里MTS的事务处理模式

微软的事务处理服务器(Microsoft Transaction Server,MTS)和COM+都能够管理跨多个数据库的数据库事务处理。事务处理可以被定义为完成一项工作里某个单元所需要的一系列操作。事务处理模式是为参与事务处理的每个对象而设置的。它用来告知MTS对象所做出的更改是否应该被忽略。

当事务处理创建新对象的时候,MTS它会查看两个信息源来确定事务处理的模式。首先,它要确定对象的创建者是否正在另一个已经存在的事务处理里运行。其次,它要检查对象的事务处理模式。

事务处理的模式能够通过VB6里的MTSTransactionMode属性来指定。这个属性位于类模块的属性表里。只有当项目是一个ActiveX DLL,而且类的实例(Instancing)属性(也在属性表里)不是私有(Private)的时候,它才可以被使用。

MTSTransactionMode属性可能的值有:

0-NotAnMTSObject——对象无法识别MTS或者事务处理,而且不参与其中。
1-NoTransactions——对象无法在事务处理模式里执行,即使它是由参与事务处理的某个对象调用的。
2-RequiresTransaction——对象必须在事务处理里运行。如果对象的创建者有事务处理,那么对象就要在其创建者的事务处理里运行。如果情况不是如此,那么就会为对象创建一个事务处理。
3-UsesTransaction——对象需要或者不需要事务处理都可以运行。如果对象的创建者在事务处理里运行,那么对象就会被放在事务处理里。如果其创建者不是在事务处理里运行,那么它也不会创建一个。
4-RequiresNewTransaction——对象需要在新的事务处理里运行。对象总是在一个新的事务处理里运行,而不管创建它的对象是否运行在某个事物对象里。
正确使用MTS的事务处理能够让多个对象将数据保存到一个数据库或者多个数据库里,并执行或者返回所有的更改。

1、进入服务器上的控制面板的“组件服务”,选中“组件服务--》计算机--》我的电脑--》COM+应用程序”,点击右键,左键选中“新建”--》“应用程序”,“下一步”,选择“创建一个空的应用程序”,在弹出窗体中的文本框中输入“XXX”,“在激活类型”中选中“服务器应用程序”,点“下一步”,选择“交互式用户”,点击“下一步”,“完成”
2、选择“COM+应用程序”--》“XXX”--》“组件”,右击“新建”--》“组件”--》“下一步”--》“安装新组件”--》“添加”--》在弹出的对话框中选中“C:\winnt\system32”目录中选中“xxx,ccc”Dll文件,点击“下一步”,“完成”,即可完成所有安装。
mingtian2008 2003-10-26
  • 打赏
  • 举报
回复
up
flc 2003-10-26
  • 打赏
  • 举报
回复
学习
taosihai1only 2003-10-25
  • 打赏
  • 举报
回复
关注中...
rainstormmaster 2003-10-25
  • 打赏
  • 举报
回复
问题太大了:)


指定VB6里MTS的事务处理模式

微软的事务处理服务器(Microsoft Transaction Server,MTS)和COM+都能够管理跨多个数据库的数据库事务处理。事务处理可以被定义为完成一项工作里某个单元所需要的一系列操作。事务处理模式是为参与事务处理的每个对象而设置的。它用来告知MTS对象所做出的更改是否应该被忽略。

当事务处理创建新对象的时候,MTS它会查看两个信息源来确定事务处理的模式。首先,它要确定对象的创建者是否正在另一个已经存在的事务处理里运行。其次,它要检查对象的事务处理模式。

事务处理的模式能够通过VB6里的MTSTransactionMode属性来指定。这个属性位于类模块的属性表里。只有当项目是一个ActiveX DLL,而且类的实例(Instancing)属性(也在属性表里)不是私有(Private)的时候,它才可以被使用。

MTSTransactionMode属性可能的值有:

0-NotAnMTSObject——对象无法识别MTS或者事务处理,而且不参与其中。
1-NoTransactions——对象无法在事务处理模式里执行,即使它是由参与事务处理的某个对象调用的。
2-RequiresTransaction——对象必须在事务处理里运行。如果对象的创建者有事务处理,那么对象就要在其创建者的事务处理里运行。如果情况不是如此,那么就会为对象创建一个事务处理。
3-UsesTransaction——对象需要或者不需要事务处理都可以运行。如果对象的创建者在事务处理里运行,那么对象就会被放在事务处理里。如果其创建者不是在事务处理里运行,那么它也不会创建一个。
4-RequiresNewTransaction——对象需要在新的事务处理里运行。对象总是在一个新的事务处理里运行,而不管创建它的对象是否运行在某个事物对象里。
正确使用MTS的事务处理能够让多个对象将数据保存到一个数据库或者多个数据库里,并执行或者返回所有的更改。



dofly 2003-10-25
  • 打赏
  • 举报
回复
﹗﹗
since1990 2003-10-25
  • 打赏
  • 举报
回复
up
busisoft 2003-10-25
  • 打赏
  • 举报
回复
具体操作方式:
1、进入服务器上的控制面板的“组件服务”,选中“组件服务--》计算机--》我的电脑--》COM+应用程序”,点击右键,左键选中“新建”--》“应用程序”,“下一步”,选择“创建一个空的应用程序”,在弹出窗体中的文本框中输入“XXX”,“在激活类型”中选中“服务器应用程序”,点“下一步”,选择“交互式用户”,点击“下一步”,“完成”
2、选择“COM+应用程序”--》“XXX”--》“组件”,右击“新建”--》“组件”--》“下一步”--》“安装新组件”--》“添加”--》在弹出的对话框中选中“C:\winnt\system32”目录中选中“xxx,ccc”Dll文件,点击“下一步”,“完成”,即可完成所有安装。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧