Announcement

Collapse
No announcement yet.

Was ist der richtige Web

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

  • Was ist der richtige Web

    Ich bin gerade dran eine Webservice-Abfrage in unsere alte Vb6 Anwendung zu integrieren.
    Ich hab mich dazu entscheiden den Webservice über Visual Studio 2010 (vb.net) abzufragen. Weils einfach un stressig ist über Diensthinweis hinzufügen etc....

    Ich hab mir schon ne Klasse gebaut die den Service Abfragt und auch Ergebnisse bringt



    Jetzt stellt sich mir die Frage, was ist besser :

    Das ganze irgendwie in eine Asp.net Seite zu verbauen und vom Vb6 Programm die Page aufrufen, die fragt den Webservice ab und liefert meine Daten.

    oder wie man das früher gemacht hat ne COM Komponente entwickelt und diese in VB6 eingebunden.


    Bei der zweiten Variante steh ich allerdings vor einem großen WIE da ich überhaupt nichts darüber finde wie ich eine COM Kp mit Visual Studio entwickle und sie auch später beim Kunden installiert bekomme... Man findet irgendwie nicht so viel darüber

    Was meint ihr ?

  • #2
    Originally posted by Ben Graf View Post
    Bei der zweiten Variante steh ich allerdings vor einem großen WIE da ich überhaupt nichts darüber finde wie ich eine COM Kp mit Visual Studio entwickle und sie auch später beim Kunden installiert bekomme... Man findet irgendwie nicht so viel darüber

    Was meint ihr ?
    ActiveX benutzt COM.
    Wenn du COM verwenden willst, musst du wahrscheinlich etwas in ActiveX erstellen.
    Da musst du mal beim Neuerstellen eines VB6-Projektes nachschauen, was alles möglich ist.

    Comment


    • #3
      also ich bin mittlerweile so weit das ich mit Vb.net und visual Studio ne DLL gebaut habe und diese mit dem DOS befehl Regasm in eine Tlb Datei umgewandelt habe.
      Hier die Anleitung die ich gefunden hatte:
      http://www.vb-paradise.de/programmie...vb08-fuer-vb6/

      Allerdings bekomme ich beim erstellen der Tlb Datei für Vb6 schon ne etwas seltsame Fehlermeldung:


      Einbinden kann ich das ganze in VB 6 nur hängts dann beim Ausführen:

      Objekterstellung durch ActiveX-Komponente nicht möglich

      jetzt komm ich nicht mehr weiter, hat jemand ne IDee?

      Comment


      • #4
        Allerdings bekomme ich beim erstellen der Tlb Datei für Vb6 schon ne etwas seltsame Fehlermeldung:
        Du hast scheinbar eine generische Klasse per COM veröffentlicht. COM, genauso wie klassisches VB, kennt sowas nicht und somit wäre der generische Teil logischerweise nicht aufrufbar. Der andere veröffentlichte Teil sollte aber nutzbar sein, darum nur eine Warnung und keine Fehlermeldung.

        Ich kenne klassisches VB nicht insofern kann ich da nicht wirklich weiterhelfen. Ich vermute aber keinen (zumindest direkten) Zusammenhang zwischen der gezeigten Warnung und deinen Problemen bei der Objekt Instanziierung. Außer du hast versucht das generische Objekt zu instanziieren.

        Comment


        • #5
          ich versteh leider nicht was du mir sagen willst.
          Aber ich vermut edann wohl das ich das generische Objekt instantziieren will, muss ?!


          Ich will ja die DLL aus VB.net als COM einbinden ins vb6 :-/

          Comment


          • #6
            mit dieser Anleitung hab ich jetzt zumindest ohne den DOS befehl die Tlb Datei erstellt :-)
            http://support.microsoft.com/default...d=kb;de;817248

            und jetzt bekomme ich die Fehlermeldung in VS2010

            Warnung 1 Der Typbibliothekexporter hat beim Verarbeiten von "WebServiceT24.Tyre24.Tyre24SoapWebservicePortType Client, WebServiceT24" einen geringfügigen Fehler gefunden. Warnung: Der Typbibliothekexporter hat einen Typ gefunden, der von einer generischen Klasse abgeleitet und nicht als [ClassInterface(ClassInterfaceType.None)] gekennzeichnet ist. Klassenschnittstellen können für solche Typen nicht zugänglich gemacht werden. Sie können den Typ mit [ClassInterface(ClassInterfaceType.None)] markieren und mithilfe des ComDefaultInterface-Attributs eine explizite Schnittstelle als die Standardschnittstelle für COM zugänglich machen. WebServiceT24

            Comment


            • #7
              ich versteh leider nicht was du mir sagen willst.
              Ich wollte sagen das dein Weg prinzipiell vermutlich funktioniert hat, nur du hast versucht einen Typ per COM zu veröffentlichen der nicht per COM veröffentlichbar ist(weil er generisch ist). Du musst die veröffentlichte Schnittstelle nicht generisch gestalten um sie nachher auch von irgendwo benutzen zu können.

              Da du eine Tlb hast kannst du dir die einfach mal Visual Studio ansehen welche Typen den überhaupt veröffentlicht sind. Der Typ der zur Warnung gehört fehlt vermutlich.

              Comment


              • #8
                ok das hab ich jetzt verstanden und auch mal nachgesehen und du hast recht in meinem projekt habe ich eine klasse in der eine Funktion ist die ich zwar public deklariert habe aber nicht in der tlb datei drin ist!!

                Aber wenn ich die doch als Public function xyz(123 AS STRING) as string deklariere
                müsste die doch angezeigt werden ?!
                was habe ich da falsch gemacht?

                Edit:

                Ok es klappt hab im visual studio nur die falsche klassenbibliothek erstellt :-)

                allerdings bekomm ich im VB6 ne Fehlermeldung die irgendwas mit dem Soap zu tun hat den ich da verwenden :-(
                naja mal weitersuchen
                Zuletzt editiert von Ben Graf; 22.03.2011, 16:28.

                Comment


                • #9
                  Das ist die Fehlermeldung dich ich im VB6 bekomme wenn ich die COM klasse abfrage :-(

                  kann damit jemand was anfangen ?

                  Es wurde kein standardmäßiges Endpunktemelemt gefunden, das auf den Vertrag xxxSoapWebservicesPortType" im ServiceModel-Clientkonfigurationsabschnitt verweist. Die kann folgende Ursachen haben: Für die Anwendung wurde keine Konfigurationsdatei gefunden, oder im Clientelement wurde kein Endpunktelement gefunden, das diesem Vertrag entsprach.

                  Comment


                  • #10
                    Hört sich so an als hättest du ein Wcf Webservice geschrieben und er findet die Konfiguration dazu nicht (die in der App.Config). Die App.Config gehört immer zur startenden Anwendung(in diesem Fall also zu deiner VB6 Anwendung). Falls du als zu deiner VB.Net Assembly eine App.Config hast musst du die Teile die Wcf betreffen also in die App.Config deiner VB6 Anwendung kopieren. Ich habe keine Ahnung ob eine nicht .NET Anwendung eine App.Config haben kann bzw. ob die auch irgendwie automatisch gelesen wird. Falls die auch ignoriert wird müsstest du die Configuration im Code vornehmen.

                    Comment


                    • #11
                      mhhh ich glaube nicht das Vb6 ne app.config lesen kann. Aber welche configuration muss ich denn vornehmen ?

                      Comment


                      • #12
                        Aber welche configuration muss ich denn vornehmen ?
                        Die Notwendigen? Ich habe keine Ahnung was du genau brauchst kann die also auch nicht raten was zu konfigurieren ist. Zu konfigurieren gibt es aber genug (vom Endpoint über das verwendete Protokoll, Paketgrößen, Serialisierungsarten, Encoding, Timeouts etc.).

                        Wenn ich dich recht verstanden habe hast du aber den ClientTeil des Webservices in .Net geschrieben und dann als COM Komponente veröffentlicht. Zu dieser Assembly in der sich dieser Teil befindet solltest du auch in deinem Projekt eine App.Config finden. Und der Knoten <system.serviceModel> sollte deine Wcf Webservice Client Configuration enthalten. Die müsstest du wie gesagt in eine App.Config deiner VB6 Applikation kopieren und sehen was passiert.

                        Comment


                        • #13
                          ja ich muss mich nur um den Client kümmern
                          ich hab nur nen link zur Wsdl Datei und soll gucken wie ich damit komuniziere :-/

                          ich kann leider keine app.config zu meinem VB6 projekt hinzufügen weils sowas nicht für VB6 gibt, damals hieß das ganze noch INI datei

                          Comment


                          • #14
                            ich kann leider keine app.config zu meinem VB6 projekt hinzufügen weils sowas nicht für VB6 gibt, damals hieß das ganze noch INI datei
                            Es ist möglich das wenn du einfach von Hand eine App.Config neben dein Executable legst(also eine MeinExecutableName.exe.config) das der .Net Teil in deiner Anwendung die findet. Du könntest es zumindest einfach mal ausprobieren ob die Konfiguration darin dann gefunden wird.

                            Comment


                            • #15
                              hat funktioniert!!
                              krass

                              Comment

                              Working...
                              X