Autor Beitrag
jehama
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 30.04.12 11:05 
Crosspost...

www.delphipraxis.net/1164230-post9.html

Hallo zusammen,

ich würde gerne dieses Thema nochmal aufgreifen. Ich habe mir das kürzlich mögliche Angebot Upgrade Delphi XE2 auf RAD Studio XE2 gekauft.
Folgende Gründe haben mich zu dieser Entscheidung gebracht:

- Möglichkeit PhP und Prism

Ich würde mich gerne in diese Programmierungen einarbeiten (Interesse und siehe unten).

Allerdings bin ich mir aktuell noch nicht ganz sicher, was das richtige Produkt ist. Mein Ziel ist es, eine vorhanden Windowsanwendung mit einem Zusätzlichen WebClient zu versehen.

Soll heißen, ich möchte meine Server/Client Anwendung basierent auf den Server/Client Socket Komponeten um ein nützliches Webtool erweitern. Leider kenn ich aktuell weder Prism noch RADPhP und zum Thema Tutorial oder Dokumentation bin ich bislang auch nicht erfolgreich auf die Suche gegangen. Ich weiß es gibt die RADPhp Doku und die Oxygene Homepage. Allerdings als Anfänger sehr umfangreich. Daher würde mich interessieren:

- Gibt es gute Tutorials für Einsteiger?
- Gibt es gute Bücher?
- Und welche der beiden Sprachen wäre hier am nützlichsten?

Vorab vielen Dank und Gruß Jens


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 30.04.2012 um 11:18
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 30.04.12 11:37 
Hallo und :welcome:

Für den Client an sich kannst du beides nicht verwenden, da du dort (X)HTML, JavaScript usw. brauchst. Auf Serverseite kannst du aber beides nutzen um die Webseiten zu generieren.

Aus meinen Erfahrungen mit PHP würde ich eher zu ASP.NET tendieren, allerdings brauchst du dann auch einen Windows-Server. Wenn du den wiederum zur Verfügung hast, gäbe es auch noch DataSnap als Möglichkeit, vorausgesetzt du hast die Enterprise Version oder höher vom RAD Studio. DataSnap kennen ab der Enterprise sowohl Delphi und der C++ Builder als auch RAD PHP und Prism und bieten so die Möglichkeit der Multi-Tier Entwicklung mit mehreren Tools.

Wenn du bereits eine Serveranwendung hast, könnte die auch via DataSnap einfach den WebClient zur Verfügung stellen. ;-)
jehama Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 30.04.12 11:54 
Also im Besitz bin ich von einer RAD Studio XE2 Professional. Der vorhanden Server ist Windowsbasierent und die Server Client Anwendung baut auf den Server Socket Komponenten auf. Ich möchte lediglich Daten vom Server abfragen können. Die Daten könnten durch die Windows Anwendung direkt oder aus einer Firebird Datenbank zur Verfügung gestellt werden. Es wäre natürlich auch die Variante einer SQL Server Datenbank (SQL Express oder ähnlich) denkbar, da die Datenbank aktuell noch nicht eingebunden ist. Daher könnte ich mir z.B. eine ASP.NET Anwendung gut vorstellen.

Dann wäre mein gedanklicher Weg.

- Windowsanwendung mit SQL-Server Express und Datenbankanbindung zum lesen und schreiben.
- ASP.NET Anwendung mit PRISM erstellen und auf die Daten aus der Datenbank zugfreifen und schreiben.

Die Problematik bei dem Weg über die Datenbank ist allerdings, das ich über die WIN Anwendung, Steuerungen auf einer Hardware ausführe. Würde ich den WebClient direkt auf die Datenbank zugreifen lassen und zum Beispiel einen Steuerbefehl setzen, müsste ich die WIN Anwndung über eine Art Polling, kontinuierlich den Steuerstatus abfragen lassen und ggf. auf vorhanden Befehle dan reagieren. Das Problem ist, das ich nicht genau weiß wie ich den gesamten Vorgang beschreiben soll.

