You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@reef.apache.org by "Markus Weimer (JIRA)" <ji...@apache.org> on 2015/01/20 00:42:34 UTC

[jira] [Commented] (REEF-51) Add support for .NET Drivers and Tasks

    [ https://issues.apache.org/jira/browse/REEF-51?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14283186#comment-14283186 ] 

Markus Weimer commented on REEF-51:
-----------------------------------

This raises the question of where it shall live relative to the java sources we have today.

I propose the following organization, inspired by [Apache Avro|http://svn.apache.org/viewvc/avro/trunk/], which is also implemented in several languages:

  * {{/lang/java}} is where the current code goes
  * {{/lang/cs}} is where the c# code goes
  * {{/lang/cpp}} is where the C++ code for the bridge goes

All project-level files ({{LICENSE, README, BUILD, ...}}) shall stay in {{/}}. Also, it will probably be good to have a build script in SH and PowerShell that orchestrates the invocation of `mvn` and `msbuild` in just the right order, as that matters here.

> Add support for .NET Drivers and Tasks
> --------------------------------------
>
>                 Key: REEF-51
>                 URL: https://issues.apache.org/jira/browse/REEF-51
>             Project: REEF
>          Issue Type: Improvement
>          Components: REEF
>            Reporter: Markus Weimer
>            Assignee: Beysim Sezgin
>
> [~beysims], [~juliaw], [~tmajest] and [~yingdachen] have developed a .NET API for REEF to allow applications to mix-and-match JVM and CLR code: The application code in a Driver can be either CLR or Java, while the application can consist of any mixture of CLR and JVM Evaluators.
> This issue is to track our progress in contributing this code to the REEF project. The remainder of this descriptions provides an overview of the work, which consists of several key components, in addition to a complete mirror of the REEF API into a C# class library:
>   # Tang.NET: A complete implementation of Tang for the CLR. By design, it is capable of creating and validating configurations in a cross-language manner. That is: Given a {{Configuration}} and {{ClassHierarchy}} from C#, Tang/Java can validate whether e.g. a {{Task}} can be instantiated. Of course, the same is true with the roles of C# and Java being reversed.
>   # Wake.NET: Wake/Java took great inspiration from the Rx framework in .NET. Wake.NET uses this "happy coincidence" to provide event remoting between Wake/Java and Rx on the CLR. This allows events to originate on the JVM and be processed by a (potentially remote) CLR.
>   # A complete Evaluator implementation in .NET: This provides the runtime for {{Tasks}} implemented for .NET without any local overheads: The only thing running in a container is this CLR process, no Java is necessary there.
>   # An event bridge for the Driver: The core of the Driver is Java even when executing event handlers written in .NET. The Java and .NET portions of a Driver co-exist within the same Container (e.g. a YARN Application Master). The bridge performs event and API marshalling between these two worlds.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)