Delphi MVC Framework. Mathias Pannier

Ähnliche Dokumente
XE IDE Cloud Web. secure Data Agile. RAD Studio XE was gibt es Neues in Delphi? Daniel Magin Delphi Experts. Daniel Wolf Delphi-Praxis

Webbasierte Exploration von großen 3D-Stadtmodellen mit dem 3DCityDB Webclient

ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC. - Björn Wilmsmann -

Wir bringen Ihre Notes/Domino Anwendungen sicher ins Web , Bilster Berg Drive Resort Michael Steinhoff, agentbase AG.

The app the crashes, before the breakpoint is reached: Code to the event:

Java - Webapplikationen

NEWpixi* API und die Umstellung auf REST. Freitag, 3. Mai 13

Performance Tuning

SemTalk Services. SemTalk UserMeeting

Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen. KNF Kongre 2001 Henning P. Schmiedehausen

Cross Platform Development mit SharePoint

APEX URLs Suchmaschienen- und Benutzerfreundlich

Einstieg Projektziel Proxy Grundlagen Demonstration Ausblick. Reverse Proxys. Robert Hilbrich. Fakultät für Informatik Humboldt Universität Berlin

Grails. Weiterführende Themen zu Internet- und WWW-Technologien. Matthias Springer. 06. Juni 2011

SEARCH DRIVEN APPLICATIONS MIT DEM CONTENT SEARCH WEBPART

Pylons & ExtJS. PyCologne Vortrag Köln, smart:elligence Unternehmensberatung, Düsseldorf

Django - ein Python Web-Framework

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Dirk von der Weiden, Olaf Meyer C1 SetCon. REST in the Enterprise

AJAX Implementierung mit Joomla!

Varnish + TYPO3. CH-TUG Varnish + TYPO3

Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK

Wolkig bis heiter. Andreas Wismann WHEN OTHERS. APEX als Drehkreuz für Web Service-Anwendungen

RESTful Web. Representational State Transfer

OAuth 2.0. Ralf Hoffmann 03 /

Mojolicious. Ich zeige dir jetzt, wie du mit Mojolicious eine Vorlage. Das Mojolicious-Gerüst

Was ist Windows Azure? (Stand Juni 2012)

Skalierbare Webanwendungen mit Python und Google App Engine

APEX Datenverwaltung Wo sind die Daten gerade? Dr. Gudrun Pabst

Objekt-relationales Mapping und Performance-Tuning

Agenda. Einleitung. Einbinden von JSF AJAX Beispiele Komponenten Entwicklung PrimeFaces Praktikum. Was ist JSF Aufbau und Techniken HTML vs.

Isabel Arnold CICS Technical Sales Germany z/os Explorer IBM Corporation

Web APIs auf dem Prüfstand Volle Kontrolle oder fertig mit den Azure Mobile Services?

GridMate The Grid Matlab Extension

Lehrplan: Architektur und Design. paluno

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de (c) Michael Behrendt -

Dokumentation REST API Installation

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

<Insert Picture Here> Application Express: Stand der Dinge und Ausblick auf Version 5.0

Application Note. Anbindung von Kunden-Software an SpiderControl Web Visualisierung

Oliver Zeigermann, Stefan Toth embarc GmbH. Flux Facebooks Beitrag zur UI- Architektur der Zukunft

ODS 6.0 Schnittstelle

Webdeployment 2.0 Webanwendungen komfortabel bereitstellen, aus Hoster und Kundensicht.

HFT App. Prof. Dr. Gerhard Wanner Michael Kolb B.Sc. Sonntag, 26. Mai 13

PHP & Windows. Jan Burkl System Engineer, Zend Technologies. All rights reserved. Zend Technologies, Inc.

REST Grundlagen. Seminar Aktuelle Software-Engineering-Praktiken für das World Wide Web. Olga Liskin

Anleitung REST API Schneelast-Messsystem SMS

THEMA: SAS STORED PROCESSES ALS WEB-/REST-SERVICE AUFRUFEN" BRUNO MÜLLER

Creating OpenSocial Gadgets. Bastian Hofmann

WCF Services in InfoPath 2010 nutzen

Moderne Benutzeroberflächen für SAP Anwendungen

EPOKO.net. Frank Schwichtenberg. SourceTalk 2009 Göttingen,

NoSQL mit Postgres 15. Juni 2015

Application Frameworks

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010

Einführung in CouchDB

Ora Education GmbH. Lehrgang: Oracle Application Server 10g R2: Administration II

MOC Entwicklung von ASP.NET MVC 4 Webapplikationen

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Elasticsearch und die Oracle Datenbank

Sicherheit von Webapplikationen Sichere Web-Anwendungen

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Zend Framework MVC Applikationen testen

Die Alternative zum Web-Form Modell

ASP.NET Grundlagen. Was ist ASP.NET

WildFly Application Server Administration

OpenVMS und OpenSource Ein Widerspruch? peter ranisch

Einführung mobile Entwicklungsplattform Neptune Application Designer Fink IT-Solutions Christian Fink, Andreas Hofmann

Inheritance Strategien mit dem Entity Framework

ColdFusion 8 PDF-Integration

Microsoft Dynamics NAV 2013 SOAP und OData Webservices mit.net nutzen Dipl.-Inf. (FH) Ingo Jansen

Web 2. Gang. Python User Group Köln Christopher Arndt

Internetanbindung von Datenbanken

Theorie und Praxis einer JSON-RPC-basierten Web-API

Darstellung komplexer 3D-Stadtmodelle im (mobilen) Webbrowser mittels bildbasiertem Rendering

Wählen Sie das MySQL Symbol und erstellen Sie eine Datenbank und einen dazugehörigen User.

Web Services Einsatzmöglichkeiten für das Information Retrieval im WWW

Microsoft.NET XML-Webdienste Schritt für Schritt

Portal for ArcGIS - Eine Einführung

Dokumentation: Content App Framework

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

HERZLICH WILLKOMMEN SHAREPOINT 2013 DEEP DIVE - APPS IOZ AG 1

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

Suchen und Finden mit Lucene und Solr. Florian Hopf

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Website-Suche mit OpenText Web Site Management. Frank Steffen - Senior Product Manager

Was ist ein Web Service?

What s New? Skype for Business. Dirk THORMANN

Hands-on für UI5-Anwendung auf HANA

Aktuelle Technologien zur Entwicklung verteilter Anwendungen RESTful Web Services mit JAX-RS

+++ Bitte nutzen Sie die integrierte Audio-Funktion von WebEx (Menü Audio -> Integrated Voice Conference -> Start auswählen), um uns zu hören!!!.

Softwareentwicklung in der industriellen Praxis

Architektur des agimatec-validation Frameworks

Extracting Business Rules from PL/SQL-Code

Transkript:

Delphi MVC Framework Mathias Pannier

Über mich Name: Mathias Pannier Position: Softwareentwickler/Teamleiter Mehr als 15 Jahre Erfahrung mit Softwareentwicklung in Delphi Blog:

