Flags and Lollipops

Monday, October 31, 2005

.NET & Bioinformatics

Eric Snowdeal recently posted an article about the use of .NET in bioinformatics, which is something that got me thinking. I used Visual Basic .NET a year or two ago to code up the front end to a simplified LIMS (every bioinformatician has to code at least one LIMS in their lifetime) and it was actually quite a pleasant experience. I chose Visual Basic, incidentally, because FOR...NEXT loops bring me back to halcyon days spent writing half-assed text adventures and trying to hack Granny's Garden to print out rude words.

(quick disclaimer: in theory .NET is platform independent and lots of different programming languages can use it. In reality when most people talk about .NET what they mean is Microsoft's implementation on Windows and one of their big three 'Visual' programming languages - Visual C++, Visual Basic and Visual C#. I'm no exception)

In case you haven't really been paying much attention to Windows programming, .NET is a strategy around which Microsoft has been busy recasting its APIs, programming languages and operating systems. Their web page about it has all the marketing crapola that you might expect but .NET basically boils down to: you write programs made up of components that can talk to one another, even over the network.

The .NET framework contains a lot of nice classes that handle XML and connecting to databases, and something like connecting to a web service and printing out a result is actually pretty simple. Visual Studio is the rapid application development (RAD) / code editor that comes with all of the Microsoft programming languages, and it makes designing graphical user interfaces quick and easy.

In the Sys-Con article that Eric links to (server was down when I last checked, Google cache version here though) the author - Christopher Frenz - anticipates a growing need for Windows desktop based bioinformatics applications and suggests that an open source library similar to Bioperl would help .NET programmers meet this need.

I can see an argument that for bioinformatics programs to be more widely used they have to be accessible, and "double click on setup.exe then run the program" is, I guess, a lot more accessible than installing ActiveState Perl and tackling the command line. It's also more inuitive and familiar for most users to press buttons and tick checkboxes than to write command line arguments.

But all that is window dressing (perhaps very useful window dressing, but none the less). I don't see any advantage in using .NET behind the scenes to do any actual analysis or data munging, while there are certainly obvious disadvantages: i.e. Perl, Python and Java are free, already have widespread support in the bioinformatics community and will run almost anywhere.

Why not keep the computation seperate from the presentation and leverage .NET's other strength - its compartmentalized, web service friendly architecture - to access existing scripts written in a more bioinformatician friendly language using SOAP? As an alternative or supplement to web based interfaces .NET applications have something to offer. Accessing a remote web service is literally a one line operation (well, one line after a few clicks). Adding buttons and text boxes is drag n' drop affair. User preferences can be stored in the registry rather than with a transient cookie.

Admittedly this relies on applications being suitable for web services. If there's a lot of computation involved maybe you don't want it all done on your server, especially if there's somebody at the other end of the connection blithely pressing the "Go" button again and again and wondering why nothing is happening...

Comments and trackbacks Feel free to post your comments Blogger Carl Blogger Stew Blogger maximilian Blogger Carl Blogger maximilian Anonymous Anonymous . This post has trackbacks.

Trackbacks:

6 Comments:

At November 01, 2005 2:20 PM, Blogger Carl said...

I used C#.NET to write a sequence-savvy spreadsheet; I'm about to rewrite it in Java, in part because I encountered so much resistance by users to installing the .NET libraries.

 
At November 01, 2005 2:26 PM, Blogger Stew said...

Good point, I forgot about having to install dependencies like .NET and the data source controller on versions of Windows that don't ship with it... so much for one click installs.

 
At November 01, 2005 3:55 PM, Blogger maximilian said...

I don't like .NET. It means leaving behind MacOS users, it means that you have to buy a second machine on your desk for the development of windows clients. It means battling with a whole new world of subsystems, MS-style configurations systems (->registry, DCOM, Active Directory, etc) and yet another programming language. Yet another layer of libraries that change every three years.

Microsoft has a bad reputation for changing their systems every couple of years, it might get better with .NET, but... hey: I have not seen a good argument that .NET can do anything which you couldn't do in Java! I prefer Eclipse to Visual Studio. And I prefer Java: It is older, there is TONS of documentation on Swing now, SUN has a good reputation of not breaking the API and best of all: Everything's free. Is there any good point for .NET?? I don't see it.

 
At November 01, 2005 5:11 PM, Blogger Carl said...

I'd say don't knock it 'til you've tried it. Like you, I prefer Eclipse to VS. But the (C#) language isn't notably different from Java - not much to learn there - and there are minor things about it I prefer - properties are nice. API-wise, it's a less cluttered environment, fresher seeming to me. But because users don't seem to want .NET, I'm sticking with Java. Just not knocking .NET; there's a lot about it I like.

 
At November 03, 2005 11:38 AM, Blogger maximilian said...

There is a lot about .NET that I also like. But .NET is not cross-platform at all. GTK+, QT, FOX, FLTK, any-C++-library is more cross-plattform than .NET.
But there ARE people using MacOS, especially in biology.

It is new, so its API is better. The *ideas* in .NET are good, lets put them into Java, but that doesn't make .NET a good platform yet for real developers in biology. It's a nice example of an up-to-date, well-done API, nice to look at, but not a viable option for developers in the area of biology, as our user base is using too many different operating systems.

 
At April 13, 2006 1:35 PM, Anonymous Anonymous said...

I guess you guys havent heard about OpenSource project called MONO (supported by Novell)? Check it out, it brings all .NET goodies as OpenSource to Linux, MacOsX, Solaris etc. on Intel, AMD, PPC, Sparc. And this stuff works, compile in Linux, run in MacOsX, compile in Windows (VisualStudio or SharpDevelop etc.) run in Linux etc.

Also check out another ingenious OpenSource product, IKVM, that lets you to take you Java .class or .jar and compile it to .NET library (=assembly). I've used it to bring Jakarta.math, Weka, BioJava, EnsemblAPI etc. to .NET world!

Couple of benefits that made me to choose .NET for bioniformatics over Java is: * ECMA standardized .NET architechture (which made MONO project possible, in contrast to closed source Sun propietary Java tech, strange for MS, eh?); 2) Cross-language support (mix'n'match C#, F#, J#, Java, VB, even Python (IronPython), Ruby, Boo, Nemerle, Pascal etc. into one linked application!); 3) In parts more modern language than Java (C -> C++ -> Java -> C#); 4) Very nice IDE (VisualStudio or free VS Express) (though Eclipse is pretty good also); 5) Nice way to develop web-apps (GUI desginers built into IDE); 6) Maybe better performance in the apps than in Java

Just my 2c

 

Post a Comment

<< Home


See all posts from: July 2005 August 2005 September 2005 October 2005 November 2005 December 2005 January 2006 February 2006 March 2006 April 2006 May 2006 June 2006 July 2006 September 2006 October 2006 November 2006 December 2006 January 2007 February 2007 March 2007 April 2007 May 2007 June 2007 July 2007 August 2007 October 2007 November 2007 December 2007 January 2008 February 2008 March 2008 April 2008 May 2008