就他吧-9ta8为您提供:身份证查询、15位转16位身份证,手机号码归属地查询,IP地址查询服务,城市天气预报查询,列车时刻表简易快速查询等等查询服务,就他吧欢迎您的光临!!
随笔-95  评论-720  文章-16  trackbacks-102

COM+组件与COM+服务使用的区别

        近几年来,流行采用N-Tier类式应用程序设计结构来开发分布式应用程序,并将常变动的商业逻辑和数据存取动作包装在组件(Component)当中,然后将这些组件安装到COM+集中管理。但是什么时候使用COM+组件什么时候使用COM+服务呢?我做了一个COM+组件与一个COM+服务,想在此和大家探讨这个问题。并附有源代码下载。

1.COM+组件的开发 
        前两天用C#开发了一个加密解密的COM+组件,在装有VS2003和Win2000的机器上编译并运行通过。紧接着在没有安装VS2003的框架的机器上注册了此COM组件。用ASP测试运行通过。
注册方法:
dos下运行
注册
regasm /tlb SXCryptPwd.tlb SXCryptPwd.dll
gacutil /I SXCryptPwd.dll

注销
regasm /unregister SXCryptPwd.dll
注册完成。

ASP的使用方法:
<%
set obj = Server.CreateObject("SXCryptPwd.MyEnCrypt")
dim str1
str1 = obj.MyEncoding("20050708") // 加密
response.write("strEnCript=" & str1 & "<br>")
dim str2
str2 = obj.MyDecoding(str1) // 解密
response.write("strDecrypt=" & str2 & "<br>")
%>
和调用普通的COM是一样的。

这里可以下载源代码
http://www.cnblogs.com/fineboy/archive/2005/07/28/201672.html

2.COM+服务的开发
        功能是这样的:从数据库表中根据主键取出一个字段的值并返回。特简单的一个COM+服务,实际上是没有任何意义的。这里主要是介绍COM+服务的开发过程。具体的文档都在程序当中,大家可以去看看。下面简单的介绍一下COM+服务的开发步骤:
(1)新建一个类,让该类继承ServicedComponent类,ServicedComponent类是所有使用COM+服务的类的基类;
(2)让该类重载几个基类的方法,Activate方法、Deactivate()方法、CanBePooled方法
(3)定义一个public方法,用来从数据库中读取数据
(4)凡是要放在COM+组件服务管理工具的.NET组件,都必须要有一个Strong Name以做识别,因此还必须为他生成一个强名称。
(5)修改AssemblyInfo.cs中的[assembly:AssemblyKeyFile(“”)]改为[assembly:AssemblyKeyFile(“强名称的文件名”)],然后再增加一行[assembly:ApplicationName(“UCOMTEST”)],他表示此服务在COM+服务管理器中的名字。

        关于客户端的开发,见源程序。这里下载源代码,前面那个代码有点小错误,昨天晚上(2005-8-18晚上)重新写了一个,测试成功的,下载源代码

3.是用COM+组件还是用COM+服务
        我想把一些API封装到一个组件里,里面有一些简单的数据库操作,是用COM+组件好还是用COM+服务好,想在这和大家共同探讨一下。

posted on 2005-08-18 17:16 振河 阅读(2277) 评论(12) 编辑 收藏

评论:
#1楼 2005-08-18 18:47 |       
1、您能对COM这个东西了解多少
2、COM+=COM+MTS:即COM+是在COM的基础上整合MTS、MSMQ等所谓的COM+基础结构服务
3、COM+组件是基于COM+服务的基础结构上开发的,所以说两者是一回事,即所说的“服务组件”的意思

 回复 引用 查看   
#2楼 2005-08-19 08:37 | 振河
但是两者的表现形式是完全不一样的呀
 回复 引用   
#3楼 2005-08-19 09:48 | 牙神幻十郎      
二者适用的范围不一样吧,就如上面,要在asp程序里调用的话,COM+服务就不行了,而需要做某些服务的话,只是COM+就不行了,毕竟它的功能比较单一.
 回复 引用 查看   
#4楼 2005-08-19 11:57 |       
要在asp程序里调用的话,COM+服务就不行:正确
Asp.net完全可以!
不会吧,现在还有人在做Asp开发?!不是跟效率和分布式架构过不去

 回复 引用 查看   
#5楼 2005-08-22 13:47 | flyarror[未注册用户]
请教:VB下也可以调用.net的com组件吧
 回复 引用   
#6楼 2005-08-22 21:03 | wang2855      
前几天我用.net的com+实现ServicedComponent,感觉运行比较慢,我主要想实现事务功能,期待沟通下。




wzx2855@hotmail.com

 回复 引用 查看   
#7楼 2005-08-27 14:50 | bdhh[未注册用户]
你好像说的是COM组件与COM+组件的区别吧!!!
 回复 引用   
#8楼 2005-10-30 14:15 | fusx[未注册用户]
一个很浅显的区分:
我在VC6中使用ATL写了一个COM DLL,如果我写的COM DLL如果没有在COM+基础结构服务中去注册,那么就是COM组件,如果注册了就可以看成是COM+组件。注册的了COM DLL还可以充分使用COM+基础结构服务中的很多高级的特性,不改变任何原代码,你就可以使用那些高级的比较事务处理、分布式布署、性能均衡等功能,也就是所说基于属性的编程。

不过我未使用过C#来写这些,不知道这些概念是否有所变化?

 回复 引用   
#9楼 2005-11-01 09:44 | gzp[未注册用户]
我的观点于fusx的一致,但希望大家不要在耗费时间在COM+上,因为微软NET中的很多技术在逐步取代COM+,虽然微软一直声称不会这么做,但我在详细了解了NET的基础结构和做了大量的实际工作后可以判断这点。并且在实际工作中,普通NET组件的运行效率是COM+组件的2倍以上,并且在大规模的压力测试中也得出同样的结果;对象池、即使激活特性在实际工作中没有像微软提出的那样好(VC6的效果较好;但VC.NET的效果很差,还不如普通的Net组件);性能均衡已经在NET中取消了,它的运行环境Application Center2000 也已经不再升级了。
 回复 引用   
#10楼 2005-11-03 08:58 | xyangyang[未注册用户]
现在还有人在用COM+吗,.net的功能这么强大?
 回复 引用   
#11楼 2007-07-23 10:11 | 田方平[未注册用户]
我的com+组件不能用了,请问相关服务是哪些??可能某些服务被我关掉了
 回复 引用   
#12楼 2008-08-15 13:01 | wangjianguo[未注册用户]
你好,我想请教您两个问题,关于开发COM+方面的.可以加下我QQ吗,QQ:285625240
 回复 引用   
清新的空气清晰的你愉快的心情陪伴你,欢迎来到梦幻Dot Net。 Free Website Counters
昵称:振河
园龄:6年6个月
粉丝:38
关注:0
<2005年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

搜索

 
 

常用链接

随笔分类

随笔档案

文章分类

文章档案

相册

.NET技术网站

其他技术网

数据库技术网站

友情连接

  • 就他吧服务
  • 幽默笑话

积分与排名

  • 积分 - 428825
  • 排名 - 148

最新评论

阅读排行榜

评论排行榜

推荐排行榜

  就他吧-9ta8伴您开心每一天