#1 2015-06-25 17:59:24

Leslie7
Member
Registered: 2015-06-25
Posts: 248

crossplatform

Hi,

I have been keeping an eye on mORMot for a few years. The latest improvements (crossplatform, websockets, the way the interface based callbacks are implemented, live replication ...) made it the most promising contender for my next project and hopefully more. I am in the phase of exploring, testing and benchmarking.

XE8 :  Win32
         Android
         (IOS)

CodeTyphon 5.30:
       Kubuntu 14.04
       Win32
       Android
       (IOS)

mORMot latest from GitHub

A few questions:

1.  IOS is also planned target, but cannot test it yet. What are prospects for the   client/embedded server being production ready for mobile?

2. mORMot server for Linux?

3. Websocket support is not crossplatform yet. I would count on it for mobile clients as well. What can we  expect/hope for?


4. The XE8 linker fails for Android target with an unusal errror:
    E2597 terminate called after throwing an instance of 'St9bad_alloc'what():  std::bad_alloc

5. CodeTyphon compilation is broken (v5.30)

6. The closest thing to IOCP on Linux is EPOLL. Is it on the radar?


The more I dig into mORMot  the more impressed I am. If the latest improvements become production ready it will have all the features in a single product I was looking for. Which is amazing in the Delphi-Freepascal world. The documentaion is very useable as well.

Thansk for this great product,
Leslie

Last edited by Leslie7 (2015-06-25 18:08:21)

Offline

#2 2015-06-26 07:03:14

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,183
Website

Re: crossplatform

1. AFAIK iOS was reported to work with CrossPlatform clients.
But there is no attempt on my side to make it work with FPC and the main mORMot units.
The Android tests were made by Alf.
We do not need it here: we use HTML5 clients (with PhoneGap), either using AngularJS or SmartMobileStudio, and it is very efficient.

2. It works well, but here we focus on using Kylix instead of FPC as compiler, due to FPC limitations about interface RTTI.
You need to use the interface rtti branch with FPC - AFAIK fpcup allows to use this branch.

3. WebSockets on mobile are IMHO not a good idea.
Mobile phones have poor connection.
But the current SynBidirSocket unit works under Linux, so should work under Android.

4. I do not have XE8 with mobile pack.
AFAIR we do not use such std::bad_alloc API call in the framework...
Are you talking about the cross-platform clients? This is the only tested with Android.
For the main mORMot.pas unit under Android, you need FPC. XE8 NextGen is a not supported compiler, due to its breaking changes, and its poor performance (the Delphi RTL is dead slow, even if LLVM is a good code generator).

5. I do not use codetyphon any more, but fpcup or http://www.getlazarus.org/

6. Yes, it is on the track.
But currently, we use Linux servers for cloud-like internal services, with persistent and safe private network connection, so classic WebSocket server is fine.
We use http.sys windows servers for the Internet frontend, and its IOCP.
We made some tests of a mORMot Linux server + nginx as a proxy (on the same machine), and the result seems to be pretty stable and efficient: sounds like a good approach, perhaps better than implementing EPOLL in SynCrtSock.pas.

Thanks for your interest!

Offline

#3 2015-06-30 10:02:11

ComingNine
Member
Registered: 2010-07-29
Posts: 294

Re: crossplatform

Could you help to comment the reason why you do not use CodeTyphon anymore ?  big_smile

Offline

#4 2015-06-30 12:44:47

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,183
Website

Re: crossplatform

CodeTyphon has identified copyright issues.
See https://jonlennartaasenden.wordpress.co … right-law/

Offline

#5 2015-06-30 17:43:45

Leslie7
Member
Registered: 2015-06-25
Posts: 248

Re: crossplatform

AB,

Thanks for your answers.

1. I have been using Elevate Web Builder for a while. V2.0 has some sort of RTTI. I will check if it is suitable to integrate with mORMot.

2.  ASFAIK Zeoslib droped Kylix support after 7.0. Is it possible to connect to external databases like PG?

3. I am looking for some solution for websockets and call back functionality for Android and IOS. I hope to gain some speed benifit from it as well.
       a) Phonegap has websocket plugin. Is callback interfaces a big step from there? (I might attempt to implement it.)
       b) I will try your bidir socket, but if it does not work out sgcWebsockets client can be an other way to get it done.
       c)  If Websocket is working for FPC client  is  callback interfaces a big step from there?

4. It turned out that the virtual machine needed some more memory to finish linking. The crossplatform client works fine with XE8.

5. I am surprised by this story. I have found the CT people quite polite on their forums.

6. Currently I am testing mORMot compiled with XE8 under linux with wine. The only  issue so far is that sometime the response time can be  up to 5-8 times more with a very simple test case when the  same request is sent to the server in every 500-5000ms. IOCP implementation seems incomplete for wine. Even if it was complete stability is a big question.

Offline

#6 2015-06-30 17:56:20

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,183
Website

Re: crossplatform

2. Perhaps via our SynDBODBC unit.

3. Interface callbacks are not implemented yet for cross-platform clients (SMS, WebBuilder), or FPC/NextGen.

6. Try with the WinSock-based server.
I would stay away from their http.sys implementation.
Kylix (or FPC) + a NGINX front end would be just fine, I guess.

Offline

#7 2015-07-01 19:20:17

Leslie7
Member
Registered: 2015-06-25
Posts: 248

Re: crossplatform

AB,

6. NGINX reverse proxy is an interesting idea. There was no noticeable speed difference when the mORMot websocket server under wine was accessed directly  and when through the native Linux NGINX.

I hope to be able to migrate completely to FP and Linux one day, but the Windows server + wine combo  is the likely  way for us to start. There are other technologies which are available only for Windows now.  Performance seems good so far. I will know more about stability after stress stressing.

It would be nice to have a feature matrix about what is available/planned for the supported platforms. We need to stick to the technology which can be used with mobiles.

Last edited by Leslie7 (2015-07-01 19:22:55)

Offline

#8 2015-07-01 20:22:09

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,183
Website

Re: crossplatform

Upcoming features highly depend on what is proposed as patches.


On our side we focus on windows and Linux via crosskylix which works well for our purpose.
FPC has still some restrictions about interfaces rtti and variant late binding support.

Offline

#9 2015-07-02 11:25:15

Leslie7
Member
Registered: 2015-06-25
Posts: 248

Re: crossplatform

I think I am getting the picture now. smile

Currently I am exploring  UI binding with sharding. The   generic TList<> can be bound with live binding.  In the example I have found TCollection is used for list properties. Can it be used with TList<>? If not  is it a big addition to make it possible to use it?

Offline

#10 2015-07-02 11:44:53

Leslie7
Member
Registered: 2015-06-25
Posts: 248

Re: crossplatform

Using TCollection might be a good thing after all. I just need to figure out how to bind it to the UI.

Last edited by Leslie7 (2015-07-02 16:22:47)

Offline

#11 2015-07-02 11:56:25

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,183
Website

Re: crossplatform

TList<> is indeed not supported yet.
You may try TArray<> which maps a dynamic array. Could work with a dynamic array of records, for DTO support.

Offline

#12 2015-07-03 23:51:38

Leslie7
Member
Registered: 2015-06-25
Posts: 248

Re: crossplatform

It does not solve the UI binding. TCollection has a private TList<> field. Copying the Class definition and creating a public property to access it may do the trick. smile

Offline

Board footer

Powered by FluxBB