C#中寫簡單的COM+元件

一劍平江湖發表於2013-07-11
 關於C#中COM+的使用大致是這樣的:COM+需要伺服器端和客戶端,個人意見COM+更合適於B/S系統中。
關於伺服器構造是這樣的:
1、首先新建一個類庫。(這裡我們把它命名為TestCom)
     它會生成兩個檔案,AssemblyInfo.cs和Class1.cs
2、新增新類( server.cs ) 
3、新增引用( System.EnterpriseServices )
4、回到Class1.cs 將其該為介面。
using System;
namespace TestCom
{

    public interface Class1
    {
          string test();             
    }
}


5、開啟server.cs 的程式碼

在程式碼Using 中新增引用:using System.EnterpriseServices

將server.cs繼承ServicedComponent,Class1。它會自動有個提示,按TAB。。。。。


具體程式碼如下:


using System;
using System.EnterpriseServices;


namespace TestCom
{
/// <summary>
/// server 的摘要說明。
/// </summary>
public class server: ServicedComponent,Class1
{
  public server()
  {
   //
   // TOD 在此處新增建構函式邏輯
   //
  }
  #region Class1 成員


  public string test()
  {
     string a = "mm";
      return a;                     //隨便傳個string 


  }


  #endregion
}
}




6、回到AssemblyInfo.cs,新增引用
using System.EnterpriseServices;


新增程式碼:


//將元件設定為伺服器啟動模式。
[assembly: ApplicationActivation(ActivationOption.Server) ]


//制定應用伺服器名稱
[assembly: ApplicationName("Server")]




接下來,給伺服器程式一個強名稱。(相當於註冊)


7、開啟Visual Studio 命令提示


找到檔案的地址,輸入sn -k ,生成密匙




server.snk為生成的檔名稱,( 執行完成後,檔案裡會多出一個檔案server.snk )


8、強名稱生成完後,回到程式中


在AssemblyInfo.cs中最後幾排,可以發現[assembly: AssemblyKeyFile(" ")]


把檔案路徑寫進去[assembly: AssemblyKeyFile("../../server.snk")]


9、生成解決方案,在OBJ \ debug 中會有個TestCom.dll


回到Visual Studio .Net2003 命令提示,到檔案obj\debug目錄下,執行regsvcs 命令,註冊服務。


我機器上是這樣的


E:\C#\TestCom\TestCom\obj\debug > regsvcs testCom.dll;


這樣,伺服器就構建完成。


開啟我的電腦,控制皮膚,管理工具,元件服務,com+應用程式,


現在我們可以看到com+中多了個,server


這個就是你所建的伺服器




10、在server上按右鍵,開啟屬性,修改安全性:呼叫身份驗證級別為:
無,模擬級別為標識。授權下的勾去掉( 這些是根據情況需要更改的,現在僅僅做個本機上的列子)。
然後找到啟用,遠端伺服器名稱改成你自己機器的IP地址。


11、建立客戶端。


建一個winfrom


加入引用:using System.EnterpriseServices


 using TestCom;


在客戶端要引用的地方new 一下就可以直接用其中的方法了。

相關文章