Gruß Jens
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 30.04.12 12:09 
Das hört sich für mich so an als würdest du weder mit ASP noch mit PHP viel anfangen können, insbesondere, da du das erst lernen müsstest.

Sinnvoller dürfte hier tatsächlich ein Webserver sein, der durch die Serveranwendung zur Verfügung gestellt wird. Das geht ja auch ohne DataSnap, wenn auch deutlich weniger komfortabel. Aber vielleicht gibt es da neben oder zusätzlich zu Indy ja andere 3rd-Party Komponenten. Was genau in der Professional bezüglich ISAPI (zur Einbindung in den Apache z.B.), Webservern usw. dabei ist weiß ich nicht.

Aus Sicherheitsgründen kann es natürlich auch sinnvoll sein, wenn der Webserver vom restlichen Server getrennt wird und selbst über Sockets kommuniziert wie deine bisherigen Clients.

Wenn du mal unter Datei --> Neu in Delphi schaust, kannst du ja mal schauen, ob du da etwas von WebServices, WebBroker oder ähnliches findest.
jehama Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 30.04.12 13:21 
jaenicke hat folgendes geschrieben:
Das hört sich für mich so an als würdest du weder mit ASP noch mit PHP viel anfangen können, insbesondere, da du das erst lernen müsstest.


Im Grunde hast Du recht. Ich habe mal ein bißchen mit VisualWebDeveloper und ASP.NET experimentiert. So kleine Homepage geschrieben, aber halt nix wildes.

jaenicke hat folgendes geschrieben:

Wenn du mal unter Datei --> Neu in Delphi schaust, kannst du ja mal schauen, ob du da etwas von WebServices, WebBroker oder ähnliches findest.


Hier besteht die Möglichkeit: IntraWeb-Anwendungen, WebServices, WebBroker und WebSnap.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 30.04.12 13:57 
user profile iconjehama hat folgendes geschrieben Zum zitierten Posting springen:
Hier besteht die Möglichkeit: IntraWeb-Anwendungen, WebServices, WebBroker und WebSnap.
Dann schau dir die letzten beiden einfach mal an. Ich denke, dass du mit einer WebSnap Anwendung z.B. sehr gute Möglichkeiten hättest. ;-)
jehama Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 30.04.12 14:38 
jaenicke hat folgendes geschrieben:
Ich denke, dass du mit einer WebSnap Anwendung z.B. sehr gute Möglichkeiten hättest.


Kennst Du dazu vieleicht ein gutes deutschsprachiges Buch oder Tutorial?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 30.04.12 15:21 
Bücher und Tutorials im eigentlichen Sinne nicht, aber wie wäre es, wenn du erst einmal in die Hilfe schaust? :zwinker:
docwiki.embarcadero....t_WebSnap_entwickeln
Die ist sogar auf deutsch. (Auch wenn ich finde, dass sie ihre Ressourcen besser zur Ergänzung der Hilfe statt für Übersetzungen verwenden sollten... :roll:) Aber es gibt ja immer noch ein paar wenige, die Software entwickeln und kein/schlecht Englisch können. :P
jehama Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 30.04.12 15:38 
jeanicke hat folgendes geschrieben:
Aber es gibt ja immer noch ein paar wenige, die Software entwickeln und kein/schlecht Englisch können.
:roll: :oops:

Ich bin leider einer von diesen. Ich kann zwar relativ mittelmäßiges Englisch, finde es jedoch dadurch einfacher was auf Deutsch zu lesen, was ich umgehend verstehe und nicht erst anfangen muss bie gewissen Sätzen, Wörtern zu suchen..

Trotzedem erstmal danke...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 30.04.12 16:12 
user profile iconjehama hat folgendes geschrieben Zum zitierten Posting springen:
Ich bin leider einer von diesen.
Ich weiß (aus der DP :D), war auch nicht ganz ernst gemeint. :zwinker:
jehama Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 30.04.12 20:31 
docwiki.embarcadero....o_World%22_erstellen

