服务组件框架
在.Net COM +组件中,称为服务组件,
命名空间:System.EnterpriseServices;
服务组件的优势:
对象池
数据库连接池,
共享资源,
基于角色的安全性
分布式事务处理监控(COM +)
使用在其他服务器上注册的组件
那意味着
您可以重新使用组件,从而避免在每次请求时都创建该组件。
您可以设置权限,以便控制可以创建和调用组件\函数\方法的用户\组。
例如:您可以设置用户\帐户经理来调用财务组件,而用户\帐户经理来调用Finance.CreateBudget方法。
您可以通过多个服务器上的组件控制事务。 即,只有销售部分成功后,开票部分才会成功,而库存部分之后销售部分才成功。
激活:
您可以通过两种方式运行\激活服务组件
ActivationOption.Library .-(进程内)服务组件将通过指定值在客户端进程空间中激活
通过将ApplicationActivation属性设置为ActivationOption.Server,将在COM +可执行进程空间中激活ActivationOption.Server .-(进程外)程序集。
以上信息必须在AssemblyInfo中指定。
COM +服务器应用程序(服务的组件)在COM +可执行文件(dllhost.exe)的进程空间中运行。
装备:
Comvisible应该设置为true
程序集的StrongName
运行应用程序:
如果您在.Net IDE中运行应用程序,则.Net会自己创建Serviced组件。
通过服务器方法激活:
·通过管理工具打开组件服务。 您必须设置权限
通过将名为User和CreatorOwner的角色添加到组件的role文件夹中。 向这些角色添加可以访问组件的userid \组,并在组件的“属性”中设置标识,该组件将采用指定的标识进行激活。
·此外,您还需要使用命令开关i作为服务组件dll的参数调用gacutil实用程序。
通过库方法激活:
.Net IDE将为您提供一切
部署:
通常,有三种方法来部署.serviced组件:
使用Regsvcs命令行实用程序
此命令行实用程序将程序集的名称作为输入,通过读取程序集创建类型库,最后将对象注册到COM +。
使用.NET Framework提供的自动注册机制
在运行时,CLR(公共语言运行时)会基于程序集自动创建类型库,并且COM +使用类型库中提供的信息来安装对象。 这称为延迟注册,此方法仅适用于库应用程序。
使用作为System.EnterpriseServices命名空间一部分的RegistrationHelper类。
RegistrationHelper类的InstallAssembly方法可用于以编程方式向COM +注册.NET对象。
排解步骤:
服务器激活:
您必须为服务组件dll调用regsvcs。
调用服务组件dll的重排。
使用命令开关i作为参数调用gacutil实用程序。 用于服务组件dll。 确保将其安装在Windows \ Assembly文件夹中。
通过管理工具打开组件服务。 您必须设置权限
通过将名为User和CreatorOwner的角色添加到组件的role文件夹中。 向这些角色添加可以访问组件的userid \组,并在组件的“属性”中设置身份,组件将采用指定的身份进行激活。
库激活:
您必须为服务组件dll调用regsvcs。
代理的创建:
要从系统B调用系统A上可用的服务组件,请从系统A上可用的已注册com +(服务组件)中创建一个代理,然后在系统B上注册该代理。
调试
库激活:
您可以直接运行组件并在.Net IDE中进行调试
服务器激活:
您必须通过附加到dllhost.exe的进程进行调试,并且断点将在.NetIDE中被击中
服务组件的工作方式:
首先,它将CLR程序集注册为COM组件(就像您已经运行了程序集注册实用程序regasm.exe)一样。
其次,它发出一个COM类型库(就像您已经运行了程序集到类型库转换器tlbexp.exe),并使用它在COM +目录中部署了已配置的类(程序集中存在的类)。
然后,它默认创建程序集的ApplicationName和ApplicationActivation属性中描述的目标应用程序。
最后,它使用.NET Reflection API来查询程序集中已配置类的元数据,并使用该信息以编程方式更新COM +目录,以便每个类都具有适当的声明性属性设置。 如果配置的类没有特定的
声明性属性,regsvcs.exe将改用默认值
谢谢和Regs
巴拉斯·雷迪VasiReddy
翻译自: https://bytes.com/topic/net/insights/755368-serviced-component
服务组件框架