Delphi MVC framework je nyní open source

vložil Radek Červinka 20. února 2014 23:04

Daniele Teti (pracuje myslím pro italské zastoupení EMBT) otevřel svůj MVC framework pro Delphi (primárně pro webové řešení) a musím uznat, že to má něco do sebe.

Domovská stránka: github.com/danieleteti/delphimvcframework.

Vlastnosti:

  • RESTful (RMM Level 3) compliant
  • Server side generované stránky za použití eLua (Embedded Lua)
  • Messaging extension using STOMP (to nevím co je)
  • možnost load balance via memcached (memcached.org)
  • Fancy URL s mapováním parametrů
  • Integravaný RESTClient
  • pro XE4 and XE5 (testováno, ale mělo by fungovat v XE3 nebo XE2)
  • Experimental podpora pro IOCP

Ukázka:

unit RenderSampleControllerU;

interface

uses
MVCFramework, MVCFramework.Commons, ObjectsMappers;

type

[MVCPath('/')]
TRenderSampleController = class(TMVCController)
public
  [MVCHTTPMethod([httpGet])]
  [MVCPath('/customers/($id).html')]
  [MVCConsumes('text/html')]
  [MVCProduces('text/html', 'UTF-8')]
  procedure GetPerson_AsText(CTX: TWebContext);

  [MVCHTTPMethod([httpGet])]
  [MVCPath('/customers')]
  [MVCProduces('application/json')]
  procedure GetCustomers_AsDataSet(CTX: TWebContext);

  [MVCHTTPMethod([httpGet])]
  [MVCPath('/customers/($id)')]
  [MVCProduces('application/json')]
  procedure GetCustomerByID_AsTObject(CTX: TWebContext);

  [MVCHTTPMethod([httpGet])]
  [MVCPath('/customers.json')]
  [MVCProduces('application/json')]
  procedure GetPersonJSON(CTX: TWebContext);
end;


implementation

uses
System.SysUtils, BusinessObjectsU, Data.DBXJSON, WebModuleU;

{ TRoutingSampleController }

procedure TRenderSampleController.GetCustomerByID_AsTObject(CTX: TWebContext);
var
Cust: TCustomer;
begin
if CTX.Request.ParamsAsInteger['id'] = 7 then
  Render(404, 'Customer Not Found')
else
  begin
   Cust := TCustomer.Create;
   Cust.Name := 'Daniele Teti Inc.';
   Cust.ContactFirst := 'Daniele';
   Cust.ContactLast := 'Teti';
   Cust.AddressLine1 := 'Rome Street 12';
   Cust.AddressLine2 := '00100';
   Cust.City := 'ROME';
   Render(Cust);
  end;
end;

procedure TRenderSampleController.GetCustomers_AsDataSet(CTX: TWebContext);
var
  wm: TWebModule1;
begin
  wm := GetCurrentWebModule as TWebModule1;
  wm.qryCustomers.Open;
  Render(wm.qryCustomers);
end;
procedure TRenderSampleController.GetPerson_AsText(CTX: TWebContext);
begin
  ResponseStream.
  Append('<html><body><ul>').
  Append('<li>FirstName: Daniele</li>').
  Append('<li>LastName: Teti</li>').
  AppendFormat('<li>DOB: %s</li>', [ISODateToString(EncodeDate(1975, 5, 2))]).
  Append('<li>Married: yes</li>').
  Append('</ul></body></html>');
  Render;
end;

procedure TRenderSampleController.GetPersonJSON(CTX: TWebContext);
var
  P: TJSONObject;
begin
  P := TJSONObject.Create;
  P.AddPair('FirstName', 'Daniele');
  P.AddPair('LastName', 'Teti');
  P.AddPair('DOB', ISODateToString(EncodeDate(1975, 5, 2)));
  P.AddPair('Married', TJSONTrue.Create);
  Render(P);
end;

end.

Interně je to primárně určeno pro WebBroker z Delphi, tj. možnost použití jako ISAPI, CGI, služba atd. Evidentně se pěkně využívá nových RTTI. Zkusím se dokopat v tom něco napsat, protože to vypadá opravdu zajímavě a tak nějak jsem si to dříve představoval.

Není to jediný MVC framework (např. Delphi On Rails), ale přijde mi nejprogresivnější.

Tagy: ,

Novinky

Komentáře

24.2.2014 13:04:39 #

Zdeněk Vašků

Pěkné.

Zdeněk Vašků

25.2.2014 0:10:47 #

Daniel Andraščík

A musim povedat ze aj jeho DORM (http://code.google.com/p/delphi-orm/) ma nieco do sebe. Pouzival som aj komercny TMS Aurelius s mnohymi vychitavkami az je mozno trosku prekombinovany a potom nasledne obmedzujuci. Momentalne z dormom robim zatial len prve pokusy ale musim uznat ze ma nieco do seba

Daniel Andraščík

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců