
A mellékelt példa használata előtt a COMService projektben fordításkor generálódott DLL-t regisztrálnia kell a Windows rendszer komponensszolgáltatásai közé. Ennek érdekében a Visual Studio.NET parancssorában gépelje be a következőket: regsvcs <elérési út>\\COMService.dll.
Ahhoz, hogy olyan COM+ szolgáltatást hozzunk létre számítógépünkön, mely elérhető tetszőleges alkalmazásból, csupán néhány dologra van szükség. Ezeken haladunk most végig felsorolásszerűen.
- A szolgáltatásként regisztrált osztálynak a System.EnterpriseServices névtér ServicedComponent osztályából kell a tulajdonságait örökölnie.
- Az osztály és a metódusok deklarációit a megfelelő attribútumokkal kell ellátni.
- A regisztrálandó assembly-nek titkos kulccsal rendelkező – strong named – assembly-nek kell lennie.
- A fenti útmutatóban említett módon regisztrálni kell a szolgáltatást.
A komponens egy XML-állomány lekérdezett adatát adja vissza egy nyilvános metódus segítségével.
A COMService projektünkben a következőképpen tettünk eleget a fenti kívánalmaknak. Szükség van egy komponensnévre, mellyel a regisztráció megtörténik, ez most XMLComponent lesz.
[assembly: ApplicationName("XMLComponent")]
Az osztály deklarációja is speciális.
[Transaction(TransactionOption.Required)]
public class COMClass : ServicedComponent
{
...
Végül a metódust deklaráljuk az AutoComplete attribútummal, melynek eredményeképpen a tranzakció abortál, amennyiben hiba következik be.
[AutoComplete]
public string GetProductName(string id)
{
...
}
}
A metódusban az XPathNavigator, és az XPathNodeIterator osztályok segítségével kaphatjuk meg a mellékelt products.xml állomány egy tetszőleges értékét. A metódus visszatérési értéke a keresett <ProductName> tagban megtalálható információ, mely a megadott <ID> értékhez tartozik.
A következő lépés, hogy egy erős névvel lássuk el az assembly-nket. Ehhez indítsuk el a VS.NET IDE parancssorát, majd gépeljük be a következő sort:
sn –k <elérési út>\keypair.snk
A művelet a .NET Framework SN.EXE alkalmazásának felhasználásával generált egy titkos kulcsot, mellyel aláírjuk a DLL-t. Az aláíráshoz a kulcsállományt elérhetővé kell tenni a projekt számára. Ezt az AssemblyInfo.cs állományban tehetjük meg.
[assembly: AssemblyKeyFile("..\\..\\keypair.snk")]
Ekkor a projekt mappájában található a kulcsállomány.
A kliensalkalmazásban elegendő példányosítanunk az osztályt, majd meghívnunk a metódust, mely megadja a kért adatot.
COMService.COMClass cc = new COMService.COMClass();
textBox1.Text = cc.GetProductName(comboBox1.Text);
Fontos tényező, hogy COM+ komponensek elérésekor a kliensalkalmazásban is meg kell adni referenciaként a System.EnterpriseServices névteret.
A projektek fordítása után az útmutatóban említett módon regisztrálnunk kell a szolgáltatást. A regisztráció eredményeképpen meg is jelenik a Windows komponensszolgáltatásai között a mi XMLComponent szolgáltatásunk.
Ehhez a Felügyeleti eszközök közül válasszuk a „Komponensszolgáltatások” nevűt, majd indítsuk el. Nyissuk meg a Számítógépek csomópontot, majd azon belül a Sajátgép elemet, ahol a COM+ alkalmazások mappában megtaláljuk a saját szolgáltatásunkat, melyet letilthatunk, vagy törölhetünk is a program segítségével.