Announcement

Collapse
No announcement yet.

.net Methoden als COM freigeben

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

  • .net Methoden als COM freigeben

    Hallo!

    Ich habe eine Classe erstellt, welche ich als COM-Server im System registriet habe.

    Nun greife ich mit Delphi 7 über späte Bindung auf die Methoden zu. Klappt auch gut.

    Nun habe ich ein Typbibliothek erstellt (mit regasm <assembly> /tbl) und diese in Dephi importiert.
    Leider finde ich keine Methoden in der Typbibliothek.
    Muss ich ein Attribut für die Methoden angeben welche ich exportieren möchte?
    Hat Delphi ein Problem beim importieren der Typbibliothek?

    mfg
    Thomas Sparenberg

  • #2
    Hallo,

    auch in Borland Delphi gibt es den Unterschied zwischen einem Dispatch-Interface (nur späte Bindung über die 7 vordefinierten Interface-Methoden von IDispatch) und einem Dual-Interface (das sowohl späte als auch frühe Bindung unterstützt). Nur bei einem Dual-Interface tauchen die eigenen Methoden in der TLB auf. Die Assembly erhält daher 2 neue Eigenschaften:
    1. ComVisible(true)
    2. ClassInterface(ClassInterfaceType.AutoDual)

    Code:
    using System.Reflection;
    using System.Runtime.CompilerServices;
    //
    using System.Runtime.InteropServices;
    ...
    ...
    ...
    [assembly: AssemblyDelaySign(false)]
    [assembly: AssemblyKeyFile("")]
    [assembly: AssemblyKeyName("")]
    //
    [assembly: ComVisible(true)]
    [assembly: ClassInterface(ClassInterfaceType.AutoDual)]
    Alternativ kann ein einzelnes Interface der Klasse gekennzeichnet werden, wenn nur dieses für den Delphi-Client sichtbar sein soll:

    Code:
        [InterfaceType(ComInterfaceType.InterfaceIsDual)]
        [Guid("B5D03782-E2ED-4047-9772-0EC77318314D")]
        public interface IDualInterface
        {
            void DoSendEvent(string msg);
        }
    Zuletzt editiert von Andreas Kosch; 17.08.2007, 07:23.

    Comment


    • #3
      Hallo!

      Danke für die Hilfe! Jetzt sehe ich die Methoden!

      Sie schreiben in Ihren Büchern über COM das der Import der Typlib unter Delphi nicht immer sauber funktioniert.

      Haben Sie im Zusammenspiel VS2005 mit Delphi 7 schon schlechte Erfahrungen im Bezug auf Kompatibilität gemacht?

      Gibt es einen Weg der wenig Schwierigkeiten verspricht evtl. Dispatch-Interface?

      mfg
      Thomas

      Comment


      • #4
        Schau dir mal folgendes an:

        Managed VCL
        Hydra

        Evtl. ist ja das besser für dich geeignet als über registrierte COM-Objekte zu gehen.

        Comment


        • #5
          Hallo!

          Danke für den Hinweis auf ManagedVCL und Hydra.

          Bei der Verwendung von ergänzenden Komponenten bin ich sehr Vorsichtig, da dieses meist weitere Kosten beim Wechsel der Compilerverson erzeugen.
          Weiterhin möchte ich gängige Technik einsetzen.
          Da ich als Entwickler für Automatisierunssoftware nur ein ruhiges Leben habe wenn meine Software stabil und zuverlässig arbeitet, lege ich natürlich auf robustheit und einfachheit großen Wert.

          Gibt es also einen Grund gegen COM?

          mfg
          Thomas

          Comment


          • #6
            Originally posted by Thomas Sparenberg View Post
            Bei der Verwendung von ergänzenden Komponenten bin ich sehr Vorsichtig, da dieses meist weitere Kosten beim Wechsel der Compilerverson erzeugen.
            Wenn Du Sourcen hast dann ist das keine Problem. Im Gegensatz zu .NET. Da zahlst du oft für die Framework-Versionswechsel.

            Originally posted by Thomas Sparenberg View Post
            Weiterhin möchte ich gängige Technik einsetzen.
            Und wieso steht hier Delphi? (Ketzerisch gefragt)

            Originally posted by Thomas Sparenberg View Post
            Gibt es also einen Grund gegen COM?
            Na das ganze Problem der DLL-Hölle, nötige Admin-Rechte, ...

            Comment


            • #7
              Originally posted by Bernhard Geyer View Post
              Wenn Du Sourcen hast dann ist das keine Problem. Im Gegensatz zu .NET. Da zahlst du oft für die Framework-Versionswechsel.
              Es sei denn man Verwendet nur native Kompontenten der Entwicklungsumgebung.

              Originally posted by Bernhard Geyer View Post
              Und wieso steht hier Delphi? (Ketzerisch gefragt)
              Ja. Genau. Delphi oder VB. Eine der großen Fragen der Menschheit.
              Gut oder Böse. Jin & Jan. Die philosophische Stunde ist eröffnet.

              Originally posted by Bernhard Geyer View Post
              Na das ganze Problem der DLL-Hölle, nötige Admin-Rechte, ...
              Nun ja. Ich benötige die Schnittstelle um eine vorhandene Delphi-Anwendung zu erweitern. Die Erweiterung ist eine eigenständige Anwendung. Ich möchte jedoch den User die Möglichkeit geben aus der Delphi-Anwendung Funktionen in der neuen Anwendung zu nutzen (Anzeige von Daten in der neuen Anwendung die zu Daten der "alten" Delphi-Anwendung gehören).
              Da die Anwendung nur durch Fachleute installiert wird, sollte sich das DLL-Problem nicht ergeben.

              mfg
              Thomas

              Comment


              • #8
                Originally posted by Thomas Sparenberg View Post
                Es sei denn man Verwendet nur native Kompontenten der Entwicklungsumgebung.
                Und entwickelt dann an manchen Dingen Monate lang die man für ein paar € dazukaufen könnte ...

                Originally posted by Thomas Sparenberg View Post
                Ja. Genau. Delphi oder VB. Eine der großen Fragen der Menschheit.
                Gut oder Böse. Jin & Jan. Die philosophische Stunde ist eröffnet.
                Ich bin selbst primär Delphi-Entwickler. Ich wollte nur die Hintergründe wissen.

                Originally posted by Thomas Sparenberg View Post
                Da die Anwendung nur durch Fachleute installiert wird, sollte sich das DLL-Problem nicht ergeben.
                Ob sich ein technischer Fachmann mit den üblichen SW-Verteilungsproblemen auskennt?

                Comment


                • #9
                  Originally posted by Bernhard Geyer View Post
                  Und entwickelt dann an manchen Dingen Monate lang die man für ein paar € dazukaufen könnte ...
                  Bislang hat es noch keinen Fall gegeben in dem ich nicht mit den Standadkompontenen ausgekommen bin. Unser UI ist evtl. nicht mit den letzen optischen Featcher ausgestattet. Jedoch stelle ich mir bei so manchem UI die Frage ob die Bedienung durch sollche Dinge besser und übersichtlicher wird.

                  Originally posted by Bernhard Geyer View Post
                  Ich bin selbst primär Delphi-Entwickler. Ich wollte nur die Hintergründe wissen.
                  ?
                  Die Wahl fiehl auf Delphi da in unserem Unternehmen schon vor meiner Zeit vin Pascal programmiert wurde. (Coderecycling ).

                  Originally posted by Bernhard Geyer View Post
                  Ob sich ein technischer Fachmann mit den üblichen SW-Verteilungsproblemen auskennt?
                  Doch - den der bin ich in 50% aller Fälle. Wir erstellen Software die individuell für den Kunden geschrieben (angepasst) wird. Da gibt es meistens noch nicht mal einen Admin der sich mit sowas wie "Software für die Produktion" beschäftigen will. Es muss also keine DAU-Sicher Installationsversion geben. Deshalb auch die Aussage: "Es muß störungsfrei laufen" Jeder Fehler bedeutet: lange Arbeitstage, unterbrochene Wochenenden, kurze Nächte.

                  mfg
                  Thomas

                  P.S.: Jetzt habe ich meinen Test sogar unter Vista zum laufen bekommen. Zwar mit VS und Delphi im Admin betrieb, aber es läuft - (noch???).
                  Zuletzt editiert von Thomas Sparenberg; 18.08.2007, 14:43.

                  Comment


                  • #10
                    Originally posted by Thomas Sparenberg View Post
                    Bislang hat es noch keinen Fall gegeben in dem ich nicht mit den Standadkompontenen ausgekommen bin. Unser UI ist evtl. nicht mit den letzen optischen Featcher ausgestattet. Jedoch stelle ich mir bei so manchem UI die Frage ob die Bedienung durch sollche Dinge besser und übersichtlicher wird.
                    Es geht nicht nur um optische Feature sondern auch das manchmal mitgelieferte Kompos vom .NET-Framework nicht gerade super sind. Einen größeren Zugriff auf Oracle mit dem Provider von MS würde ich nicht machen.

                    Originally posted by Thomas Sparenberg View Post
                    Die Wahl fiehl auf Delphi da in unserem Unternehmen schon vor meiner Zeit vin Pascal programmiert wurde. (Coderecycling ).
                    Würde bei uns auch so sein :-) (Rein) .NET bringt wenig vorteile wenn man die Hälfte der Arbeit schon durch vorhandene Komponenten/Units erledigen lassen kann.

                    Originally posted by Thomas Sparenberg View Post
                    Doch - den der bin ich in 50% aller Fälle. Wir erstellen Software die individuell für den Kunden geschrieben (angepasst) wird. ...
                    Und wenns nicht klappt kannst ja die Person zusammenscheißen der versucht zu installieren :-)

                    Originally posted by Thomas Sparenberg View Post
                    P.S.: Jetzt habe ich meinen Test sogar unter Vista zum laufen bekommen. Zwar mit VS und Delphi im Admin betrieb, aber es läuft - (noch???).
                    ... bis zum nächsten Update. Die aktuelle Qualität von Vista läßt noch sehr zu wünschen übrig. Aber das ist ein anderes Thema.

                    Comment

                    Working...
                    X