Hi.

Michael, I agree with you for the separation of concerns.

The new design use :
 "TAbstractTransport" for the transport layer
          ( specialization could be HTTP, TCP, ...).
 "TAbstractFormater"  for the serialization of content
         ( specialization could be SOAP, XML-RPC, custom binary, ...)
 "TAbstractCallMaker" to make the call over the transport
         ( specialization could be SOAP handler, XML-RPC handler,
           custom binary handler, ...)

"TAbstractFormater" and "TAbstractCallMaker" has to be synchronized.

There are 2 registries :
 The first one to register transport
 The second for message handling.

The toolkit interface has been unified in one unit, which you'll find
has attached file.

Inoussa O.


2006/4/24, Michael Van Canneyt <[EMAIL PROTECTED]>:


On Mon, 24 Apr 2006, Inoussa OUEDRAOGO wrote:

>> Does it overlap regarding functionality?
>
> This package have a different goal; The primary goal is to expose
> services as normal fpc interfaces by providing a proxy implementation
> as Delphi does; please take a look at the doc file.

It is interesting to see this, as it is complementary to the fpRPC
mechanism.

Before I would include it in the FCL, there is additional work:

1. Use a plug-in architecture for the transport layer.
    Hardcoded transport using Indy is good for a first version, but
    an RPC mechanism should be independent of the transport layer.

2. Use a messaging system which is not necessarily XML based.
    XML introduces serious overhead.

3. The creation of SOAP services should be included as well.
    (like xml-RPC)

In my opinion, an RPC mechanism needs 3 parts:

- Interface description and generation. You have this in one
   direction, and fpRPC also has this in the other direction.

- Message handling. Message can be XML, SOAP, binary, whatever.
   XML is portable, but slow.

- Transport handling. Transport can be HTTP (using Indy, Lcl, Synapse,
   whatever) or Windows WM_COPY transport, local socket, named pipes,
   shared memory: whatever. This is independent of the message.

These 2 last parts are separate from each other and from the first part:
it should be possible, at any stage, to replace one part with another.

Your implementation definitely has the potential to do this. If you have
ideas of how to achieve what I describe here, I'll be glad to discuss an
implementation with you !

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Attachment: service_intf.pas.tar.gz
Description: GNU Zip compressed data

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to