What are the current choices for Delphi Web & Web Service Development
Asked Answered
A

9

16

I'm toying around with Delphi. Most of my desktop development is done in .Net, and embedded systems with C. I've done some web development in RoR & Python (Django, CherryPy) I am interested in taking a crack at a project that would be a web service (REST or SOAP) with a native client and a web client.

Because I've recently been re-inspired to learn Delphi, I'm curious what the options are to build the web service and web client with Delphi. Most of the Delphi documentation is a little dated but so far I've found these choices:

  • DataSnap
  • WebSnap
  • WebBroker
  • IntraWeb
  • Data Abstract and RemObjects SDK from RemObjects

I get the impression that WebSnap is dead, but the other technologies are still being developed. Is there any guidance about which technology to investigate?

p.s. I realize that Delphi isn't a wildly popular choice for web development, but I'm curious to try since I've been having fun learning the VCL.

Argosy answered 4/12, 2010 at 21:10 Comment(6)
DataSnap and Data Abstract are data access frameworks rather than web development frameworks. You could use them inside an Intraweb, WebBroker or WebSnap application but they don't give you web specific features as such.Lip
Am I correct in thinking that DataSnap and/or DataAbstract would be capable of building a web service though? It appeared that DataSnap was advertised as a framework for building REST services, but perhaps I misunderstood. If so, it seems like those would fill the service side of my project.Argosy
similar question: #3793612Ormiston
@mjustin: yes, I read that question first, but it didn't directly address DataSnap, WebBroker, WebSnap (though Intraweb was discussed). It seemed to focus around classic web frameworks rather than web service with multiple clients.Argosy
DataSnap and RemObjects SDK both offer remoting. Data Abstract includes the RemObjects SDK as part of it so yes, it does web services too.Lip
If you want to use the same desktop visual programming aprouch, you could check UniGUI. It's the best RIA framework for Delphi, by far!Matta
A
5

RESTful server side method calls hosted as an ISAPI dll or just use the Indy HTTP Server component. It's really a quite simple and powerful approach and lets you get started quickly without a big learning curve.

Adman answered 6/12, 2010 at 4:1 Comment(7)
I also like this approach. It is simple, yet flexible and does not have a lot of abstraction layers. In many cases it is just enough.Diaphony
I meant the ISAPI approach. You can that event use Indy HTTP to host the ISAPI or just use Apache or IIS.Diaphony
... but you'll have to code all RESTful mechanism by hand, i.e. making all XML/JSON generation/parsing, because Indy HTTP server goal is to serves HTTP pages. It sounds better to me to rely on a higher level framework, based on Indy if you want.Vanda
This a great tip, even if I leverage a higher level framework eventually I think this is a great way to understand and get comfortable with the mechanics. Kind of like learning to use Java servlets before getting into a big framework.Argosy
I was holding back from posting a link to xxm.sf.net because the question specifically refers to WebServices and a framework, but if RESTful is an option, check out xxm because it has a good auto-compile in InternetExplorer, and a good auto-update in IIS. (And the same output library can be run with Apache or CGI or 'plain HTTP')Hypha
You can store your objects as XML or as a custom binary stream and then return that stream as results with a content-type set to your object type (and version)... it's pretty cool.Adman
@Stijin: Sorry about that, I meant web services in a generic sense (REST or SOAP). Thanks for the link, I think your comment would be worth it's own answer.Argosy
V
7

You could perhaps add our Synopse SQLite3 Framework to your list.

