Announcement

Collapse
No announcement yet.

DCOM reagiert unerwartet

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

  • DCOM reagiert unerwartet

    Hallo!<p>Mein DCOM-Server macht komische Sachen. Habe einen DCOM mit einer Oracle-Session (DOA), die global ist. Erstelle z.B. Bilder aus der DB dynamisch, was global auch klappt. Nun habe ich einige Funktionen, die lokal Queries erstellt, die die gleiche Session zugewiesen bekommen. Bei diesen Funktionen, wenn die Anwendung einige Stunden inaktiv als "quasi-Service" ruht, bekomme ich einen Oracle-Fehler (3114, Session beendet), der aber Unsinn ist, da ich mit der Funktion, die das globale Query verwendet, weiterhin sauber arbeiten kann.
    <p>Andersrum wäre mir logischer, wenngleich ebenso unverständlich, vorgekommen. Bei Windows-Applikationen hatten wir da noch nie Probleme...<p>
    System: Windows 2000 Advanced Server, Oracle 9i
    <p>
    Habe gehört, daß dcom unter win 2k sowieso nicht als "Dienst" richtig läuft, man solle com+ nehmen? (Gerücht?!?)<p>
    Bin für jeden Hinweis dankbar, Nils

  • #2
    Hallo,

    in einer "richtigen Three-Tier-Datenbankanwendung" wird die Datenbankverbindung vom eigenen Programm nur so lange aufrechterhalten, wie die aufgerufene Interface-Methode aktiv ist. Bei jedem Aufruf einer DCOM-Serverfunktion laufen die folgenden Schritte ab: <br>
    1. Datenbankverbindung öffnen <br>
    2. Aktion abarbeiten <br>
    3. Datenbankverbindung schließen <br>
    4. Ergebnis an Aufrufer (Client) zurückliefern.

    In einer "richtigen Three-Tier-Datenbankanwendung" (die als COM+ Anwendung läuft) hat diese Vorgehenweise keine Verzögerungen zur Folge, weil alle Datenbankverbindungen automatisch über einen Datenbankverbindung-Pool laufen (automatischer OLE DB-Service). In diesem Umfeld spielt es keine Rolle, ob der eigene DCOM-Server einige Stunden deaktiv ist - in diesem Fall würde der automatische Datenbankverbindungs-Pool seine Verbindungen wegen Inaktivität bis zum vereinbarten Minimum herunterfahren.

    &gt;..dcom unter win 2k sowieso nicht als "Dienst" richtig läuft..

    Das hat nichts mit DCOM selbst zu tun, sondern mehr mit Delphi. Wenn man für den NT-Dienst und den DCOM-Server die VCL-Klassen verwendet, erhält man in der Tat kein sauberes Ergebnis.

    &gt;..man solle com+ nehmen?.

    COM+ hat generell viele Vorteile, so dass es ab Windows 2000 keine sinnvolle andere Alternative gibt. Bereits unter NT 4 konnte über das frei verfügbare Option Pack der MTS (Microsoft Transaction Server) installiert werden, der gegenüber DCOM ebenfalls viele der COM+-Vorteile hatte

    Comment


    • #3
      Hallo Herr Kosch!<p>
      Sie schreiben, daß man bei dcom tatsächlich keinenen sauberen dienst erhältunter, wenn die standard delphi.vcl verwendet werden. <p>
      Bei schreibe ich denn nun auf elegante Weise die Anwendung in ein COM+ um?!?<p>
      Muß gestehen, daß Ihr Buch mir leider nicht direkt weiterhilft, da ich in den Kapiteln gesprungen bin. Wie sieht denn ein sauberes COM+-Minimal-Programm mit einem automatischen Oracle 9i-Session-Pooling aus (Quelltext möglich?)? Was bedeutet, "Bei Verwendung von Standard-VCLs genau, welche könnt man wodurch austauschen?<p>
      Viele Grüße, Nils Krec

      Comment

      Working...
      X