Today and tomorrow I’ll be the speaker at the DAPUG event in Denmark. The title of the event is “DELPHI IN THE ENTERPRISE”. What is an enterprise application? Obviously there isn’t a measure to know if an application is enterprise or not, but the following needs usually require and enterprise level application.
Critical functionality
Large quantity of concurrently accessed data
Large number of screens
Integration with 3rd part systems
Conceptual dissonance
Complex business rules
In such scenarios wecannot just create a larger “small” application; you have to change your mindset and adopt new tools. The OO principles, designpatterns and unit tests are the first step to get success in the enterprise field (and also in all the others smaller field), but what’s next? At the DAPUG event I’ll talk about the tools and the products that can help our Delphi system to be able to play well in the enterprise field.
From this idea, these are the topics covered at the DAPUG event in Denmark:
Tuesday day 1
Real-world Linux Development with Delphi
DMVCFramework 3: RESTful services and much more
Wednesday Day 2
The amazing Redis
Analysis and searches with ElasticSearch
Using ORM in Delphi
Logging done right; How to use and extend LoggerPro
I think that the topics are really interesting, we’ll see what will think the DAPUG members after the workshop 🙂
In the last months some of the great 9 DelphiMVCFramework contributors from all over the world, have worked hard to release the version 3.0. Now it is ready to be tested!
DelphiMVCFramework is one of the most popular RESTful framework for Delphi, so any change has been accurately considered and also its impact on the current 2.x projects has been take in consideration. There are a lot of new core features that will make even more easy to work on (and with) your beloved RESTful framework. Also, all these changes will make the framework even more flexible regarding the serializators even for custom types (yes, now you can register your custom serializer for your data types). Also, JSON is no more the only “built-in” supported format. Well, now JSON is the only format, but now is really easy to add to the serializers registry a brand new serializer which serialize in XML, YAML, BSON, CSV etc. The serializers are recicled between requests to get the maximum performances.
Considering that some often-used methods have been removed or refactored, we tracked all the breacking changes in a document, so that you can evaluate the impact that the new version may have on your projects.
Here the content of the document as it is today (the latest version is available here).
DelphiMVCFramework 3.0.0 breaking changes
RenderListAsProperty has been removed from TMVCController. You can set such kind of specialized serializations in your custom base controller.
RenderJSONArrayAsProperty has been removed from TMVCController. You can set such kind of specialized serializations in your custom base controller.
Render has been removed from TMVCController (was deprecated).
Render(TJSONValue) has been removed from TMVCController (use Render(TObject)).
Trying to deserialize a TJSONNull the target instance will not be freed anymore (consistency with serialize).
Context.Request.BodyAsJSONObject dosen’t exist any more. Use BodyAs or the following pattern to migrate.
JSON := TJSONObject.ParseJSONValue(Context.Request.Body) as TJSONObject;
try
if not Assigned(JSON) then
raise EMVCException.Create('Invalid JSON');
// do something here
finally
JSON.Free;
end;
TMVCConfigKey moved to unit MVCFramework.Commons.
TMVCMimeType was renamed to TMVCMediaType.
TMVCController.Render (no parameter method) do not exist anymore. If the return is a ResponseStream, use the RenderResponseStream.
TMVCController.PushJSONToView was renamed to PushToView and Removed SystemJSON dependency, use the ToJSON method if necessary.
As you can see, the breaking changes are very few and there are very low probabilities that will require you more than 10 minutes to fix them even in a big DelphiMVCFramework 2.x project. I did it for our biggest projects, and 10 minutes are largely over-estimated.
Beta Tests
For the next weeks/months the 3.0 beta version will be available for testing. If no major bugs will be found, the 3.0 will be merged in the main branch.
To test the 3.0 beta version you have to checkout the “pluggable_mapper” branch (clone the repo if you didn’t already, and then checkout the “pluggable_mapper” branch).
You can go back to the 2.1.6 (carbon)Â when you finished the test. There is no reason to be afraid about the changes. They are really in the deep layers and should not affect the “normal” services.
Happy testing!
Community
Considering all the help requests coming from the users (and the fact that facebook is not permitted in some companies) we at bit Time Professionals (the company which lead the development of DelphiMVCFramework and other open source Delphi projects) decided to create a specific community and leave the facebook group only for announces and polls.
Some of bit Time Professionals Open Source Projects
So, if you need help about DelphiMVCFramework, LoggerPro, Delphi Redis Client, columbusegg4delphi, Delphi Event Bus, Delphi STOMP client, you can go to the bit Time Professionals Community and ask there. If you want to support the projects or you need fast responses, you can also subscribe to the “professional support” group (with a very low fee) and your requests will get priority upon the other by our engineers (which likely wrote 80% of the framework code). When possibile, the support team will send you a specific sample written specifically to show you how to solve your problem. The “professional” groups will be available soon. If you are interested about prices or other things related to the professional support, ask to professionals(at)bittime(dot)it.
Mathias Pannier did a nice talk at the 10° Delphi Meetup in Dresden, Germany. You can find his review with the slide (both in english) in his blog.
Mathias contacted me about some specific questions the audience did.
Here’s my replies.
Is it possible to have a [MapperJSONSer(‘first_name’)] attribute for DataSet fields?
Not currently. It quite simple to implement but now this feature is available only for objects using RTTI attributes. Maybe in the near future this will be extended also to dataset serialition.
Is it possible to implement a custom renderer for example for xml output?
Sure! DMVCFramework is really opened to extensions. You can implement renders for every format you like, you are not tied to the built in.
Which Delphi edition is required? Starter, Professional, Enterprise, Ultimate?
DMVCFramework requires Professional version, because WebBroker is available from that version upwards.
Did You have any performance comparison?
Yes, it is not a complete test, is just a rough test between DMVCFramework and nodejs. DMVCFramework is not running into Apache or IIS, but is using its INDY default web server so the actual performance using a real webserver are far better.
I’m planning to do more tests and as sson I’ll do them, will be published here and in the facebook group.
What about documentation?
The framework is quite intuitive, so after read this presentation (ITDevCon2013) you can go though all the samples (which covers all the features) and you will be up&running in in an hour or so.
However, some volenterous users, are starting to work on a more structured documentation. There will be a markdown generated site which will provide tutorial and devguide.
Still thank you to all the people which actively partecipating in this project.
Since when Google announced that Google Code will be closed I did start to plan the migration of all my open source projects. Now, the migration is terminated.
In the next days, I’ll add all the contributors too, so that the development can go forward as usual.
These are the projects
DelphiMVCFramework
if you are reading my Delphi Cookbook, please use this new repository instead of the old SVN one, reported in the book.
DORM, the Delphi ORM
DelphiRedisClient
DelphiDIContainer
DelphiSTOMPClient
All the repositories are available on my personal github page https://github.com/danieleteti and, as usual all contributions are welcome.
As every year, I’m building the agenda for next ITDevCon that will be held next october 23th, 24th in Milan (Italy), in a new location.
This will be the 6th edition ( we’re getting conference experts J )
The call for papers are officially open right now, so if you want to propose some speeches, I’ll be glad to see it.
As usual, for the Call4Paper I need:
Title (for every talk)
Abstract (for every talk)
Difficulty level (for every talk. Difficulty level is a scale from 1 to 3 with the following mean: introduction, intermediate, advanced)
Speaker’s photo
Speaker’s profile
I’m looking forward to your proposal. The call4papers ends at Aug 31st, 2014 but if you have *VERY* interesting topic to propose, propose it… I’ll try to arrange the schedule and fit it in the agenda.
Send your proposal to call4paper(at)itdevcon.it.
Proposals will be evaluated and the speakers will be contacted ASAP.
This year topics will be the following:
TOPICS
What’s new in the latest Delphi versions
FireMonkey platform
MacOSX development
Android development
iOS development
Windows development
Mobile development (Android+iOS)
Develop UIs for different devices (smartphones, tablets, TV, watch etc)
BaaS integrations
LiveBindings ®
Delphi best practices
Design Patterns
DataSnap
DelphiMVCFramework
Arduino e/o Raspberry Pi
Web Application with Delphi
TDD and Unit Tests
Agile methodologies
ORM and other data access patterns
Using NoSQL databases (even to speed up your VCL software)
FireDAC
UI, UX, optimization for mobile and desktop
OOD/OOP
Real use cases for extended RTTI, Generics e AnonMethods
RESTful interfaces design and development
Architectures
Target audience
Software architects
Software developers
Project managers
IT managers
Trainers
The conference web site is http://www.itdevcon.it (2014 version is still under construction).
Do you want to see a particular topic or have a suggestion for ITDevCon2014? Let me know
In the last months DMVCFramework has been used in many projects. Some fixes and some new features has been added.
Tomorrow will start the 4th training from the Jan 1st 2014 on DMVCFramework… WOW!
The best selling training is “Developing Web Client applications using AngularJS and DelphiMVCFramework” (a slightly modified version of this classic training http://www.bittime.it/sviluppare_applicazioni_web_usando_angularjs_con_delphi_back_end).
Tomorrow the training will be in italian, however is very popular also the english version.
However, back to the project, there is a first attempt to add some documentations on the project.
So far there are a lot of samples and all the unit tests, however there was a lack on the “classic” documentations. So, I’m happy to say that in the SVN trunk you can find my presentation held at the last ITDevCon2013 in Verona, IT.
If you are using DMVC framework I’ll be glad to have 2 lines of description about your project (numbers not functionalities insights) to put a success case page on the project website.
LuaBinding (integrate Lua script into Delphi native code)
LuaTextFilter (convert eLua into plain Lua executable script just like JSP)
Currently DMVCFramework use Embarcadero WebBroker framework, but is not tied to it. I’m working on a version that use IOCP (that is 10 times faster than plain WebBroker) and other web libraries for Delphi.
Code is enough stable and is already used in big production system.
WARNING!
There are a couple of bugs that affect WebBroker and so, DMVCFramework.
In our system, I’ve applied some patches to solve these problems. If you need those patches, ask me (I cannot publish the full code because it is Embarcadero licensed code).