Da bi mogao da pozoves COM+ komponentu sa nkog drugog racunara, moras da odradis nekoliko stvari.
1) Tvoja COM+ komponenta (COM+ nije komponentni model vec samo skup servisa koji su na usluzi komponentama) mora da bude napravljena kao serverska komponenta, sto znaci da u file-u AssemblyInfo.sc (ili koji vec jezik upotrebljavas) treba da imas sledeci atribut:
Code:
[assembly: ApplicationActivation(ApplicationOption.Server)]
naravno tvoja klasa treba da bude izvedena iz ServicedComponent, da ubacis referencu na EnterpriseServices itd...
Code:
....
using System.EnterpriseServices;
namespace TestServer
{
public class Server: ServicedComponent
{
public void f()
{
}
}
}
nakon build-ovanja i instalacije komponente u COM+ katalog (nadam se da znas sta je to...) videces da da je sada tvoja komponenta server (nije vise samo biblioteka).
2) Sada treba da export-ujes proxy za tu komponentu, sto ces uraditi desnim klikom na tvoju COM+ aplikaciju i izabraces export. u sledecem dijalogu izaberi Application Proxy (sto ce ti omoguciti remote poziv...), izaberi gde da se instalacija snimi i to je za sada to.
3) Na klijentskoj masini izvrsi instalaciju (moja preporuka da to bude iz COM+ kataloga da bi mogao da biras gde da se instalira). Obavezno moras da imas instaliran COM+ Rollup Hotfix 18.1 ili W2K SP3 da bi sve radilo kako treba sa .NET Framework-om.
Napomena: ako ne vrsis instalaciju preko COM+ kataloga, proxy ce biti instaliran po default-u u C:\Program Files\ComPlus Applications\{neki GUID (broj koji ti sada nije bitan..)}\. U tom direktorijumu (ili u onom u kome ti navedes) ce se nalaziti assembly sa istim imenom kao sto je i tvoja COM+ komponenta, samo sto to sada nije ona, vec njen proxy...
4) U svojoj klijentskoj aplikaciji dodaj referencu na taj assembly (ustvari proxy) koji je instaliran na klijentskoj masini. Nikakava IP nije potreban sve ce COM+ sam da odradi... Nakon toga samo instanciraj objekte i to bi bilo to....
Code:
....
using TestServer;
using System.EnterpriseServices; // ovo mora obavezno i kod klijenta !!!
namespace TestKlijent
{
public class Klijent
{
TestServer.Server s = new TestServer.Server();
// i dalje radis sta hoces...
}
}
Ako negde zaskripi javi se na private (za deo koda, savet ili bilo sta sto ti treba u vezi COM+-a, WebServisa itd...)
Pozdrav
[
Ovu poruku je menjao havramm dana 24.08.2002 u 12:41 AM GMT]
[
Ovu poruku je menjao havramm dana 24.08.2002 u 12:52 AM GMT]
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!