There is some interresting features:

  • ORM approach to manage your data (i.e. define and access your data as regular Delphi classes), on both Server and Client Side - similar to ActiveRecord in RoR ;) ;
  • Multi-tier architectured;
  • no database or dll to deploy (uses embedded SQLite, without any external dll) - you can even not use SQLite, but a simple and fast in-memory database written in pure Delphi (I've begun a fork of Zeos, to be database independent);
  • Very optimized HTTP/1.1 multi-threaded Server (but you can communicate via other protocols, or even purely locally within the same process, without any Client/Server);
  • Data transmission uses standard JSON, so you can receive the same data in either a Delphi client, either an AJAX client;
  • Client/Server is RESTful and written in very optimized Delphi code (some part were even written in asm after profiling, for speed and low memory use);
  • Can also be used to define DataSnap-like Client-Server JSON RESTful Services, if the RESTful approach is not enough for you;
  • Full Open Source, compiles and work from Delphi 6 up to XE (with full Unicode support for all versions, because it's based on UTF-8 from the engine core).
Vanda answered 6/12, 2010 at 7:7 Comment(2)
I will definitely look at this. Thanks for pointing it out, it's another framework that I hadn't heard of.Argosy
Update: a lot of work since this time. You can define services via interfaces. And you can use any DB layers (MS SQL, Oracle, OleDB). See mormot.net - it has changed its name to mORMot, since it it is not limited to SQLite3 now.Vanda
O
6

Web Service Toolkit is a web services package for FPC, Lazarus and Delphi; “Web Service Toolkit” is meant to ease web services consumption and creation by FPC, Lazarus and Delphi users. Better check out from svn as the 0.5 release is actualy outdated.

Ormiston answered 5/12, 2010 at 9:0 Comment(0)
A
5

RESTful server side method calls hosted as an ISAPI dll or just use the Indy HTTP Server component. It's really a quite simple and powerful approach and lets you get started quickly without a big learning curve.

Adman answered 6/12, 2010 at 4:1 Comment(7)
I also like this approach. It is simple, yet flexible and does not have a lot of abstraction layers. In many cases it is just enough.Diaphony
I meant the ISAPI approach. You can that event use Indy HTTP to host the ISAPI or just use Apache or IIS.Diaphony
... but you'll have to code all RESTful mechanism by hand, i.e. making all XML/JSON generation/parsing, because Indy HTTP server goal is to serves HTTP pages. It sounds better to me to rely on a higher level framework, based on Indy if you want.Vanda
This a great tip, even if I leverage a higher level framework eventually I think this is a great way to understand and get comfortable with the mechanics. Kind of like learning to use Java servlets before getting into a big framework.Argosy
I was holding back from posting a link to xxm.sf.net because the question specifically refers to WebServices and a framework, but if RESTful is an option, check out xxm because it has a good auto-compile in InternetExplorer, and a good auto-update in IIS. (And the same output library can be run with Apache or CGI or 'plain HTTP')Hypha
You can store your objects as XML or as a custom binary stream and then return that stream as results with a content-type set to your object type (and version)... it's pretty cool.Adman
@Stijin: Sorry about that, I meant web services in a generic sense (REST or SOAP). Thanks for the link, I think your comment would be worth it's own answer.Argosy
P
5

DelphiMVCFramework is a powerful RESTful framework used also for website development https://github.com/danieleteti/delphimvcframework

DMVCFramework features

  • RESTful (RMM Level 3) compliant
  • Fancy URL with parameter mappings
  • Server side generated pages using Mustache templates
  • Messaging extension using STOMP and Apache ActiveMQ or Apache Apollo (beta)
  • Can be used in load balanced environment using Redis or MySQL as state server
  • Integrated RESTClient
  • Works with DelphiXE3 or better
  • Integrated Logging System
  • It is really simple to use. You can be productive in minutes!

Here's the DMVCFramework Developers Guide https://danieleteti.gitbooks.io/delphimvcframework/content/

If you need support, there is the official facebook group with more than 600 users https://www.facebook.com/groups/delphimvcframework/

I'm the main developer but there are more than 6 active contributors.

Papillote answered 14/11, 2013 at 23:30 Comment(0)
L
3

WebHub is another well established, though lesser known third party Delphi web framework.

Lip answered 4/12, 2010 at 22:1 Comment(0)
D
3

Couple other choices that can be used to build a webservices server, somewhat simlar to datasnap or remobjects/dataabstract, are below. I did some work years ago with kbmMW and it's a solid library. I think both kbmMW and RealThinCLient have free and/or open source versions:

RealThinClient

kbmMW

Duelist answered 5/12, 2010 at 0:58 Comment(0)
N
2

We have a web front end for our Delphi server app written in Delphi Prism/ASP.NET. It works great and allows us to leverage our Delphi language skills in a .NET environment.

Notional answered 4/12, 2010 at 21:40 Comment(3)
Thanks for the suggestion. Is your Delphi server app written in native Win32 Delphi with a just an ASP.Net frontend or is the whole thing a Prism project?Argosy
We use DataAbstract from RemObjects (dataabstract.com). It allows us to write the server in native Delphi code and connect to it using virtually any method we choose. Their framework automatically generates all the interface classes for your server and you simply call the methods it exposes.Notional
Ah, excellent. I didn't know about DataAbstract. I will check that out!Argosy
T
1

This one is very old,but a lot of things have changed,I myself had left Intraweb and gone to UNIGUI,since its based on EXTJS and produces single page applications.

Trev answered 29/6, 2016 at 0:42 Comment(0)
T
1

Well Its been two years since I left my last message on this posts, although uniGUI is still the only solution already made for creating SPA in Delphi,it seems that IW17 will be a real cutting edge,an waters divisor in the history of Delphi.Client side rendering without needing server communication,Wordpress integration,no need to write a single line in javascript like other frameworks,websockets,fibers,our "Delphi React".

Tangle answered 2/4, 2018 at 17:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.