科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[冷枫].Net服务组件(ServicedComponent)简介及其使用

[冷枫].Net服务组件(ServicedComponent)简介及其使用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

.Net服务组件(ServicedComponent)简介及其使用。

作者:冷枫 来源:CSDN 2007年9月21日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

2. COM+ 应用程序标识

可以通过名称或 GUID 标识现有的 COM+ 目标应用程序。.NET 服务安装工具 (Regsvcs.exe) 提供 /appname: 选项,用于指定应用程序名。

[ assembly: ApplicationName("BankComponent")]

如果将 ApplicationID 属性(或 Guid 属性)应用到程序集,如下面的示例所示,则所有针对应用程序的搜索都基于该 GUID,而不基于应用程序名。

[ assembly: ApplicationName("BankComponent")]

[ assembly: ApplicationID("4fb2d46f-efc8-4643-bcd0-6e5bfa6a174c")]

3. 激活类型

激活类型确定服务组件是在调用方的进程(库)中还是在新进程(服务器)中创建的。可以应用 ApplicationActivationAttribute 属性来指定激活类型。

注意   如果 ApplicationActivationAttribute 属性设置为 Server - [ assembly: ApplicationActivation(ActivationOption.Server)],则在可以使用服务器应用程序之前,必须用 Windows 安装程序将程序集及其所依赖的所有程序集添加到全局程序集缓存 (GAC) 中;否则,应用程序将产生异常。此外,如果 ApplicationActivationAttribute 属性设置为 Server,则服务组件的任何参数都必须标记为 Serializable,或者必须从 MarshalByRefObject 类派生。否则,应用程序将产生异常。

默认设置为:[ assembly: ApplicationActivation(ActivationOption.Library)]

4. 注册服务组件

服务组件由 COM+ 应用程序承载,且必须对该应用程序是可访问的。为了便于访问,服务组件有下面的注册和配置要求:

·         程序集必须具有强名称。

·         程序集必须在 Windows 注册表中注册。

·         类型库定义必须注册并安装到特定的 COM+ 应用程序中。

·         以编程方式添加的服务必须在 COM+ 目录中配置。

动态注册程序集

部署服务组件的应用程序的最简单方式是采用动态注册,它包括将包含一个或多个服务组件的程序集复制到 COM+ 应用程序的目录中。动态注册的程序集不放在全局程序集缓存中。

注意   放在全局程序集缓存中的程序集要求手动注册。

如果创建了服务器应用程序,则在该应用程序可以使用之前,必须用 Windows 安装程序将程序集及其依赖的所有程序集添加到全局程序集缓存 (GAC) 中;否则,该应用程序将生成异常。

手动注册程序集

.NET Framework SDK 提供 .NET 服务安装工具 (Regsvcs.exe),用于手动注册包含服务组件的程序集。Regsvcs.exe 是一个命令行工具。还可以通过创建 RegistrationHelper 类的实例并使用 InstallAssembly 方法,利用 System.EnterpriseServices.RegistrationHelper 类以编程方式访问这些注册功能。

虽然并不是总这样要求,但手动注册程序集对于设计时测试是有帮助的。与动态注册不同,手动过程能提供有关在执行时遇到的错误的反馈。

5. .Net环境下创建COM+服务组件

可以参考CodeProject.com网站Giles的这篇文章《Creating COM+ Objects using EnterpriseServices in .Net》,在CodeProject.com上评论不错。

关于.Net环境下创建COM+服务组件的例子,大部分都是演示关于多数据库更新的分布式事务控制。实际上,如果采用SQL Server作为Database Server,不管是跨Database,还是跨SQL Server,都可以通过Stored Procedure中的事务控制,或者是ADO.NetSqlTransaction对象来实现,只是不推荐这样做而已。

******

上述关于COM+/服务组件介绍部分的大量内容来自MSDN Reference 1

References:

1, MSDN, http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconservicedcomponentoverview.asp

2, Giles, Creating COM+ Objects using EnterpriseServices in .Net, http://www.codeproject.com/csharp/estransactions.asp

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1793998
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章