Ich habe in diesem Teil der Dokumentation den Hinweis gefunden, das man WebSnap nicht mehr verwenden sollte, sondern IntraWeb. Kann mir da jemand was zu sagen. Sollte man dann vieleicht eher doch IntraWeb verwenden?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 30.04.12 20:41 
So genau kenne ich das alles nicht, da ich mit DataSnap arbeite, aber bei IntraWeb schien mir immer die graphische Oberfläche im Vordergrund zu stehen. Dass es auch als Ersatz für WebSnap dienen soll, wusste ich nicht.

Das Sinnvollste dürfte sein einfach mal mit allen diesen Technologien kleine Tests zu machen und zu schauen was die so machen. Da es dasteht, dass WebSnap nicht mehr benutzt werden sollte, kannst du das dann wohl ausklammern, ohne Grund steht das sicher nicht da. ;-)
jehama Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Di 01.05.12 22:08 
Was mich Grundsätzlich interesieren würde,
wie würdet Ihr das lösen.Als Zieleingränzung
sollte ich vieleicht noch erwähnen, das auf
den Clientrechnern außer einem IE nichts
installiert ist. Es gibt auch keine Setup
Möglichkeit. Was bedeutet: Es muss in jedemfall
über den IE mit einem Webserver funktionieren.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 01.05.12 23:34 
Ich merke schon, von selbst ausprobieren hältst du nicht viel. ;-)
Ich kannte das ja auch nicht, aber ich habe einfach mal eine WebBroker-Anwendung erstellt und um eine Anfrage bei Google via IdHttp erweitert, siehe Anhang...
Wobei man schon an den AnsiStrings merkt, dass WebBroker wohl nicht ganz auf der Höhe ist was die Technik angeht.

Im Grunde läuft es aber immer so wie im Beispiel. Du erzeugst den Seiteninhalt, lieferst dazu ggf. auch die Bilder und Skripte usw. aus und das wird dann im Browser angezeigt.

Und wenn du eine VCL for the Web Anwendung erzeugst, hast du auch gleich eine visuelle Oberfläche mit dabei. Einfach mal ein paar TIW* Komponenten auf die Oberfläche, ausführen, im Browser öffnen, funktioniert. Dann noch ein kurzer Test mit MouseDown, funktioniert auch:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TIWForm1.IWEdit1AsyncMouseDown(Sender: TObject; EventParams: TStringList);
begin
  IWEdit1.Text := 'Test';
end;
Wobei ich die Umsetzung durchaus interessant finde. Das muss ich mir mal anschauen was da noch so alles geht. ;-)
Einloggen, um Attachments anzusehen!
jehama Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 02.05.12 10:59 
jaenicke hat folgendes geschrieben:
Ich merke schon, von selbst ausprobieren hältst du nicht viel.


FALSCH/GANZ FALSCH(Sorry, das ich das mal so deutlich sagen muss.)
Ich habe alle drei Varianten, WepSnap, WebBroker und IntraWeb getestet. Und kann mir aktuell eine Lösung mit allen drei Möglichkeiten vorstellen. Ich will auch keinen Code.

Erstens weil ich es aus Ergeiz selber machen will und zweitens weil es vom Konzept her recht schwierig ist dieses jemand externe genauer zu erläutern.

Mein Problem, ist lediglich die Bewertung der Werkzeuge und die Festlegung eines sinvollen Lösungsweg. Es ist mir bewusst, das viele Wege nach Rom führen, man kann allerdings mit ein paar Gedanken andere, eventuell den sinnvollsten Weg wählen.

Da mir aktuell noch der genaue Überblick über die mir zur Verfügung stehenden Werkzeuge fehlt, fällt mir diese Entscheidung halt schwer. Da ich das Programmieren auch nur als Hobby betreibe, ist es zeitmäßig natürlich auch schwierig, hunderte von Studen in ausprobieren zu investieren. Ich will ja gerne, viel und verschiedene Varianten testen, allerdings eine Hilfestellung in die richtige Richtung (KEIN CODE) wäre schon ganz nett.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 02.05.12 14:39 
user profile iconjehama hat folgendes geschrieben Zum zitierten Posting springen:
FALSCH/GANZ FALSCH(Sorry, das ich das mal so deutlich sagen muss.)
Ich habe alle drei Varianten, WepSnap, WebBroker und IntraWeb getestet. Und kann mir aktuell eine Lösung mit allen drei Möglichkeiten vorstellen.
Ok, dann entschuldige ich mich für die Unterstellung. Ich war davon ausgegangen, weil du nix weiter dazu geschrieben hast. ;-)

