Delphi Android開発にOpenJDKを使用する

このことは意外に知られていないかもしれませんが、Javaは多くのフレーバーとパーツから構成されています。OracleによるSun Microsystemsの買収によりOracleはJava商標の正式な所有者となり、主要な「公式」Javaディストリビューションとなりました。 最初に免責事項を説明します:私(Jim McKeeth)は弁護士ではなく、Java開発者でもありません。この記事はJava、Java開発、およびライセンスに関連する多くの複雑な問題に関するハイレベルな概要です。この記事の目的...(read more)
Read More

TMS WEB Core for Visual Studio Code beta is ready for TMS ALL-ACCESS users

 
With this new step and announcement, we’re excited to have reached a new milestone in the vision of TMS WEB Core.

On July 26, 2018, we released the first version of TMS WEB Core for the Delphi IDE, hereby offering a RADically new way for creating web applications directly from the Delphi IDE. RADically different because TMS WEB Core offers RAD component based rich web client application development thanks to the technology of compiling the Object Pascal code to JavaScript with the pas2js compiler. A next step was to also enable using TMS WEB Core from the Lazarus IDE with a first version introduced in October 2018. At the same time, TMS WEB Core was extended with support for creating PWA’s, that is progressive web applications, meaning web applications that can be installed on mobile devices or Chrome desktop browsers, run offline and access several parts of the device hardware. In a later step, February 2019, we announced support for creating cross-platform desktop applications via the Electron framework. On November 15, 2019 we unveiled that TMS WEB Core was also coming to Visual Studio Code. And now, today, after a huge amount of intensive work, we feel confident to give our baby in the hands of TMS ALL-ACCESS users.
It took more time than expected to reach this level as the challenges turned out to be quite complex. Challenges we couldn’t have coped with without having the absolute best engineers on board. In the first place, José Leon Serna, architect of the IDE integration into Visual Studio Code, Roman Kassebaum overlooking and ensuring the Visual Studio Code integration works on 3 operating systems and remains compatible with Delphi’s project management, the pas2js compiler team assisting with debugging integration, the framework team itself taking up the huge task for making the UI controls all design-time editable.

Let’s go back to the WHY of taking up this huge & challenging task. Before embarking on this project, José Leon Serna, former Embarcadero IDE architect and head of the engineering team in Spain, and myself mutually shared the vision that Visual Studio Code offered a couple of unique technical features that could potentially make it an ideal candidate for using it for TMS WEB Core web client development. Visual Studio Code is based on web technology. Visual Studio Code is an Electron application and internally, everything is rendered via web views. This makes it ideal to offer design-time live rendering of the forms designed by TMS WEB Core. This is the primary driver. But there are nice additional benefits coming with Visual Studio Code. So, in a nutshell, key decision factors for our endeavour were:

  • Based on web technology, offers a live web rendered designer form
  • Is cross-platform, Visual Studio Code can be used on Windows, macOS, Linux
  • Designed to be extended via plugins with seamless plugin ‘marketplace’ distribution
  • A powerful established Pascal code editing plugin OmniPascal is already available
  • It is a high-DPI compliant IDE
  • Features built-in mechanisms for debugging of applications running in a browser
  • It features side-by-side editing, multi-view code editor windows that can be freely arranged
  • It has a very low barrier of entry, as Visual Studio Code itself is free and open source

Just like our support for Lazarus adds a freedom of choice, the capability to use Visual Studio Code now is an extra freedom of choice. Of course, this won’t stop nor influence our plans for TMS WEB Core for Delphi. Version 1.4 of TMS WEB Core for Delphi is around the corner. All the work we did on the framework to make it behave nicely live in the Visual Studio Code designer benefits the quality of the framework itself, so also users with the Delphi IDE. And of course, Delphi remains the powerhouse for building fast native backend solutions for Windows or Linux servers with solutions such as TMS XData, Embarcadero RAD Server or other commercial & open-source initiatives for creating server software. We actually hope in fact that it helps bringing Object Pascal in the spotlights of Visual Studio Code users and makes developers curious for exploring and using RAD Studio as well.

So, we hope for a fruitful beta period with our baby in the hands of TMS ALL-ACCESS users. We will meanwhile work extremely hard to polish the product so we can reach the release stage within a couple of months. Regardless, we always keep the words from David I (@davidi99) in mind, we’ll release it “when it’s ready!”

Read More

Read More

TMS XData in a COVID-19 app: comments from the developer

Photo by National Cancer Institute on Unsplash

Stephen Ball has recently posted about a new app released by the

Military Institute of Medicine
that is
helping fight the spread of the global SARS-CoV-2 pandemic
.

Stephen’s blog post describes with more details what the application is about,
so here I will mention how TMS XData – our framework to build multitier REST/JSON applications – helped the team to accomplish it.

The project is headed by Piotr Murawski (Ph.D, Head of ICT, Military Institute of Medicine, Warsaw, Poland) who shared with me
some more interesting information in the (kind of) format of an interview. Thus I’m providing the content more or less how I asked him.
I hope you enjoy it!

Q: Do you have interesting screenshots of the software?
A: I attached them, two from mobile application (Android), one form Epidemilogist’s panel and one from a Windows Services.

Q: Do you have any idea of how many users are using the software?
A: Until today the software has been used by 1515 users from hospital and others institution.
These users send 18031 results of Medical Self-monitoring Card. Each card have 8 questions and four are connected with COVID-19.

Q: Do you have any idea of the number of requests per day (or hour, or minute)?
A: As You can expect there is not a statistical even distribution. In reality it is connected with the hours when people start or
finish they job.

This is a long term distribution (until today), where the first registration was 15.03.2020.
As You can see a the beginning was “test time” and the peaks are as Monday to Friday, which is understandable.

Q: Is the remote (cloud) communication only done with XData, or are there other frameworks/communication involved?
A: The remote connection is done only with XData for REST Services.

Q: Is the XData server a single one, or load balanced?
A: At the moment we use single instance of XData server but probably we will use load balancer for it in the future –
an increase in the number of users is planned.
As you can guess infrastructure and software architecture was designed to get as short answer time as possible.
This is why some task has been done by the SQL Server procedures or triggers to.

Piotr kindly provided additional information:



