Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webservice programmieren - wie? (https://www.delphipraxis.net/96005-webservice-programmieren-wie.html)

romber 17. Jul 2007 17:25


Webservice programmieren - wie?
 
Hallo!

Wir haben heute in der Arbeit eine Datenbank mit Positionskoordinaten für Russland geliefert bekommen. Mithilfe dieser Datenbank müssen wir eine Funktion für die Umkreissuche programmieren. Diese Aufgabe habe ich erhalten. Die wichtigste Voraussetzung ist, dass diese Funktion von überall aufgerufen werden kann.

Die Funktion soll ganz einfach funktionieren: man übermittelt eine PLZ-Index und den Umkreis und als Antwort bekommt man eine ARRAY (wichtig!) mit allen zutrefenden Postleitzahlen. Zur Verfügung steht ein mächtigen Server mit Windows Server 2003 und IIS 7 drauf.

Da habe ich sofort an ein Webservice gedacht. Nun habe ich keine Ahnung wie und mit welchen Mitteln ein Webservice erstellt wird...
Was brauche ich? Wie fange ich an? Was soll ich beachten? Und die wichtigste Frage: kann ich das mit dem normalen Delphi programmieren, ohne gleich auf .NET umsteigen zu müssen?

Torpedo 17. Jul 2007 19:53

Re: Webservice programmieren - wie?
 
Wie meinst du das mit dem Array?

mkinzler 17. Jul 2007 19:57

Re: Webservice programmieren - wie?
 
Du könntest auch eine ISAPI-Dll programmieren.

Elvis 17. Jul 2007 20:53

Re: Webservice programmieren - wie?
 
Zitat:

Zitat von romber
Und die wichtigste Frage: kann ich das mit dem normalen Delphi programmieren, ohne gleich auf .NET umsteigen zu müssen?

Nirgends ist es einfacher Webservices zu entwickeln als mit .Net.
Nirrgenndsss...

Installier' dir den kostenlosen Chrome-compiler, lege dir ein virtual directory im IIS an und dort eine Textdatei, die du SimpleWebService.asmx nennst.
Da fügst du einfach mal das hier ein und fürhst sie im Browser aus oder importierst sie in irgendeine Sprache in irgendeiner IDE.

Delphi-Quellcode:
<%@ WebService Language="Chrome" Class="SimpleWebService" %>

namespace;

interface
uses
  System.Collections.Generic,
  System.Web.Services.*;
 
type
  [WebServiceBinding(ConformsTo := WsiProfiles.BasicProfile1_1)]
  SimpleWebService = public class
  public
    [WebMethod]
    method BleistiftWebMethod : List<IrgendwelcheDaten>;
  end;
 
  IrgendwelcheDaten = public class
  public
    property Eigenschaft1 : String;
    property Eigenschaft2 : nullable Integer;
  end;
 
implementation

method SimpleWebService.BleistiftWebMethod : List<IrgendwelcheDaten>;
begin
  result := new List<IrgendwelcheDaten>();
 
  result.Add(new IrgendwelcheDaten(Eigenschaft1 := 'test1',
                                   Eigenschaft2 := 1));

  result.Add(new IrgendwelcheDaten(Eigenschaft1 := 'test2',
                                   Eigenschaft2 := 2));

  result.Add(new IrgendwelcheDaten(Eigenschaft1 := 'test3',
                                   Eigenschaft2 := 3));
end;

end.

Bernhard Geyer 17. Jul 2007 21:00

Re: Webservice programmieren - wie?
 
Zitat:

Zitat von Elvis
Zitat:

Zitat von romber
Und die wichtigste Frage: kann ich das mit dem normalen Delphi programmieren, ohne gleich auf .NET umsteigen zu müssen?

Nirgends ist es einfacher Webservices zu entwickeln als mit .Net.
Nirrgenndsss...

Ein Glück der späten Geburt :-)

Die Frage ob ein WebService die beste Lösung ist kann aufgrund deiner Vorgaben nicht getroffen werden (Auch wenns Wahrscheinlich ist). Diese Entscheidung kann erst nach Definition/Finden einer Architektur und eines passenden Design von Klassen/"Aufgabenblöcken" mit der Wahl der verwendeten Klassenbibliothek/Sprache/Framework sein. Wenn alles andere im System in Java entwickelt wurde ist und deine Komponente nur von einr andere (Java) Komponente auf dem gleichen Rechner aufgerufen wird ist ein WebServer evtl. fehl am platz/unpassend.

romber 18. Jul 2007 21:22

Re: Webservice programmieren - wie?
 
Zitat:

Zitat von Torpedo
Wie meinst du das mit dem Array?

Ich meine ein Array mit den Daten drin. ;)
Die Funktion bekommt als Parameter eine PLZ und eine Zahl für den Umkreis. Zurück werden alle PLZ als strings geliefert, die der Anfrage ensrprechen. Diese strings werden in eine Array gepackt und als result ausgegeben.