Dann könntest du ja kurz schreiben wie du dir da die Abläufe im Groben vorstellst. Denn für mich ist es ein wenig schwierig zu beurteilen welche Umsetzung für dich passend ist, da ich weder weiß was die Anwendung dem Anwender für Möglichkeiten auf der Weboberfläche bieten soll (Datenlisten, Einstellungsmasken, Grafiken, ...) noch was da intern so alles passiert (Datenbankanbindung, Hardwareansteuerungen, Statusrückmeldungen, ...). Besonders detailliert muss das ja nicht sein, aber so ein grober Überblick über die Abläufe wäre schon hilfreich.

Ich vermute mal, dass IntraWeb / VCL for the Web für dich am passendsten ist, weil du dafür nicht auch noch JavaScript / HTML benutzen musst, sondern mit Delphicode auskommst. Du hast aber dennoch eine visuelle Oberfläche ohne ActiveX oder ähnlichem Zeugs.
jehama Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 02.05.12 16:12 
Entschuldigung natürlich angenommen!!! :lol:

Ich versuche die Funktion mal kurz darzustellen:

Aktueller Stand:

TCP-Server-Anwendung basierend auf der Server.Socket Komponenten.
Der Server stellt die Anbindung an eine Hardware zur Verfügung. Diese ist über die serielle Schnittstelle mit dem PC Verbunden. Die Hardware gibt Zustände an den Server und der Server hat die Möglichkeiten Steuerungen an die Hardware zu senden.

TCP-Client-Anwendung basierend auf der Client.Socket Komponente.
Der Client baut eine Verbindung zur Server-Anwendung auf. Über ein entsprechendes Protokoll werden Daten zwischen Client und Server ausgetauscht. Hierbei ist es möglich die Zustände der Hardware abzufragen und Steuerungen an die Hardware zu senden. Die Kommunikation zwischen Hardware und PC läuft direkt über die Server-Anwendung.

Zukunft:

Es soll einen zusätzlichen Client geben, jedoch nicht mehr als Anwendung sondern gelöst als Web-Client. Am sinnigsten wäre das meiner Meinung nach über die bereits vorhandene Server-Anwendung direkt zu realisieren. Dabei stelle ich mir folgenden Ablauf vor.

Der Server baut weiterhin die Verbindung zur Hardware auf und stellt die Kommunikation zur Verfügung. Zusätzlich zu der Funktion TCP-Server, könnte die selbe Anwendung doch als Webserver fungieren. Somit könnte ich den Status der Meldungen sowie Steuerbefehle direkt an den Server senden, welche diese direkt an die Hardware schickt, bzw. Zustände der Hardware umgehend abfragen. Vorteil wäre ja, das die Kommunikation und Datenverwaltung bereits vollständig existiert und somit nur noch die Anbindung an den WebClient notwendig wäre.

Server = Zustände vorhanden = werden von WebClient nur abgefragt
WebClient möchte Steuern = sendet an Server = Server sendet an Hardware

Ich hoffe, das ich das ungefähr beschreiben konnte.

Gruß Jens
jehama Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 06.05.12 19:44 
*Push* War die Beschreibung nicht ausreichend?

Ich denke aktuell übrigens es mit IntraWeb zu versuchen...

Gruß Jens
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 06.05.12 20:49 
Oh, ich hatte den Thread irgendwie aus den Augen verloren. :oops:

Ja, ich denke für dich ist IntraWeb das einfachste, weil du im Grunde wie mit der VCL entwickeln kannst und dementsprechend die schon vorhandenen Quelltexte direkt ansteuern kannst.