Remarks about Mono.

Note: Isis2 can be compiled and used on Linux under the Mono framework. The easiest thing to do is to just build the source at the same time that you compile your application, although mcs can also create a .dll file that can be linked to your .NET C#, IronPython or C++/CLI application. Note that whereas .NET offers something like 40 languages, all of which can call into Isis, Mono has a smaller range of supported languages (the three just noted). Thus Linux users must either work in one of these languages, or build small stand-alone Isis-based services that offer remote-callable interfaces, which can then be called from languages like C or standard Java. Overheads of doing this are actually pretty low and we think the approach is quite reasonable. Of course you would still have to use C#, C++ or IronPython to build those services. Also, notice that I said "IronPython" and C++/CLI. The point is that the .NET versions of Python and C++ aren't completely identical to the stand-alone Python and C++ compilers, and also they compile down to .NET byte code. Right now, this is how you need to work if you plan to use Isis2 from Python or C++.

In C#, the MonoDevel tool is our first choice for editing and debugging. Make sure it knows how to find the Mono libraries (in bash, export PATH=$PATH,where-you-put-monos-libraries). These will be files with .dll extensions. MonoDevel is a bit tricky to install, so don't panic if it can't find the basic C-sharp dlls or some other basic, necessary component the first time you run it. Just stare at the error message, figure out what seems to be missing, track it down, and then give MonoDevel the path name to find it.

Isis avoids use of string host names (on Mono, the .NET library version of the DNS seems buggy and we've had problems when concurrent calls to the DNS occur -- they often hang). So as much as possible, Isis2 won't use string names unless you force it to, and we prefer to just work with numeric IPv4 addresses throughout. We know how to add support for IPv6 but have yet to run into demand for this, so for now, Isis2 is IPv4 only. But we could add IPv6 for anyone who has a serious need for that option rather easily.

A Cornell PhD student, Qi Huang, created a simple step-by-step instruction set for this and we put it here. Please note that on some machines, there is a magic incantation required to identify IP multicast-enabled interfaces. We've included the two lines Qi uses on Cornell's clusters, but you need to find out (1) if such a check is needed on your system, and (2) if so, what the exact rule is on your machines. In fact on most clusters this is not required.

Last edited Mar 5, 2016 at 9:33 PM by birman, version 3