Zitat:

Zitat von mkinzler
Du könntest auch eine ISAPI-Dll programmieren.

Das würde ich sehr gerne. Bis heute hatte ich nicht viel Ahnung von ISAPI. Nun habe ich mich heute über dieses Thema schlau gemacht und sogar einige Tutorials gefunden. Ich weiss jetzt zwar was eine ISAPI ist und wie diese funktioniert. Aber die Tutorials haben sich alle auf eine Web-Seite als Ausgabe beschränkt. Wie ich die Parameter übergebe und eine Array ausgebe, kann ich mir (noch) nicht vorstellen. Über jede Hilfe und jeden Beispiel zu diesem Thema werde ich mich sehr freuen.


Zitat:

Zitat von Bernhard Geyer
Die Frage ob ein WebService die beste Lösung ist kann aufgrund deiner Vorgaben nicht getroffen werden (Auch wenns Wahrscheinlich ist). Diese Entscheidung kann erst nach Definition/Finden einer Architektur und eines passenden Design von Klassen/"Aufgabenblöcken" mit der Wahl der verwendeten Klassenbibliothek/Sprache/Framework sein. Wenn alles andere im System in Java entwickelt wurde ist und deine Komponente nur von einr andere (Java) Komponente auf dem gleichen Rechner aufgerufen wird ist ein WebServer evtl. fehl am platz/unpassend.

Ich freue mich für jede Idee, die ich für die Lösung meiner Aufgabe gebrauchen kann. ;)
Zu der Architektur kann ich nicht viel sagen, weil da nicht viel zu sagen ist. Ganz einfach:

Ich habe einen Windows Server 2003 mit IIS 7 drauf. Auf einem anderen lokalen Windows-Server läuft einen MS SQL Server 2005. Dort haben wir in einer Datenbank mehrere Tabellen mit den Daten. So. Die Aufgabe lautet wie folgt:

Erstellen einer Funktion, die alle PLZs in einem bestimmten Umkreis zurückgibt. Zwei Parameter:

PLZ = string
Umreis = integer

Ausgabe als Array.

Ich habe bereits alle Datenbankanfragen implementiert und habe am Ende eine Array mit den Daten. Nur wie stelle ich diese jetzt zur Verfügung?

Jelly 18. Jul 2007 22:25

Re: Webservice programmieren - wie?
 
Die von Robert vorgeschlagener Quelltext illustriert doch schon ganz anschaulich, wie ein Webservice aufgebaut ist, unter .NET.

Und falls du nicht "nur" den kostenlosen Chrome Compiler einsetzen willst, so kannst du noch leichter unter Delphi 2006 oder Visual Studio 2005 ein Webservice erstellen.

Lad dir doch mal z.B. die kostenlose Turbo Explorer für .NET runter und erstelle darin ein Webservice Projekt, und du wirst sehen wie leicht das gehen...

Nuclear-Ping 19. Jul 2007 01:44

Re: Webservice programmieren - wie?
 
Warum das Ganze nicht in PHP oder so umsetzen?
Solange du eine Schnittstelle zur Datenbank hast (und afaik hat PHP ne MSSQL-Schnittstelle) dürfte das kein Problem sein. Man muss ja nicht gleich mit Kanonen auf Spatzen schießen. :P
Einziges Manko wäre jetzt noch, dass du null Plan von PHP hast. Aber wenn du schon keinen Schimmer von Web-Services hast, nimmt sich das nicht viel. :P
Oder du verwendest das Beispiel von Elvis.

DeddyH 19. Jul 2007 07:40

Re: Webservice programmieren - wie?
 
Ich würde dafür auch zu PHP (oder Perl, Ruby etc.) tendieren.
Vorteile:
- nicht an M$-Plattformen gebunden
- von jedem Rechner mit Browser und HTTP-Zugriff auf den Server aufzurufen
- PHP ist recht einfach zu erlernen und unterstützt ab der Version 5 auch die OOP (alles vorher waren eher Krückenlösungen)
- Du kannst auf die PHP-VCL zurückgreifen

Elvis 19. Jul 2007 07:53

Re: Webservice programmieren - wie?
 
Zitat:

Zitat von DeddyH
Vorteile:
- nicht an M$-Plattformen gebunden
- von jedem Rechner mit Browser und HTTP-Zugriff auf den Server aufzurufen

Was ich oben geschrieben habe funktioniert auch mit einem Apache unter Linux, einfach "IIS" mit "Apache" ersetzen.
Du hast die Nachteile vergessen:
  • nicht statisch kompilierbar
  • signifikant langsamer
  • ziemlich hässlich, verglichen mit Hochglanzsprachen wie C# oder Chrome. (Ruby ist nicht ganz so hässlich, aber PHP ist ein effizientes Brechmittel)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz