WCF分布式开发必备知识系列文章3:Enterpise Services(2)
[assembly: ApplicationName("FrankEnterpriseServicesTest")],在组件服务浏览器里的名称
[assembly: Description("Coded By Frank Xu Lei 2/11/2009")],在组件服务浏览器里的描述信息
[assembly: ApplicationActivation(ActivationOption.Server)],启动类型Library在创建进程里激活,运行在客户进程,Server类型系统进程激活.
[assembly: ApplicationAccessControl(false)],访问设置,关闭后,用户都可以访问.
每个服务器组件必须继承自类ServicedComponent,ServicedComponent类继承自ContextBoundObject,这样服务就可以绑定到.net remoting上下文环境上.
[EventTrackingEnabled(true)],允许监视,组件对象浏览器可以看到。默认关闭,因为会降低性能.
[Description("Coded By Frank Xu Lei For EnterpriseServices Test")],组件对象浏览器显示的描述信息.
//[JustInTimeActivation(false)],打开或者关闭JIT启动.
[ObjectPooling(true,1,10)],是否启用对象池,如果对象创建消耗更多的资源,可以考虑对象池.
[Transaction(TransactionOption.Required)].是否需要支持事务特性,必要时候创建新的事务.
设置一个 try 块以捕获在数据库处理过程中可能出现的任何异常。您必须捕获这些异常来终止事务。
组件必须有一个强名称。为了防止Dll hell.生成一个强名称,然后使用该强名称对程序集进行签名。步骤如下:
(1)在 Visual Studio .NET 命令提示符处,键入 sn.exe -k FrankXuKey.snk 以创建一个密钥文件.
(2)将 FrankXuKey.snk 复制到您的项目文件夹中。可以在项目属性里设置签名文件.
(3)也可以在在 AssemblyInfo.vc 中,将以下代码行添加到其他程序集属性语句之前或之后:[assembly: AssemblyKeyFileAttribute("..\\..\\FrankXuKey.snk")]
(4)保存,重新编译,然后bin目录下生成dll文件。下面我们开始部署
2.部署服务组件:
使用regsvcs.exe将Dll注册到COM+ Services里面 ,在Visual studio命令行窗口输入运行regsvcs.可以把生成的DLL文件拷贝到c盘更目录下安装也可以直接输入路径进行安装,格式是:
regsvcs 文件名 .注册的界面如下图2:输入命令,按回车键
图2安装结果
注册成功,regsvcs.exe把dll输入到COM+ Services中。
如果是服务器操作系统,注册完成后可以在组件服务里查看到安装后的组件,如下图3:
图3对象浏览器查看组件
可以看我们的组件服务和实现的接口信息.右键可以查看组件的信息如图4.
图4组件属性
现在可以看到详细组件属性信息,包括安全\对象池等信息.我们还可以选择导出组件为MSI文件,方便安装.如图5
导出的安装文件,可以进行组件的快速部署安装.导出文件下载/Files/frank_xl/FrankXuEnterpriseServicesMSI.rar.
3.简单客户端
创建简单的控制台程序,方便调试,首先是循环调用组件服务EnterpriseServicesCOMPlus的SayHello方法.测试组件服务调用是否成功,其次是测试组件事物特性的代码,具体信息如下: