Announcement

Collapse
No announcement yet.

COM+ Server auf anderem PC

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • COM+ Server auf anderem PC

    Hallo,
    Ich habe COM+ Server und COM+ Client in C# erstellt. Beide funktionieren auf einem PC prima. Aber ich möchte COM+ Server DLL auf anderem PC laufen lassen. Was muss ich einstellen oder ändern, damit der Client versteht, dass COM+ Server auf anderem PC läuft.

    Danke.

  • #2
    Hallo,
    Ich habe COM+ Server und COM+ Client in C# erstellt. Beide funktionieren auf einem PC prima. Aber ich möchte COM+ Server DLL auf anderem PC laufen lassen. Was muss ich einstellen oder ändern, damit der Client versteht, dass COM+ Server auf anderem PC läuft.
    Danke

    Comment


    • #3
      Hallo,

      Für die Lösung dieses Problems gibt es gleich zwei verschiedene Wege, denn neben der Auslieferung eines so genannten <i>Application Proxy</i> der COM+ Anwendung können wir auch direkt im Client explizit eine DCOM-Verbindung zu einem anderen Rechner anfordern.
      <br><br>
      <b>Weg 1: Application Proxy </b><br>
      Damit eine .NET Enterprise Services-Komponente von anderen Rechnern über DCOM aus erreichbar ist, müssen offiziell die folgenden Vorbedingungen erfüllt werden: <br>
      1. Assembly wird im GAC abgelegt <br>
      2. Komponente wurde registriert und ist in einer COM+ Anwendung (Server-Anwendung mit DLLHOST.EXE) eingebunden <br>
      3. Auf dem Server-Rechner wurde über den COM+ Anwendungsexport-Assistenten ein MSI-Setup erzeugt (Application Proxy) <br>
      4. Auf dem Client-Rechner ist das .NET-Framework installiert <br>
      5. Auf dem Client-Rechner wird das im Schritt 3 generierte MSI-Setup für den Application Proxy ausgeführt
      (Microsoft-TechDoc: Service Pack#3 für Windows 2000 Server muss installiert sein, damit dies erfolgreich ist!) <br><br>

      <b>Weg 2: Direkter DCOM-Aufruf </b><br>
      Wenn der bequeme Weg über den Application Proxy nicht erfolgreich ist, steht immer noch der Umweg via <b>Type.GetTypeFromCLSID</b> und <b>Activator.CreateInstance</b> zur Verfügung. Wenn auf der Client-Seite das Interface des COM+ Objekts (alias <i>.NET Enterprise Service</i>) bekannt ist, sorgt die "Umleitung" über die <b>Activator</b>-Klasse dafür, dass die COM+-Objektinstanz auf einem Server angefordert werden kann. Als Input erwartet die Methode <b>CreateInstance</b> der Activator-Klasse eine Type-Instanz, die über <b>GetTypeFromCLSID</b> sowohl mit der CLSIS des COM+ Objekts (siehe Eigenschaftfenster der COM+ Anwendung) als auch mit dem Servernamen (oder IP-Adresse) des Servers gefüttert wurde. Zum Schluss tauscht man dann nur den neutralen Object-Verweis gegen das Interface des .NET Enterprise Service-Objekts ein. Das folgende Beispiel demonstriert dies:
      <pre>
      <b>private</b> <b>void</b> buttonConnect_Click(<b>object</b> sender, System.EventArgs e)
      {
      <b>if</b> (checkBoxDCOM.<b>Checked</b>)
      {
      Guid aESClsGuid = <b>new</b> Guid(<font color="#9933CC">"F0EAB472-3282-4ED4-BB48-E3D110CA01AC"</font>);
      Type aESSrvType = Type.GetTypeFromCLSID(aESClsGuid, textBoxDCOMServerName.Text, <b>false</b>);
      <b>Object</b> aSrvObj = Activator.CreateInstance(aESSrvType);
      <font color="#003399"><i>// Neutrales Objekt gegen Verweis auf die DCOM-Serverklasse eintauschen</i></font>
      aESObj = aSrvObj <b>as</b> ThreeTierEnterpriseService.IPerformancevergleichES Obj;
      }
      <b>else</b>
      {
      aESObj = <b>new</b> PerformancevergleichESObj() <b>as</b> IPerformancevergleichESObj;
      }
      }
      </pre>
      &#10

      Comment


      • #4
        Danke

        Comment

        Working...
        X