You could be right. 

On the face of it, C# can easily generate a DLL with a single entry point like 
Start(), using C++/CLI, which could be called from any language (that can call 
DLLs). You wouldn't even need any arguments: named/anonymous pipes for Windows 
or IPC for Unix, avoiding having to use sockets and the URL address space.

Passing memory blocks from one VM to another is probably harder than pipes.

Yes, lots of choices but also lots of time chasing things that might not work. 
Hence my question here.

Regards
David M Bennett FACS

Andl - A New Database Language - andl.org


-----Original Message-----
From: Jens Geyer [mailto:[email protected]] 
Sent: Tuesday, 15 September 2015 5:10 PM
To: [email protected]
Subject: AW: Thrift as an in-process server?

You will have a hard time to get C# and Java into one single process, to begin 
with.

We have a scenario where we have a C# process calling a Win32 Delphi process. 
Although in this case we use COM interop for historical reasons, I personally 
made good experiences with named pipes on Windows.

Another possibility could involve shared memory, by means of memory-mapped 
files. If it is really one single process, calling a DLL function and passing a 
pointer and a buffer size is the most performant way.

I also used Thrift in combination with MQ systems, there are some examples 
under /contrib. The oneway keyword is very useful here.

The point here is, there is a plethora of possibilities, including the disk 
file approach already mentioned.

JensG
________________________________
Von: David Bennett
Gesendet: 15.09.2015 05:57
An: [email protected]
Betreff: RE: Thrift as an in-process server?

Thanks for the response, but I'm not sure I understand.

By "server" I just mean the provider of the RPC service, and "client" is the 
consumer or caller of that service. The Thrift generated code is structured 
like that.

I'm asking about the possibility of building an application as a single process 
containing both Thrift client and server, to avoid the problems of starting up 
separate processes.

Yes, a buffer sounds good, but that still leaves out quite a few details, like 
how to get it across the language boundary.

Regards
David M Bennett FACS

Andl - A New Database Language - andl.org


-----Original Message-----
From: Edward Capriolo [mailto:[email protected]]
Sent: Tuesday, 15 September 2015 11:07 AM
To: [email protected]
Subject: Re: Thrift as an in-process server?

I do not think you even need to server. You simply use thrift to write objects 
to a buffer/disk/ipc socket, and use thrift on the other side to read it back.

On Mon, Sep 14, 2015 at 8:03 PM, David Bennett <[email protected]> wrote:

> Thanks for your answer.
>
> Yes, I could see that it must be 'possible' from reading bits of the 
> source code. What I can't tell is whether it's just a latent 
> possibility lacking some key bits of code, or whether it's an actual 
> possibility if I only knew how.
>
> Assume (a) a server in either Java or C#. Assume (b) a client in any 
> of Java, C#, C++ or Ruby. How would you go about 'easily passed to the 
> other side' for some combination of (a) and (b)?
>
> Regards
> David M Bennett FACS
>
> Andl - A New Database Language - andl.org
>
>
> -----Original Message-----
> From: Jens Geyer [mailto:[email protected]]
> Sent: Tuesday, 15 September 2015 7:20 AM
> To: [email protected]
> Subject: Re: Thrift as an in-process server?
>
> > For a mobile or desktop app there is no particular benefit in 
> > running a socket-based server
>
> Sure. And on top of it, you are by no means bound to sockets. The 
> modular protocol/transport stack makes it possible, that's one of the 
> really nice things about Thrift.
>
> For example, a stream transport is supported by a number of languages.
> It basically serializes and deserializes the data into and from a 
> variable-sized buffer, not much magic behind. The buffer can be passed 
> easily to the other side, and vice versa.
>
> Have fun,
> JensG
>
>
> -----Ursprüngliche Nachricht-----
> From: David Bennett
> Sent: Monday, September 14, 2015 3:57 AM
> To: [email protected]
> Subject: Thrift as an in-process server?
>
> Is it possible to use Thrift for in-process cross-language marshalling?
>
> For a mobile or desktop app there is no particular benefit in running 
> a socket-based server, and it's much easier to install and start up an 
> app that makes an in-process call to a dynamic library.
>
> So is this possible?
>
> Regards
> David M Bennett FACS
>
> Andl - A New Database Language - andl.org
>
>
>


Reply via email to