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: code.google.com/p/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ší.


Nabízíme Delphi školení na různá témata, primárně ve Vaší firmě.

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

Partial English version.

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 nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

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.

Anketa

Poslední komentáře

Comment RSS