使用C#開發COM+元件 (轉)

worldblog發表於2007-12-11
使用C#開發COM+元件 (轉)[@more@] 技術是大力推廣的下一代平臺技術,自從.NET技術架構Beta2版本的正式釋出,此項技術也逐漸走向成熟和穩定。按照微軟的平臺佔有率,我們不難想象得到,在未來的一兩年內.NET技術必定會勢如破竹一般的登上主流的技術平臺,而一個新的技術平臺得以發展的最重要的前提是:他不會徹底的摒棄以前的技術,這一點對於.NET技術來說指的就是COM/COM+技術了。

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

在EClaibrary1目錄下用SN命令生成一個GUID,如下所示::namespace prefix = o ns = "urn:schemas--com::office" />

    sn –k keyfile.snk

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

[assembly: AssemblyKeyFile(@"e:classlibrary1keyfile.snk")]

  作用是使這個工程檔案建立的DLL檔案擁有GUID(全球唯一識別符號),也就是擁有一個強名稱(strong name),這是COM+要求的。

  CS的詳細程式碼如下:

using System;

using System.Runtime.InteropServices;//為了呼叫GUID

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

using System..Services;

namespace ClassLibrary1

{

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

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

    public interface ISh2

  {

    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+應用程式名“

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991414/,如需轉載,請註明出處,否則將追究法律責任。

相關文章