Adam’s Mar 2022 Meeting Summary
- Guest Speaker: kbmMW SmartService and kbmMW SmartBind – Kim Madsen
- Server Load Testing – Simon Hooper
- Embarcadero webinar: “What’s Coming in RAD Studio Alexandria”
Jason kicked off the on-line meeting a little early, so we could all get through the sessions and then watch the Embarcadero Delphi 11.1 release webinar, as it had been timed to clash with our meeeting.
Guest Speaker: kbmMW SmartService and kbmMW SmartBind – Kim Madsen
Kim Madsen then presented a session about his kbmMW components and SmartService/SmartBind
kbmMW is an N-tier application architecture Kim has been writing and developing for many years. It is mature and in active developemnt.
It allows creation of an application server to sit between database and client, this increases security, removes the risk of SQL injection and has many other benefits such as allowing database migration without massive changes for the user. Kim’s product has built up a complex feature-set which includes many powerful and useful elements such as the ability to extend the application server to manage things like multiple releases of an application running concurrently using different back-end logic.
kbmMW allows “multi-headed” server applications, ie a single server program which can server XML, JSON and BINARY (ie Delphi/Pascal) data simultaneously on separate ports. This makes it possible to maintain multiple client applications on different platforms from a single central source.
kbmMW works via the addition of Attributes onto standard Delphi methods which makes them available for request from the client. Some examples of this code decoration are included in the linked image files on this post.
Kim also demonstrated his SmartBind and AutoBind technology which replaces LiveBindings. It seemed incredibly powerful. An in-code mechanism, with very few lines of code to bind together Graphic UI elements and Delphi classes. An amazing replacement for both LiveBindings and old-school DB-Controls. SmartBind and AutoBind can both be used in FMX and VCL applications on any compiled platform.
Kim went into enormous depth on his component sets, which are remarkable, in a really strong session. Please request a link to the full presentation from Jason if you want to know more. Note also: There are 500 + pages of kbmW documentation at https:/components4developers.blod/2018/11/09/directaccesstodocumentationkbmmw/
Server Load Testing – Simon Hooper
Simon sells a reporting solution, all written in Delphi, called WiseEyes. He needed to performance-test how this application would run on a server as he sets it up for customers who then access it with requests for Reports from their (many) offices.
Simon discussed the basic, sensible maths of actually computing Server Provision Requirements, reviewing the levels of likely peak and sustained load that may hit your system. He showed an all-Delphi test application which accesses his main application’s core code and runs multi-threaded requests against it. The multiple threads imitate multiple users, and code to audit performance as these threads run, recording the time they take to run and other key variables.
In an excellent talk Simon drilled into his own key findings, how different aspects of an application stress different elements of server hardware (RAM, CPU, Hard-disk etc.) He also found that key issues like how threads are scheduled can have significant impact on user experience.
Having an application which you can run up at any time in your own application and use to test the efficiency of your main application is clearly a huge asset. It was also amazing to see how simple server-side settings like anti-virus systems could impact on performance.
Embarcadero webinar: “What’s Coming in RAD Studio Alexandria”
The group then watched the Embarcadero Delphi 11.1 release webinar, which was actually fun, as several members provided some on-going feedback and commentary on the webinar. I am sure at next months meeting we will spend a few minutes discussing our findings to-date of the benefits and issues with Delphi 11.1