程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 使用C#開發COM+組件

使用C#開發COM+組件

編輯:關於C語言
.NET技術是微軟大力推廣的下一代平台技術,自從.NET技術架構Beta2版本的正式發布,此項技術也逐漸走向成熟和穩定。按照微軟的平台系統占有率,我們不難想象得到,在未來的一兩年內.NET技術必定會勢如破竹一般的登上主流的技術平台,而一個新的技術平台得以快速發展的最重要的前提是:他不會徹底的摒棄以前的技術,這一點對於.Net技術來說指的就是COM/COM+技術了。

一般來說,在IT技術界以及硬件產業,技術的更新換代速度非常得驚人,而慣例是所有的新技術都會遵循向下兼容的原則,但是.NET技術不僅僅做到了這一點,.NET甚至實現了相互之間的各自調用,這一點是非常難能可貴的。也就是說,不但我們可以在.NET組件中調用COM組件,同時也可以在COM組件中正常的調用.NET組件。這點帶來的好處是顯而易見的,一方面我們可以保持現有的技術資源,另一方面,在現有資源中可以利用.Net所帶來的各種新技術。

在E\ClassLibrary1\目錄下用SN命令生成一個GUID,如下所示:

sn –k keyfile.snk

在工程的AssemblyInfo.cs文件中加入如下語句:

[assembly: AssemblyKeyFile(@"e:\classlibrary1\keyfile.snk")]

作用是使這個工程文件創建的DLL文件擁有GUID(全球唯一標識符),也就是擁有一個強名稱(strong name),這是COM+要求的。

CS的詳細代碼如下:

using System;

using System.Runtime.InteropServices;//為了調用GUID

using System.EnterpriseServices;//引用COM+的類

using System.Web.Services;

namespace ClassLibrary1

{

//如果不指定guid,每次都會隨機生成CLSID

[Guid("539448DE-9F3B-4781-A1F6-F3C852091FC9")]

public interface ISharpObject2

{

string Name //Property: Name, Get/Set

{

get;

set;

}



void Test();

}

public class Class1: ServicedComponent,ISharpObject2

{

public Class1()

{

//

// TODO: Add constructor logic here

//

}

private string m_strName;

public string Name //Property: Name, Get/Set

{

get { return m_strName; }

set { m_strName = value; }

}

public void Test(){}

}

}

生成DLL文件後可以有3種方法,在COM+的管理服務器中創建一個COM+應用程序,這裡使用的方法是在DOS操作下,使用命令

regsvcs /c class1.dll MyCom “MyCom是要生成的COM+應用程序名“

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved