Implementing IOCP as a transport mechanism?

Hello Remobjects team,

are there any plans to implement IOCP as a transport mechanism in Remobjects SDK? I have read some discussions and blogs about it lately and it seems that this mechanism is suitable for much higher throughput and concurrency than Indy etc.

Hello,

IOCP is hardly a transport. It is an API to handle multiple I/O requests, can be bound to any file handle including disk files and sockets. Yes, it seems to provide a more efficient threading model than the classic “dedicated thread for each request”. But there is an important disadvantage for us: unlike Indy this API is Windows only.
Due to some issues with Indy and Synapse, the libraries we currently use, there are discussions about creating our own channels and servers to go away from third party dependence. We’ll consider this API too but mind you, it is not a matter of the near future.

Best regards - Sergey

Synopse’s mORMot project leverage IOCP on Windows, its fast and cool, but yes, its not cross-platform. And yes, its much, much faster than Indy!

Maybe its better to use some frontend server, like NGINX, as frontend, and use some plugin to process request. For Linux/OSX, NGINX have best performance, much better then Apache!

Only Indy is cross-platform… but I personally never use it because Synapse is rock steady.

Has anyone tried msgconnect with RO?

I would like to ask if IOCP still on the roadmap. It would be a great addition for Windows based RO server! Please consider it

Hi,
On a future version of RO, they will be implementing some of the protocols based on the Grijjy open source communication classes. Grijjy implemented IOCP on them, even if RO doesnt directly support them (hopefully they will) it could be possible to modify them so they can be used.

Here it is a link to their source regarding IOCP.

Is IOCP included already with RoSDK latest release?
@sergeyl

Hi,

We have implemented a few Grijjy-based channels in ROD v10:

  • TROGrijjyHttpChannel
  • TROGrijjySuperHttpChannel
  • TROGrijjySuperTCPChannel
1 Like

@EvgenyK
I have 2 questions:

  1. Are all of these three channels using IOCP, or just the HTTP channel?
  2. They are not included in the Service Tester? Can we have them in the Service Tester?

Hi,

Though TgoHttpClient supports blocking and non-blocking modes, we use it only in blocking mode so
IOCP won’t work for this component.

will add Grijjy channels to Service Tester

I see.

So the value of these Grijjy based new components, is not about IOCP, but about the capability of being cross-platform. Is that correct?

Yes, they work for Windows and Linux platform and can be replacement for users who dislikes using Indy components.

bugs://83479 got closed with status wontfix.

Grijjy channels aren’t compatible with Delphi7 that is used for compiling Service Tester …

Understand. Not a problem.

Hi EvgenyK

it would be great if you will can release the source code of the ROServiceTester on github (only users with a license) so we can add the missing features, port the product to new versions of Delphi, etc. etc…

Best regards

Hi,

see mh’s answer at RO SDK Service Tester is buggy, why not "open-source" it for licensed users?

1 Like

Thank EvgenyK

I had missed the answer! For the third-party components most of us probably already have them :wink:

Service Tester uses a lot of 3rd party components are released in 2006.
Some of them don’t exist anymore, like Eagle Software CDK, etc
I don’t think, that anybody except us continue to use them