DMVCFramework Delphi MVC Framework -is a powerful framework for web solution in Delphi(Quelle: https://code.google.com/p/delphimvcframework/) Delphi Units für die Entwicklung von Web Diensten (REST Server/Clients) Website: https://github.com/danieleteti/delphimvcframework Supportsite: https://www.facebook.com/groups/delphimvcframework

DMVCFramework Hauptentwickler und Initiator ist Daniele Teti (http://www.danieleteti.it- Autor von Delphi Cookbook) Im Delphi Cookbookgibt es einige Abschnitte über das DMVCFramework Derzeit 4 Entwickler Erster Stand in einem öffentlichen Repository vom 29.10.2013 Letztes update vor ein paar Tagen (Januar 2016) läuft ab Delphi XE3 aufwärts

Features Simple to use (really) RESTful (RMM Level 3) compliant Fancy URL with parameter mappings** Specialized renders to generate text, html, json** Powerful mapper to map jsonto objects and datasets to objects** Can be packaged as stand alone server, apache module (XE6 or better) and ISAPI dll

Features Integrated RESTClient Messaging extension using STOMP Load balancing and cache using REDIS It use Embarcadero WebBrokerbut is not tied to it Designed with services and web client app in mind Server side generated pages using Mustache (in the past elua) Uvm. Quelle: https://github.com/danieleteti/delphimvcframeworkund https://github.com/danieleteti/delphimvcframework/blob/master/docs/itdevco N%202013%20-%20Introduction%20to%20DelphiMVCFramework.pdf

REST RepresentationalState Transfer bezeichnet ein Programmierparadigma für verteilte Systeme, insbesondere für Webservices... REST hat das Ziel einen Architekturstil zu schaffen, der besser die Anforderungen des modernen Web darstellt Prinzipien: Client-Server, Zustandslosigkeit, (HTTP) Caching, einheitliche Schnittstelle (URL, HTTP Verben, JSON, HATEOAS Navigation über URLs), mehrschichtige Systeme Quelle: https://de.wikipedia.org/wiki/representational_state_transfer

Architektur eine Anwendung (EXE oder ISAPI DLL) mehrere Controller (TMVCController) mehrere Aktionen pro Controller (Methoden) Controller, Aktionen und deren Parameter sind Bestandteil der URL die aufgerufen wird www.myserver.com/blog/posts/123

1. Beispiel - Delphi WebBroker Anwendung (ISAPI/EXE) type TWebModule1 = class(twebmodule) procedure WebModuleCreate(Sender: TObject); private DMVC: TMVCEngine; end; proceduretwebmodule1.webmodulecreate(sender: TObject); begin DMVC := TMVCEngine.Create(self); DMVC.AddController(TBlogController); end;

1. Beispiel Der Controller type [MVCPath('/blog')] TBlogController = class(tmvccontroller) public [MVCPath('/posts/($id)')] procedure GetPostByID(CTX: TWebContext); end; implementation procedure TBlogController.GetPostByID(CTX: TWebContext); var ablogpost: TBlogPost; begin ablogpost := LoadFromDataBaseByID(CTX.Request.Parameters['id'].ToInteger); Render(aBlogPost); end;

Parameter CTX.Request.Params['id'] URL Parameter Query String Parameter Form Parameter (HTML Form Submit) Cookie Felder Bsp.: www.myserver.com/blog/posts/123 www.myserver.com/blog/posts?id=123

Renderer Methoden des Controllers um den Response (Stream) zu produzieren Siesetzenden HTTP Status Code und den Content Type Verfügbare Renderer Text, DataSets, JSONValues, Delphi Objects, List of Delphi Objects, Exceptions, HTML pages using Mustache, Raw Streams

Renderer Beispiel procedure TBlogController.GetPostByID(CTX: TWebContext); var ablogpost: TBlogPost; begin ablogpost := TBlogPost.Create; ablogpost.id := CTX.Request.Parameters['id'].ToInteger; ablogpost.title := 'Hallo Welt'; ablogpost.body := 'Dies ist ein Test'; ablogpost.createdate := Now(); ablogpost.author := 'Mathias Pannier'; Render(aBlogPost); end; procedure TBlogController.GetPostByID(CTX: TWebContext); begin DataSet1.SelectSQL.Add('select * from BLOG_POSTS where ID = :ID'); DataSet1.Params[0].AsInteger := CTX.Request.Parameters['id'].ToInteger; DataSet1.Open; Render(DataSet1); end;

Mapper "Konverter" für Delphi Objekte, JSon und DataSets Bsp.: ObjectToJSONObject JSONObjectToObject DataSetToJSONArray JSONArrayToDataSet... Können auch unabhängig vom Web - Framework verwendet werden

Mapper Beispiel procedure TForm1.Button1Click(Sender: TObject); var ablogpost: TBlogPost; begin ablogpost := TBlogPost.Create; ablogpost.id := 1; ablogpost.title := 'Hallo Welt'; ablogpost.body := 'Dies ist ein Test'; ablogpost.createdate := Now(); ablogpost.author := 'Mathias Pannier'; ShowMessage(Mapper.ObjectToJSONObjectString(aBlogPost)); ablogpost.free; end;

Demo

Alternativen von Hand mit den Indy Komponenten DataSnap(Embarcadero; in Delphi integriert) mormot Framework TMS XData kbmmw RemObjects Usw.

Warum DMVC Leichtgewichtig, Klein, Schnell Einfach zu benutzen OpenSource "näher dran" an REST/Webentwicklung/HTTP Mapper/Renderer unabhängig nutzbar Performance und Stabilität von DataSnap... (https://robertocschneiders.wordpress.com/2012/11/22/datasnapanalysis-based-on-speed-stability-tests/)

Fragen?