thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Bennett" <da...@yorkage.com>
Subject RE: Thrift as an in-process server?
Date Wed, 16 Sep 2015 04:53:58 GMT
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:jensgeyer@hotmail.com] 
Sent: Tuesday, 15 September 2015 5:10 PM
To: user@thrift.apache.org
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: user@thrift.apache.org
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:edlinuxguru@gmail.com]
Sent: Tuesday, 15 September 2015 11:07 AM
To: user@thrift.apache.org
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 <david@yorkage.com> 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:jensgeyer@hotmail.com]
> Sent: Tuesday, 15 September 2015 7:20 AM
> To: user@thrift.apache.org
> 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: user@thrift.apache.org
> 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
>
>
>



Mime
View raw message