闲来无事,用C#控件(Class Library)作个了简单的双机互连COM+示例

1. 准备工作:两台主机,各自软件配置分别为
1. 服务器:Vs.net 2003 + .Net Framework 1.1 SDK SP1 + WinXP pro SP2
1. 客户端:.Net Framework 1.1 SP1 Distributed Package + WinXP pro SP2

2. 在服务器上新建一个C# Class Library工程,将System.EnterpriseServices.dll添加进项目引用

3. 开启Vs.net 2003命令提示控制台,在%Project Directory%目录下生成一个用于组件签名的密钥对,输入
3. sn -k keyfile.snk

4. 修改项目的AssemblyInfo.cs文件,在其中添加引用声明:
COM+服务器的.Net组件实现 - 服务器端using System.EnterpriseServices;
4. 同时修改/添加其中几行Assembly定义属性:
COM+服务器的.Net组件实现 - 服务器端[assembly: AssemblyDelaySign(false)]
COM+服务器的.Net组件实现 - 服务器端[assembly: AssemblyKeyFile(
"..\\..\\keyfile.snk")]
COM+服务器的.Net组件实现 - 服务器端[assembly: AssemblyKeyName(
"")]
COM+服务器的.Net组件实现 - 服务器端
COM+服务器的.Net组件实现 - 服务器端[assembly: ApplicationActivation(ActivationOption.Server)]
COM+服务器的.Net组件实现 - 服务器端[assembly: ApplicationAccessControl(
false)]

5. 修改项目Class1.cs文件,添加COM+服务器组件的主体内容如下:
COM+服务器的.Net组件实现 - 服务器端using System;
COM+服务器的.Net组件实现 - 服务器端
using System.EnterpriseServices;
COM+服务器的.Net组件实现 - 服务器端
COM+服务器的.Net组件实现 - 服务器端
namespace ccc
{
COM+服务器的.Net组件实现 - 服务器端    
public interface IMathEx
{
COM+服务器的.Net组件实现 - 服务器端        
int sum(int a,int b);
COM+服务器的.Net组件实现 - 服务器端    }

COM+服务器的.Net组件实现 - 服务器端    
public class Test: ServicedComponent,IMathEx
{
COM+服务器的.Net组件实现 - 服务器端        
public Test()
{
COM+服务器的.Net组件实现 - 服务器端        }

COM+服务器的.Net组件实现 - 服务器端

COM+服务器的.Net组件实现 - 服务器端        
public int sum(int a,int b)
{
COM+服务器的.Net组件实现 - 服务器端            
return a+b;
COM+服务器的.Net组件实现 - 服务器端        }

COM+服务器的.Net组件实现 - 服务器端        
#endregion
COM+服务器的.Net组件实现 - 服务器端    }

COM+服务器的.Net组件实现 - 服务器端}
5. 其中,我们在组件名空间ccc中定义了一个IMathEx接口,里面只有一个求和函数,而类Test实现了这个接口

6. 编译工程项目,%Project Directory%\bin\debug目录下将生成ccc.dll和ccc.tlb两个文件

7. 在%Project Directory%\bin\debug目录下手工注册Assembly至COM+目录,键入命令:
7. regsvcs -appname:MyApp ccc.dll

8. 至此服务器端组件开发、部署完毕

相关文章: