Announcement

Collapse
No announcement yet.

Probleme einer Multi-Tier Anwendung beim Einrichten auf Kundenrechner

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

  • Probleme einer Multi-Tier Anwendung beim Einrichten auf Kundenrechner

    Ich habe mit Hilfe eines exteren RemoteDatamodul,den Komponenten ADOConnection, TBetterADODataSet und DataSetProvider auf der Serverseite und clientseitig über die Komponenten DCOMConnection und ClientDataSet eine mehrschichtige Datenbankanwendung erstellt.

    Dank TBetterADODataSet funktioniert jetzt auch ApplyUpdates und Refresh der ClientDataSet. Jedesmal beim Öffnen der ClientDataSet des Client-Programmes öffnet sich auch das Programm auf dem Server. Wird die Client-Applikation direkt auf dem Server gestartet, wird sogar das Server-Programm sichtbar dargestellt, wird hingegen das Client-Programm auf einer Arbeitsstation gestartet, erscheint das Server-Programm lediglich im Task-Manager des Server-Rechners. Auf meinem Entwicklungsrechner benutze ich Windows XP. Soweit so gut.

    Wenn ich allerdings mein Programm beim Kunden installiere (Windows 2000), erscheint immer die Meldung "Klasse nicht registriert". Mir ist aufgefallen, das auf meinem Rechner unter Komponentendienste neben COM+ auch DCOM im Unterverzeichnis erscheint, hingegen auf dem
    Kundenrechner nur COM+. Muß ich an dieser Stelle noch zusätzlich etwas nachinstallieren und wie registriere ich die fehlende Klasse?

    Hoffe, jemand kann mir helfen. Warte ungeduldigst auf Antworten

    Gruß Peter

  • #2
    N'Abend,

    zum Betrieb einer Datasnap Anwendung wird die Midas.dll benötigt. Entweder diese auf den Client Rechner kopieren und mit regsvr32 oder tregsvr registrieren. Oder ab D6 die MidasLib.dcu in das Client Programm kompilieren.
    Werden auch noch eigene Schnittstellen auf dem Server aufgerufen muß auf dem Client auch die zum Server gehörende Typenbibliothek (*.tlb) registriert werden.

    Das Fehlen vom DCOM in den Komponentendiensten ist kein Problem sondern normal die entsprechenden Einstellungen sind bei Win2K einfach woanders versteckt.

    Den 2.Absatz verstehe ich nicht ganz.
    Ist der Server eine COM+Anwendung? Dann ist es normal das diese nur im Taskmanager auftaucht (als dllhost.exe Prozeß).
    Ist es keine COM+ Anwendung dann werden wahrscheinlich die Standard DCOM Einstellungen verwendet das heißt der Server wird unter dem Userkonto desjenigen ausgeführt der auf dem ClientRechner den Server aufruft. Wenn auf dem Server gerade jemand anderes angemeldet ist kann das zum Server gehörende Formular natürlich nicht angezeigt werden.
    Soll der Serverprozeß unter dem am Server angemeldeten User laufen damit das Programm auf dem Desktop sichtbar wird muß in den DCOM Einstellungen (DCOMCNFG.EXE unter Win2k bzw. Komponentendienste in WinXP oder Win2003) die Identität auf 'interaktiver User' geändert werden.

    Grüße
    Ralf Janse

    Comment


    • #3
      Vielen Dank für die schnelle Antwort. Ich habe noch einen Fehler in meiner Client-Anwendung entdeckt. Die Eigenschaft der DCOMConnection-Komponente Servername war zwar korrekt eingestellt, nicht aber die der ServerGuid. Ich habe die Eigenschaft für die ServerGUID leer gelassen, sie wird auf dem Kundenrechner sicherlich einer andere Kennung erhalten.

      Danach habe ich mit regsvr32 D:\Applikation\Midas.dll erfolgreich registriert. Leider erscheint danach immer noch die gleiche Fehlermeldung "Klasse nicht registriert". Wie kann ich die Typenbibliothek registrieren, funktioniert doch nur mit *.dll oder .ocx? Ich habe erst mal die Datei RemoteDataModul.tlb ins Verzeichnis der Client-Anwendung kopiert, brachte aber auch nichts.
      Was mache ich noch falsch?

      Gruß Pete

      Comment


      • #4
        Die Tlb auf den Client kopieren reicht nicht. Die muß/kann genauso wie eine Dll registriert werden. Ich bin mir nicht sicher ob das regsvr32 kann aber TRegsvr das Delphi beiliegt kann es.

        Die Fehlermeldung 'Klasse nicht registriert' hört sich aber nicht so an als würde es an einer fehlenden Typbibliothek liegen, dann käme eine Fehlermeldung wie 'Schnittstelle nicht unterstützt'.

        Wenn die Midas.dll aus dem Client und auf dem Server korrekt registriert ist (bei alten Delphi Versionen bis 5 glaub ich gab es auch noch eine DBClient.dll die registriert werden mußte) und dieser Fehler Auftritt solltest du mal genau beschreiben (Code?) an welcher Stelle dieser auftritt.

        Grüße
        Ral

        Comment


        • #5
          Hallo Ralf,
          ich habe die Schritte "Registrierung von Midas.dll", "Start des Provider-Programmes" und letzendlich "Ausführen der eigentlichen Client-Anwendung" in verschiedener Reihenfolge getestet bis endlich alles korrekt in der Client-Anwendung angezeigt wurde. Da ich auf 2 unterschiedliche Datenbanktypen zugreifen muß (Oracle + MS-SQL) ist leider bei jeder Änderung des Datenbanktypes die korrekte Funktionsweise nicht reproduzierbar. Das Provider-Programm (externes RemoteDatamodul) liest die jeweiligen Datenbankeinstellungen beim Start und wurde bei Änderung der Datenbankeinstellung von mir jedesmal manuell neu gestartet.

          Letzendlich habe ich es zwar geschafft, das Programm zum Laufen zu bringen, allerdings ist mir nicht ganz klar, welche Rahmenbedingungen dazu geführt haben.

          Gruß Pete

          Comment

          Working...
          X