[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Visionaries] Local RPC
From: |
Dean Michael Berris |
Subject: |
Re: [Visionaries] Local RPC |
Date: |
Thu, 15 May 2003 18:50:52 +0800 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030313 |
hi peter,
Peter Minten wrote:
Hi folks,
I've been thinking about a way to connect WebScheme and C# code. A fast approach
would be direct C type calls. Disadvantage is that a lot of type checking and
conversion has to be done. A flexible approach would be XML-RPC, but that's even
slower.
i think here we have to strike a balance between flexibility and efficiency.
something very flexible (like XML) at most times would be very ineefficient.
take for example, if a new language with new data types would be adopted into
the DotGNU system, would the specification for the inter-language function call
binary protocol have to comply with the new data types? does the language have
to adapt to the fairly rigid and efficient structure of a binary protocol
defined? how about backward compatibility?
these IMHO are issues that may easily addressed with the use of XML and well
defined and carefully structured DTD's for the sake of compliance and
correctness of transactions between any two parties.
I believe a mix form can be used for languages on one box to communicate. The
basic idea is that XML-RPC is pretty good, but the XML needs to be replaced by a
binary protocol (can be parsed faster). Another idea is that for every object
that cannot be easily translated tickets are used.
i would like to agree, but however again i point out the tradeoff between
flexibility and efficiency. would you sacrifice any of the two for the other?
maybe in situations when a broader spectrum of tools would want to communicate
with one another, a standard way of communication must be defined. this has
already been done for us by XML, offering a framework for structured
communication to be possible between seemingly different parties.
i mean, in a broader sense, what if DotGNU adapted pascal or delphi into the
framework, would the specifications for the binary format change to take into
consideration the quirks of the pascal boolean, or the objects defined in delphi?
The details of the system have to be worked out, but I'm confident that this
will make inter language calls much easier.
i also think it would, however a sacrifice for flexibility is very evident. what
if bit fields were being send between two languages? if app A coded in language
A created a bit field which is part of an object, which is needed by another app
B coded in language C, how will the binary protocol make it happen?
although this is a special case i may say, more metadata and language specific
conversion information would be squeezed into XML which gives it the flexibility
to be able to handle the job in a more standard way.
i am currently working on a middleman server called XML Generic Object Server
(xmlgos) -- which was and is still hosted in sourceforge, but is still in an
alpha non-working state -- which specifically caters to these instances.
basically, xmlgos will sit as 1) a repository of xml documents in transit, 2) a
persistent object storage for applications, and 3) as a communication medium for
a wide range of applications. what it would basically do is/are:
- accept data feeds from client and coat them in XML, using administrator
exported "handler DTD's" and "conversion DTD's".
- (initially) host static non-rpc'ing XML documents :: like a webserver
- handle tunneling capabilities where direct feeds from app A to app B will be
handled through "channels". all data transmitted, will be coated or wrapped in
XML, and would be parsed/interpreted/executed on the recieving ends. (of course
encryption need not be mentioned... ;-) )
interfacing the xmlgos is trough 2 ways -- interactive sessions (to cater to
scripting languages) and an API which will be developed in languages that will
be making use of the functionality offered by xmlgos.
i am currenlty figuring out the security model, the authentication method, as
well as on how to use SSL in the correct way. i've pretty much figured out the
protocol to be used, as well as very crude DTD's.
if anybody wants to help out or just get more details, i'd love to put what i
have in mind on the list.
have a nice one everyone! =)
oh, and BTW, it's really not just for local RPC. i was initially thinking of it
as a webservice, but then i figured it would be more efficient if it was run as
a standalone server open to all the applications (not only DotGNU apps) on the
local machine and the network.
--
-=[mikhail]=-
aka Dean Michael C. Berris
home +63 49 5680142
work +63 49 5680024
http://free.net.ph/Members/mikhailberis
pgp key ID = 0xF9501761
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d- s:+ a--- C++ UL++ P+ L+++ E- W+ N* o K w--
O---- M- V-- PS+ PE Y+ PGP++ t+ 5 X+ R+ tv+ b++ DI+ D+
G e h! r+ y+
------END GEEK CODE BLOCK------