C#教程:COM+不同用途的类型应用实例
COM+不同用途的类型
COM+有如下4种不同用途的类型。
1.应用程序代理
包含应用程序注册信息的文件,即当有客户访问远程计算机的服务器程序时,运行在客户端的应用程序代理就会将服务器应用程序的信息写入客户端器计算机中。
2.服务器应用程序
即在COM+应用程序本身的进程内执行COM+应用程序,同时使用并发性来处理组件。
3.库应用程序
在客户应用程序的进程内执行的,装载在客户应用程序进程内的,使用基于任务的安全性。缺点是不支持远程访问和队列组件。
4.COM+预安装应用程序
COM+预安装应用程序是在COM+安装过程中自动安装进组件服务的应用程序,不能修改也不能删除。
程序集(Assembly)是CLR所有类型和其他资源(如位图文件等)的集合。包括有私有和共享的程序集。私有程序集只能被放在与该程序集相同路径的应用程序访问。默认为私有,必须放在使用它的应用程序的文件夹中。共享程序集指添加在GAC(Global Assembly Cache)中的程序集。GAC是专门用来存放程序集,使应用程序可以共享这些程序集。存放在GAC中的程序集必须有一个惟一的名字,可以通过在.NET命令执行窗口中打入sn -k ItemName.snk 来生成一个惟一的名称,叫做强名称,生成强名称后,会有一个公钥附加在此程序集上,用于阻止名字相似而被代替的危险。
.NET中对程序集的安全性提供了两种机制:一种是强名称,一种是使用Signcode(可理解为数字签名)。Signcode.exe用来标记一个程序集,同时嵌入一个数字签名到程序集中,可以让用户识别创建此程序集的开发者。
注意:在GAC中不能有两个相同名称的强名称,否则就不叫强名称了,但可以存储一个程序集的多个拷贝而且在GAC中的程序集只能被拥有一定权限的用户删除。
程序集的每一个版本都有一个128位的版本号,表示为4部分:Major(为主版本号,项目有变化时即改变).Minor(添加一个功能到项目时改变).Build.Revision(后两个是自动更新的),这些版本信息可以通过在应用程序中的AssemblyInfo.cs文件来查看,AssemblyInfo.cs文件代码如下:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.EnterpriseServices;
// 有关程序集的常规信息通过下列属性集
// 控制。更改这些属性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("comDll")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("comDll")]
[assembly: AssemblyCopyright("版权所有 (C) 2006")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyKeyFile(@"F:DoNet应用程序comDllcomDll.snk")]
[assembly: ApplicationName("ComDll")]
[assembly:ApplicationAccessControl()]
// 将 ComVisible 设置为 False 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 属性设置为 True。
[assembly: ComVisible(True)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("b7ef61f1-9763-4680-b507-9e57fe3eec5c")]
// 程序集的版本信息由下面四个值组成:
// 主版本
// 次版本
// 内部版本号
// 修订号
// 可以指定所有这些值,也可以使用“修订号”和“内部版本号”的默认值,
// 方法是按如下所示使用“*”:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]