You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by James Gibbs <ja...@hotmail.com> on 2015/10/25 18:46:21 UTC

Native .NET

Hi there 


I'm looking to understand more about the .NET implementation for Ignite.


The .NET code appears to require a JVM and C++ code to talk through JNI, so I am guessing that the main work load is still performed by Java code and hence .NET code suffers from marshalling overheads etc.


Is this the case ?


Thanks in advance

James

Re: Native .NET

Posted by jamesgibbs100 <ja...@hotmail.com>.
Thank you both for your responses. I have a better understanding of the stack
and its characteristics now.

James






--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Native-NET-tp1689p1706.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Re: Native .NET

Posted by vkulichenko <va...@gmail.com>.
ignite_mk,

I don't think you have to package it, it's just a requirement for
environment, similar to .NET runtime. Ignite can work on any version of JDK7
or JDK8, there is no reason to upgrade each time new Java is released.

-Val



--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Native-NET-tp1689p2404.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Re: Native .NET

Posted by ignite_mk <JU...@gmail.com>.
As i mentioned, the main concern is the requirement of having a JRE on the
client (windows desktop). If it was native, we wouldn't have to worry about
packaging that JRE and upgrading it whenever there is an updated version of
Java.



--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Native-NET-tp1689p2400.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Re: Native .NET

Posted by vkulichenko <va...@gmail.com>.
ignite_mk,


ignite_mk wrote
> Based on what i understand, the .NET client(windows desktop for example),
> needs a JVM runtime installed?
> 
> This may not be a good idea, in my opinion. This will cause a lot of
> maintenance (think upgrades) and security concerns. 
> 
> Please advise if there is an "option" for keeping this a "pure" native
> .NET implementation, without any Java runtime dependency.

No, there is no such option. Such an implementation will obviously require
tons of new code that has to be maintained separately, so it doesn't make
much sense. Could you please describe your concerns in more details? What is
wrong with the current implementation from your point of view?

Also, please properly subscribe to the mailing list so that community
receives email notifications. Just follow this simple instruction:
http://apache-ignite-users.70518.x6.nabble.com/mailing_list/MailingListOptions.jtp?forum=1

-Val



--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Native-NET-tp1689p2374.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Re: Native .NET

Posted by Dmitriy Setrakyan <ds...@apache.org>.
As far as I can tell, the only potential overhead in Ignite .NET support
vs. Java is the JNI layer. However, we have been testing it internally, and
in distributed tests (2+ nodes) we have not seen any performance
degradation due to JNI. The reason is that JNI overhead becomes largely
negligible compared to the network I/O.

D.

On Mon, Oct 26, 2015 at 4:26 AM, Vladimir Ozerov <vo...@gridgain.com>
wrote:

> James,
>
> Yes, you described Ignite.NET architecture correctly. It provides native
> .NET API and marshalling layer. All infrastructure-related work is
> performed by C++/Java code.
>
> Vladimir.
>
> On Mon, Oct 26, 2015 at 12:52 PM, jamesgibbs100 <jamesgibbs100@hotmail.com
> > wrote:
>
>> Vladimir,
>>
>> Thank you for taking the time to get back to me.
>>
>> Referring to :
>>
>> http://apache-ignite-developers.2346864.n4.nabble.com/C-and-NET-td2403.html
>>
>> /"These are not basic client APIs, but rather is a full-blown in-memory
>> data
>> fabric for .NET and C++ users. The goal is that users of these languages
>> will not have to write any Java code at all in order to use any Apache
>> Ignite features"/
>>
>> From the above, I was expecting .NET to have a 100% native implementation,
>> however, reviewing the codebase led me to understand .NET was delegating
>> through JNI to a JVM for core functionality.
>>
>> In a trivial case, a single node launched in embedded mode, I was
>> surprised
>> to see the code attempted to create a JVM when I had no intention of using
>> one - this was my lack of understanding of the architecture.
>>
>> So, my question whilst motivated by performance, is more concerned with
>> confirming the above description of how the .NET client is implemented.
>>
>> Is the above assumption/approximation correct ?
>>
>> Thanks again
>> James
>>
>>
>>
>>
>> Vladimir Ozerov wrote
>> > James,
>> >
>> > My last statement is a bit confusing. What I wanted to say is that
>> > normally
>> > both Java and .Net spend comparable time on serialization.
>> >
>> > On Mon, Oct 26, 2015 at 10:38 AM, Vladimir Ozerov <
>>
>> > vozerov@
>>
>> > >
>> > wrote:
>> >
>> >> James,
>> >>
>> >> Ignite is distributed application and both Java and .Net require
>> >> marshalling to pass data between nodes. Therefore, in the vast majority
>> >> of
>> >> scenarios .Net has marshalling overhead comparable to Java version.
>> >>
>> >> Vladimir.
>> >>
>> >> On Sun, Oct 25, 2015 at 8:46 PM, James Gibbs <
>>
>> > jamesgibbs100@
>>
>> > >
>> >> wrote:
>> >>
>> >>> Hi there
>> >>>
>> >>> I'm looking to understand more about the .NET implementation for
>> Ignite.
>> >>>
>> >>> The .NET code appears to require a JVM and C++ code to talk through
>> JNI,
>> >>> so I am guessing that the main work load is still performed by Java
>> code
>> >>> and hence .NET code suffers from marshalling overheads etc.
>> >>>
>> >>> Is this the case ?
>> >>>
>> >>> Thanks in advance
>> >>> James
>> >>>
>> >>
>> >>
>>
>>
>>
>>
>>
>> --
>> View this message in context:
>> http://apache-ignite-users.70518.x6.nabble.com/Native-NET-tp1689p1699.html
>> Sent from the Apache Ignite Users mailing list archive at Nabble.com.
>>
>
>

Re: Native .NET

Posted by Vladimir Ozerov <vo...@gridgain.com>.
James,

Yes, you described Ignite.NET architecture correctly. It provides native
.NET API and marshalling layer. All infrastructure-related work is
performed by C++/Java code.

Vladimir.

On Mon, Oct 26, 2015 at 12:52 PM, jamesgibbs100 <ja...@hotmail.com>
wrote:

> Vladimir,
>
> Thank you for taking the time to get back to me.
>
> Referring to :
> http://apache-ignite-developers.2346864.n4.nabble.com/C-and-NET-td2403.html
>
> /"These are not basic client APIs, but rather is a full-blown in-memory
> data
> fabric for .NET and C++ users. The goal is that users of these languages
> will not have to write any Java code at all in order to use any Apache
> Ignite features"/
>
> From the above, I was expecting .NET to have a 100% native implementation,
> however, reviewing the codebase led me to understand .NET was delegating
> through JNI to a JVM for core functionality.
>
> In a trivial case, a single node launched in embedded mode, I was surprised
> to see the code attempted to create a JVM when I had no intention of using
> one - this was my lack of understanding of the architecture.
>
> So, my question whilst motivated by performance, is more concerned with
> confirming the above description of how the .NET client is implemented.
>
> Is the above assumption/approximation correct ?
>
> Thanks again
> James
>
>
>
>
> Vladimir Ozerov wrote
> > James,
> >
> > My last statement is a bit confusing. What I wanted to say is that
> > normally
> > both Java and .Net spend comparable time on serialization.
> >
> > On Mon, Oct 26, 2015 at 10:38 AM, Vladimir Ozerov <
>
> > vozerov@
>
> > >
> > wrote:
> >
> >> James,
> >>
> >> Ignite is distributed application and both Java and .Net require
> >> marshalling to pass data between nodes. Therefore, in the vast majority
> >> of
> >> scenarios .Net has marshalling overhead comparable to Java version.
> >>
> >> Vladimir.
> >>
> >> On Sun, Oct 25, 2015 at 8:46 PM, James Gibbs <
>
> > jamesgibbs100@
>
> > >
> >> wrote:
> >>
> >>> Hi there
> >>>
> >>> I'm looking to understand more about the .NET implementation for
> Ignite.
> >>>
> >>> The .NET code appears to require a JVM and C++ code to talk through
> JNI,
> >>> so I am guessing that the main work load is still performed by Java
> code
> >>> and hence .NET code suffers from marshalling overheads etc.
> >>>
> >>> Is this the case ?
> >>>
> >>> Thanks in advance
> >>> James
> >>>
> >>
> >>
>
>
>
>
>
> --
> View this message in context:
> http://apache-ignite-users.70518.x6.nabble.com/Native-NET-tp1689p1699.html
> Sent from the Apache Ignite Users mailing list archive at Nabble.com.
>

Re: Native .NET

Posted by jamesgibbs100 <ja...@hotmail.com>.
Vladimir,

Thank you for taking the time to get back to me.

Referring to :
http://apache-ignite-developers.2346864.n4.nabble.com/C-and-NET-td2403.html

/"These are not basic client APIs, but rather is a full-blown in-memory data 
fabric for .NET and C++ users. The goal is that users of these languages 
will not have to write any Java code at all in order to use any Apache 
Ignite features"/

>From the above, I was expecting .NET to have a 100% native implementation,
however, reviewing the codebase led me to understand .NET was delegating
through JNI to a JVM for core functionality.

In a trivial case, a single node launched in embedded mode, I was surprised
to see the code attempted to create a JVM when I had no intention of using
one - this was my lack of understanding of the architecture.

So, my question whilst motivated by performance, is more concerned with
confirming the above description of how the .NET client is implemented.

Is the above assumption/approximation correct ?

Thanks again
James




Vladimir Ozerov wrote
> James,
> 
> My last statement is a bit confusing. What I wanted to say is that
> normally
> both Java and .Net spend comparable time on serialization.
> 
> On Mon, Oct 26, 2015 at 10:38 AM, Vladimir Ozerov &lt;

> vozerov@

> &gt;
> wrote:
> 
>> James,
>>
>> Ignite is distributed application and both Java and .Net require
>> marshalling to pass data between nodes. Therefore, in the vast majority
>> of
>> scenarios .Net has marshalling overhead comparable to Java version.
>>
>> Vladimir.
>>
>> On Sun, Oct 25, 2015 at 8:46 PM, James Gibbs &lt;

> jamesgibbs100@

> &gt;
>> wrote:
>>
>>> Hi there
>>>
>>> I'm looking to understand more about the .NET implementation for Ignite.
>>>
>>> The .NET code appears to require a JVM and C++ code to talk through JNI,
>>> so I am guessing that the main work load is still performed by Java code
>>> and hence .NET code suffers from marshalling overheads etc.
>>>
>>> Is this the case ?
>>>
>>> Thanks in advance
>>> James
>>>
>>
>>





--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Native-NET-tp1689p1699.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Re: Native .NET

Posted by Vladimir Ozerov <vo...@gridgain.com>.
James,

My last statement is a bit confusing. What I wanted to say is that normally
both Java and .Net spend comparable time on serialization.

On Mon, Oct 26, 2015 at 10:38 AM, Vladimir Ozerov <vo...@gridgain.com>
wrote:

> James,
>
> Ignite is distributed application and both Java and .Net require
> marshalling to pass data between nodes. Therefore, in the vast majority of
> scenarios .Net has marshalling overhead comparable to Java version.
>
> Vladimir.
>
> On Sun, Oct 25, 2015 at 8:46 PM, James Gibbs <ja...@hotmail.com>
> wrote:
>
>> Hi there
>>
>> I'm looking to understand more about the .NET implementation for Ignite.
>>
>> The .NET code appears to require a JVM and C++ code to talk through JNI,
>> so I am guessing that the main work load is still performed by Java code
>> and hence .NET code suffers from marshalling overheads etc.
>>
>> Is this the case ?
>>
>> Thanks in advance
>> James
>>
>
>

Re: Native .NET

Posted by Vladimir Ozerov <vo...@gridgain.com>.
James,

Ignite is distributed application and both Java and .Net require
marshalling to pass data between nodes. Therefore, in the vast majority of
scenarios .Net has marshalling overhead comparable to Java version.

Vladimir.

On Sun, Oct 25, 2015 at 8:46 PM, James Gibbs <ja...@hotmail.com>
wrote:

> Hi there
>
> I'm looking to understand more about the .NET implementation for Ignite.
>
> The .NET code appears to require a JVM and C++ code to talk through JNI,
> so I am guessing that the main work load is still performed by Java code
> and hence .NET code suffers from marshalling overheads etc.
>
> Is this the case ?
>
> Thanks in advance
> James
>