The infrastructure modules have a roles:

  • Covid Analytics Service: The analyse answers individually for every persons and qualified the answers to the group:
    white, yellow, red, dark red for an intervention;
  • Covid Core Service: authorization, result sending, user registration;
  • Covid Database Service: Database (TMS RemoteDB and TMS Aurelius – two versions) for an application for Epidemiologist
    to be possible analyze a data not only in a Institute but at home or other place too;
  • Covid External Service: Connection to the medical laboratory. If they get a positive result the lab can automatically
    create a record for a monitoring.
  • Covid Messaging Service: SMS reminder, for every person it is possible to set a different time between card what is expected.
    This service check this delay and if is greater than expected send a SMS by use of Microsoft Exchange and VoIP/SMS gateway.
    The messages are send from Moday to Friday from 7am to 9 pm every 2 hours, so it is motivated to send a card.
  • Application’s works on:

    • For patients and other persons: Windows, Android (8.0 and higer), Mac OS, iOS. Because I still have a problem to put them to the
      Apple Store and Google Play there ae available from the Institute’s cloud;
    • For Epidemilogy Department: Windows;
    • Infrastructure: webservices and some servers for test and service debugging.

    If we will think about productivity there was impossible to do without TMS Software.
    As you can see in the table the system cost 129 hours one man programming with help of UI Specialist and Medical doctor.

    I cannot thank Piotr enough, first for creating such a nice application that is helping in all this crazy times we’re living,
    but also in providing such detailed information about his software, and ending with such nice compliments.

    It makes us proud to what have done so far and give us confidence and energy to keep moving on and helping people all around the world
    to be productive and accomplish their missions!

    Read More

    Read More

    New Hands-on with Delphi book available now

    I’m more than delighted to see today the first fruits of brainstorming and ideas that started here more than 6 months ago.

         

    This first result is a new book, written by our chief evangelist Dr. Holger Flick. The book title is “Hands-on with Delphi” and on the side of the book you can see in a light blue rectangle the big number 1. This suggests there will be a number 2, and 3 and …

    So, what did we brainstorm about? Over the timespan of 25 years, we have created a wide range of products, all focusing on a specific area. There are the VCL UI controls in TMS VCL UI Pack, there is the Flexcel product for sophisticated manipulation, generation of Excel & PDF files, there is our Aurelius ORM, our XData server, our cross-framework/cross-platform FNC components, our TMS WEB Core framework, … too much to name it all. Each product has its strengths and its documentation and samples focus on this one specific product.

    But there is a bigger picture and that picture is what you are doing on a daily basis. Creating great software applications for users by bringing together the best components from our company as well as other 3rd party companies. There is one thing in common, that is of course: Delphi which is the central part, the IDE, the compiler, the frameworks that bind it all together.

    And with this insight, the idea was born that it would bring additional value if more knowledge was transferred about how to bring all pieces of the puzzle together, how the different components, technologies, frameworks and tools can be brought together to create powerful & stunning applications that help people and organisations all over the world in many domains.

    In this first book in the series, Holger already brings together a big stack of different products:

    With the book come of course also the sample projects that were created using Delphi 10.3 Rio.

    Head over to the book content description to see what you will learn with the book:

    • Write a professional web service for a database with over 8 million records.
    • Design VCL, FireMonkey and TMS WEB Core web clients for multiple platforms and devices.
    • Implement a reporting service with XData.
    • Generate signed PDF documents with a customizable template.
    • Add a token-based login to your services.
    • Build user interfaces with vector images to be ready for any display resolution.
    • Encrypt sensitive data using modern algorithms.
    • Use parallel programming to build responsive client applications.
    • Write better code with static code analysis.

    The book can be ordered from today from Amazon:

    Check the blog from our colleague Dr. Holger Flick where you can obtain also a sample chapter PDF.

    And if that’s not enough, the content table for the 2nd book is already nearly done. We are eager to learn though what you want to see covered in books 3, 4, 5 …

    Read More

    Read More

    May the Fourth (be with you) – and some FireMonkey feature requests

    Happy Star Wars Day! What? Delphi programming types are allowed to be silly sometimes. :) This iconic 3D Model is used with permission from CoreyLoses. Corey created a full conversion mod of Sins of a Solar Empire called Star Wars: Thrawn's Revenge II: Ascendancy. If you like real time strategy games and have a soft spot for Star Wars, maybe take a look. Plus, Corey is a fellow Canadian,
    Read More

    FNC Hidden Gems: JSON persistence

    Intro FNC has evolved over time. Each update brings new features, some of them are visible at designtime/runtime. Some of time are happening behind the screens. Some updates are bringing a lot of fixes to make FNC more stable across the multiple frameworks and platforms FNC supports. JSON persistence is one of those hidden gems that is available in TMS FNC Core. Today's blog brings a step by step tutorial on how to implement JSON persistence in your application, and how to import objects from JSON. Getting Started JSON formatted data can come from a REST service, a database, a local file, plain text ... . It's an easy to read/learn/use and consume format and in FNC we have added support for mapping objects to JSON and vice versa. The code below is a sample of JSON that we will map on an object in Delphi. We'll focus on having an object that can access the properties shown in this JSON: { "$type":"TPerson", "address":{ "$type":"TPersonAddress", "addressLocality":"Colorado Springs", "addressRegion":"CO", "postalCode":"80840", "streetAddress":"100 Main Street" }, "colleague":[ "http://www.example.com/JohnColleague.html", "http://www.example.com/JameColleague.html" ], "email":"info@example.com", "jobTitle":"Research Assistant", "name":"Jane Doe", "birthDate":"1979-10-12", "gender":"female", "nationality":"Albanian", "telephone":"(123) 456-6789", "url":"http://www.example.com", } For accessing this data we need to define our classes first: type TPersonAddress = class(TPersistent) private FPostalCode: string; FAddressLocality: string; FAddressRegion: string; FStreetAddress: string; published property AddressLocality: string read FAddressLocality write FAddressLocality; property AddressRegion: string read FAddressRegion write FAddressRegion; property PostalCode: string read FPostalCode write FPostalCode; property StreetAddress: string read FStreetAddress write FStreetAddress; end; TPerson = class(TPersistent) private FAddress: TPersonAddress; FColleague: TStringList; FBirthDate: string; FName: string; FEmail: string; FTelephone: string; FGender: string; FNationality: string; FJobTitle: string; FURL: string; public constructor Create; destructor Destroy; override; published property Address: TPersonAddress read FAddress; property Colleague: TStringList read FColleague; property Email: string read FEmail write FEmail; property JobTitle: string read FJobTitle write FJobTitle; property Name: string read FName write FName; property BirthDate: string read FBirthDate write FBirthDate; property Gender: string read FGender write FGender; property Nationality: string read FNationality write FNationality; property Telephone: string read FTelephone write FTelephone; property URL: string read FURL write FURL; end; And the JSON data (please note that linebreaks and whitespaces are currently not supported, but this is being worked on!. const jsonSample = '{' + '"$type": "TPerson",' + '"address":{' + '"$type": "TPersonAddress",' + '"addressLocality":"Colorado Springs",' + '"addressRegion":"CO",' + '"postalCode":"80840",' + '"streetAddress":"100 Main Street"' + '},' + '"colleague":[' + '"http://www.example.com/JohnColleague.html",' + '"http://www.example.com/JameColleague.html"' + '],' + '"email":"info@example.com",' + '"jobTitle":"Research Assistant",' + '"name":"Jane Doe",' + '"birthDate":"1979-10-12",' + '"gender":"female",' + '"nationality":"Albanian",' + '"telephone":"(123) 456-6789",' + '"url":"http://www.example.com"' + '}'; There are multiple ways to map the JSON onto the TPerson object. 1. Use the TTMSFNCPersistence class Add the unit *TMSFNCPersistence to the uses list (* = FMX., LCL, VCL., WEBLib.), and use the following code: var p: TPerson; s: TStringStream; begin p := TPerson.Create; s := TStringStream.Create(jsonSample); try TTMSFNCPersistence.LoadSettingsFromStream(p, s); finally s.Free; p.Free; end; end; 2. Use the object class helper in *TMSFNCTypes unit An alternative is to use the class helper that maps JSON to the object. var p: TPerson; begin p := TPerson.Create; try p.JSON := jsonSample; finally p.Free; end; end; Writing to JSON is as easy as reading. Simply use SaveSettingsToFile or SaveSettingsToStream or use the JSON object class helper to get the JSON from the object. p: TPerson; begin p := TPerson.Create; try p.JSON := jsonSample; p.Name := 'tmssoftware.com'; TTMSFNCUtils.Log(p.JSON); //or TTMSFNCPersistence.SaveSettingsToFile(p, 'TPerson.json'); finally p.Free; end; end; Note that this code will also work on other frameworks such as VCL, LCL and WEB. Below is the full code sample that demonstrates JSON persistence. Please let us know if you have suggestions on what to add to TMS FNC Core in the future! unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} uses FMX.TMSFNCTypes, FMX.TMSFNCPersistence; const jsonSample = '{' + '"$type": "TPerson",' + '"address":{' + '"$type": "TPersonAddress",' + '"addressLocality":"Colorado Springs",' + '"addressRegion":"CO",' + '"postalCode":"80840",' + '"streetAddress":"100 Main Street"' + '},' + '"colleague":[' + '"http://www.example.com/JohnColleague.html",' + '"http://www.example.com/JameColleague.html"' + '],' + '"email":"info@example.com",' + '"jobTitle":"Research Assistant",' + '"name":"Jane Doe",' + '"birthDate":"1979-10-12",' + '"gender":"female",' + '"nationality":"Albanian",' + '"telephone":"(123) 456-6789",' + '"url":"http://www.example.com"' + '}'; type TPersonAddress = class(TPersistent) private FPostalCode: string; FAddressLocality: string; FAddressRegion: string; FStreetAddress: string; published property AddressLocality: string read FAddressLocality write FAddressLocality; property AddressRegion: string read FAddressRegion write FAddressRegion; property PostalCode: string read FPostalCode write FPostalCode; property StreetAddress: string read FStreetAddress write FStreetAddress; end; TPerson = class(TPersistent) private FAddress: TPersonAddress; FColleague: TStringList; FBirthDate: string; FName: string; FEmail: string; FTelephone: string; FGender: string; FNationality: string; FJobTitle: string; FURL: string; public constructor Create; destructor Destroy; override; published property Address: TPersonAddress read FAddress; property Colleague: TStringList read FColleague; property Email: string read FEmail write FEmail; property JobTitle: string read FJobTitle write FJobTitle; property Name: string read FName write FName; property BirthDate: string read FBirthDate write FBirthDate; property Gender: string read FGender write FGender; property Nationality: string read FNationality write FNationality; property Telephone: string read FTelephone write FTelephone; property URL: string read FURL write FURL; end; { TPerson } constructor TPerson.Create; begin FAddress := TPersonAddress.Create; FColleague := TStringList.Create; end; destructor TPerson.Destroy; begin FreeAndNil(FAddress); FreeAndNil(FColleague); inherited; end; procedure TForm1.Button1Click(Sender: TObject); var p: TPerson; begin p := TPerson.Create; try p.JSON := jsonSample; finally p.Free; end; end; end.
    Read More

    What’s coming in TMS WEB Core v1.4 Ravenna

    The world of web development is evolving fast, it comes as no surprise that TMS WEB Core evolves fast.
    When we embarked on this exciting adventure in 2017, we knew the road would be long. There is simply an abundance of things to do in the world of web development and we made it our mission to put Delphi developers in a front seat to apply the well known RAD approach to create web applications with an unparalleled productivity.

    When we first released TMS WEB Core v1.0 on July 26, 2018, we named version 1.0 Brescia after the city where the famous car race Mille Miglia starts. And with each subsequent version, we name it after a city across the legendary Mille Miglia track of 1955. We visited meanwhile Verona with v1.1, Padua with v1.2 and Ferrara for v1.3. So, now we are heading to version v1.4 that will be named Ravenna.

    The theme for TMS WEB Core v1.4 Ravenna is:

    • widening the UI control offerings with controls for frequently used UI patterns
    • enhancing the HTML-first approach
    • increasing easy interfacing to additional popular back-end services

    Widening the UI control offerings

    We have added two brand new UI controls in TMS WEB Core v1.4 Ravenna:

    TWebImageSlider

    In many scenarios, people want to show various pictures of things for specific items. Think about a product on Amazon that might have different pictures taken from different angles, think about an online real-estate broker presenting different houses with picture sets of the house on sale or a car dealer showing cars for sale accompanied by pictures of the car in various positions.

    If you have such a use-case in your application, TWebImageSlider is the shortcut to achieve this. Basically this is a container control where you add the links to the images to be displayed and the control does everything else. It shows the picture thumbnails, a left / right slider button and you can click on thumbnails to see the large version of a specific picture.

    Now, to integrate this kind of functionality should not take much more than a couple of minutes.

    var
      i: Integer;
    begin
       for i := 1 to 8 do
        ImageSlider.ImageURLs.add(Format('./images/nature-%d.jpg', [i]));
      ImageSlider.RefreshImages;
      ImageSlider.Appearance.TransitionEffect := tefSlide;
    end;

    TWebContinuousScroll

    Another often used pattern is to show lists of items filling the viewing area of the browser only and after this, only load additional items when the user decides to scroll down. The reasoning behind such UI control is simple. By loading only the items in view, the initial display of the page is very fast and only when the user wants to see additional items, extra items are loaded asynchronously in the list.

    TWebContinuousScroll is again a shortcut to this pattern. Drop the control on the form, add the event handler code for the event that is triggered when a new page of items is needed and return the requested items. TWebContinuousScroll does the rest, it handles the rendering, it handles the UI interaction (mouse dragging / touch scrolling) and just triggers the event when new items are needed.

    procedure TForm1.WebContinuousScroll1FetchNextPage(Sender: TObject; APageSize,
      APageNumber: Integer; var AURL: string);
    begin
      AURL := 'https://tmswebcore.com:8082/?page=' + IntToStr(APageNumber) + '&per_page=' + IntToStr(APageSize);
    end;
    

    New TWebListControl demo

    The TWebListControl is a very versatile list control that might not be well understood enough and therefore underused by TMS WEB Core developers. TWebListControl uses the bootstrap CSS library do its magic. From a list of items, it can create a breadcrumb, a tab list, an item list, a list with expanding/collapsing subitems. The new demo shows the various modes of the versatile TWebListControl

    Electron 8 support

    The fast evolving framework Electron for creating cross platform desktop applications reached meanwhile version 8. It is being polished & enhanced all the time to allow to create responsive installable & near-native experience desktop applications for Windows, macOS and Linux with the advantage that the UI is rendered from HTML/CSS, meaning that in terms of graphical appeal, there are no limits.
    With TMS WEB Core v1.4, we did the necessary changes to the framework and the Electron specific controls to make these work as seamless as possible with Electron 8.

    Enhancing the HTML-first approach

    We’ve realized that not for all users looking at TMS WEB Core it was clear that using the Delphi IDE form designer for creating your web pages is by far not the only way to do it. While TMS WEB Core was developed from the ground up to facilitate this for Delphi developers familiar approach to create application forms, it was equally from the ground up built to enable the use of HTML/CSS based pages. This means that you can use existing HTML/CSS page templates which are not only created by web designers but can be obtained free or very cheap from various websites. Sometimes you get for $25 and extraordinary good looking web page template. Of course, we wanted to offer the capability to use such templates and from the Delphi IDE, you will basically just write the UI control logic and leave the page layout to HTML and CSS.

    New TWebElementActionList

    This new component, not to be confused with Delphi actions, facilitates easy hooking to events for all the HTML elements in page templates. It is a collection of actions that you define that happen when an event happens for a HTML element on the page. For example, the menu of your application could be a graphically very good looking HTML/CSS based animated menu and you can use the TWebElementActionList to define the actions that should happen when a specific item in this HTML/CSS menu is clicked. To do this, simple add the template HTML/CSS to your form, make sure to set a unique ID to each HTML element representing menu items and then add a TElementAction for each item in the menu. Define for the TElementAction.Event for example heClick and then the TElementAction.OnExecute event will be triggered when this menu item is clicked. In this OnExecute you could then for example add the UI control logic to show a DB grid with data, show a different form etc… As a Delphi developer, you have reused the graphical skills of a web designer and you just had to do a minimal effort to connect the logic in your application that is happening when the user interacts with the user-interface.

    Increasing easy interfacing to additional popular back-end services

    In TMS WEB Core we have already included the TWebClientConnecton, TWebClientDataSet, TWebDataSource to bring the pattern VCL Delphi developers have known ever since the inception of Delphi to bind data to UI controls. This concept also exists in TMS WEB Core. To make the binding to the back-end easy, we have a TWebXDataDataSet that shields all the complexities of communicating with a TMS XData REST server. We have the TWebmyCloudDataClientDataSet to shield this same complexity when our myCloudData cloud data storage service is used (free for all TMS ALL-ACCESS users). We also have the TWebSQLRestClientDataSet that interfaces to the Lazarus foundation open source SQLDBBridge REST server. And we TWebFirestoreClientDataSet for users wanting to use Google’s Firestore cloud data storage solutions.
    With TMS WEB Core 1.4 Ravenna, we are pleased to offer 3 more easy out of the box solutions to connect to back-end services.

    New TWebRadServerClientDataset

    Delphi Enterprise or Delphi Architect SKU users have out of the box a license to Embarcadero Rad Server. Embarcadero Rad Server offers the technology to create REST services and is able to create a REST API for performing operations on databases in the back-end. While TMS WEB Core includes a component to perform REST requests to work with Embarcadero Rad Server out of the box, the new TWebRadServerClientDataset just makes it way easier to hook-up a UI with DB-aware controls to an Embarcadero Rad Server and perform through this dataset CRUD operations. Basically you set the URL to the data exposed as JSON based REST API from Embarcadero Rad Server and the TWebRadServerClientDataset middleware will perform all required HTTP GET,PUT,POST,DELETE requests, JSON handling behind the scenes and from the TMS WEB Core client you have just the DB-aware UI controls hooked up to it via a TWebDataSource.
    We have added our todo-list demo that is using Embarcadero Rad Server just like we have this same todo-list demo. Other than the dataset, there is not much different from the demo using Firestore, TMS XData, SQLDBBridge, myCloudData. This shows how back-end agnostic TMS WEB Core web client applications can be.

    New TWebDreamFactoryClientDataSet

    From all low code back-end technologies, Dream Factory is without a doubt the most flexible one. With Dream Factory you can create REST APIs for access to data on the back-end by doing all the settings and parameterizing via a web interface. No need to do any programming, no need to dive into all technical details of HTTP(s) request, authentication, JSON packets, … Dream Factory does this all for you. We had Dream Factory as a very interesting back-end for TMS WEB Core already on the radar even before the inception of TMS WEB Core in 2018 as it is a very interesting technology for offering cloud data access for VCL Windows applications or FMX cross-platform applications, possibly further facilitated via a TMS Cloud Pack component.
    But now we embark with our first bridge component, the TWebDreamFactoryClientDataSet that you can configure with the URL of your Dream Factory REST API and this bridge component does all the required communication to perform CRUD operations via its dataset to a database with a Dream Factory REST API. This dataset is then easily hooked up via a TWebDataSource to the TMS WEB Core DB-aware UI controls. Also here, we have taken the same todo-list demo and with minimal effort (basically replacing the dataset) our todo-list application talks to a Dream Factory based back-end.
    While TWebDreamFactoryClientDataSet is a first step for easy Dream Factory REST API back-end access from TMS WEB Core web client applications, we’re eager to offer even more integration with the Dream Factory APIs in future TMS WEB Core versions as well as in future versions of the TMS FNC Cloud Pack that can be used in native Windows applications as well as native cross platform Delphi FireMonkey applications.

    New TWebFaunaDBClientDataSet

    Where Dream Factory offers automatic codeless REST API creation for access to a multitude of databases or services, FaunaDB is a cloud data storage service that hosts the data for you and offers as REST API to access it. It has similarities with our own myCloudData.net service and a few interesting angles. As such, to offer yet more freedom of choice, we have added the TWebFaunaDBClientDataSet component. You can use the web interface on your account at FaunaDB to design your tables and this can automatically be consumed when setting the proper URL to the TWebFaunaDBClientDataSet component. There is not much more to it, go to FaunaDB.com, setup your tables, set the URL to TWebFaunaDBClientDataSet and hookup DB-aware TMS WEB Core controls to this dataset via a datasource and you are up & running to perform CRUD operations on these tables.
    Similar as for Embarcadero Rad Server and the Dream Factory REST API, we have a version of the todo-list demo that works with FaunaDB.

    Get ready

    The beta for TMS WEB Core v1.4 is around the corner. We are doing the testing, finishing the demos and writing the new documentation. TMS ALL-ACCESS users are in the front seat and can expect this beta accessible from their account shortly and after a couple of weeks testing, we will release this new 1.4.

    We hope you are as excited as we are about the new TMS WEB Core v1.4. And there is more! It is this v1.4 feature set that will also be included in TMS WEB Core for Visual Studio Code. The project to offer a TMS WEB Core version integrated in the Microsoft free and cross platform Visual Studio Code IDE has significantly advanced in the past couple of months. A select group of beta users is currently test-driving the newest builds. Very shortly, TMS ALL-ACCESS users will also get access to the beta and after a few more weeks of testing/feedback/updates we plan to release this version as well.

    Read More

    Read More