#1 Re: mORMot 2 » The Big Divide » 2024-10-22 15:46:23

ab wrote:

Discussion was https://github.com/synopse/mORMot2/issues/304

Perhaps what could help is that Embarcadero would finally accept to put mORMot in their GetIt system.

I was under the impression that mORMot was listed in GetIt for a while but they are waiting for a contributor to update the latest version.  Please reach out to Ian Barker for details on getting mORMot2 added to GetIt.

#2 Re: mORMot 1 » Revision 2.x of the framework » 2020-03-03 21:54:57

Definitely agree on splitting things up and giving some more options to highlight stand-alone components.  You have a ton of functionality in the source, and a huge amount of documentation, but much of the functionality is lost by the casual onlooker.  If they aren't in the market for an ORM, the may certainly be interested in the other functionality that is available.

#3 synopse.info » Why keep "Releases -> Latest version of components"? » 2019-05-08 20:53:29

darianmiller
Replies: 2

This is listed first in the "Jump to" quick access at the bottom of the forum pages but it contains extremely dated material.

I first posted here back in early 2011 and I came back today for the first time in a long while.  The "Latest version of components" was  the first forum I picked and it has posts from 2011...so I was initially thinking "nothing has changed in 8 years!" 

I humbly submit that it's makes for a bad first impression for new users to your forum and that you probably should delete the old "Releases->Latest Version of Components".

#4 Re: mORMot 1 » THttpServer serial processing? » 2011-02-12 15:46:33

If you have a bunch of updates to a DB, the sending/receiving from the clients can be quite small in comparison to the server side work.

I didn't think of this last night but if your target DB server is SQLite, which serializes updates anyway, then the architecture makes a lot more sense to me.  But, if you are trying to use this server architecture for much else, then I don't think it does.  A 'real-life' example would be the typical shopping cart checkout process.  Part of the process is to contact UPS to get shipping rates for the order...no one else can add anything to their shopping cart, and no other static page (or even image) is even served, until that one customer gets their rate quote from UPS.  It would lead to quite a jittery system.  Typically, the vast majority of all server tasks are reads which should be parallized.


Regardless, you have a lot of very nice code and I applaud your efforts to help the Delphi community with your projects.  I have my IOCP implementation so it was more of a curiousity item for me.

Thanks,

Darian

#5 mORMot 1 » THttpServer serial processing? » 2011-02-12 02:12:53

darianmiller
Replies: 3

I saw your post on StackOverflow about your Delphi socket server component.  I downloaded a copy just now and took a quick look.  At first it seems to be using IOCP and is scalable with a thread pool, but the implementation has a large bottleneck.

I started a new standard VCL app to verify and subclassed THttpServer:
TmyIOCP = Class(THttpServer)
  public
    function Request(var ClientSock: THttpServerSocket; var Data: TSockData): cardinal; override;
  end;

in the form create:
  fIOCPServer := TmyIOCP.Create('80');

custom client routine:

  function TmyIOCP.Request(var ClientSock: THttpServerSocket; var Data: TSockData): cardinal;
  begin
    result := 200;
    Data := '<html><head><title>test</title></head><body>Hello ' + FormatDateTime('hh:mm:ss:zz', Now) + '</body></html>';
    ClientSock.ContentType := 'text/html';
    Sleep(1000 * 30);  //30sec pause to process this single client request... simulate database lookup, server side delay, etc.
  end;


That's it.. start the app and then launch your webbrowser.  Navigate to http://localhost in 3 separate tabs (or 3 separate browsers)

This was my response

Hello 19:57:39:366
Hello 19:58:09:366
Hello 19:58:39:369


So the requests were all serialized...one processed at a time.  This is obviously due to
procedure THttpServer.Process
..
// calc answer (unique thread)
  try
    EnterCriticalSection(ProcessCS); // calculation thread protection
    Code := Request(ClientSock,Data);
  finally
    LeaveCriticalSection(ProcessCS);
  end;


Why have all this framework and power and then limit yourself to processing one request at a time?

Darian

Board footer

Powered by FluxBB