Welcome!

Linux Authors: Roger Strukhoff, Pat Romanski, Elizabeth White, Mark Cravotta, Liz McMillan

Related Topics: Linux

Linux: Article

Migrating .NET Applications to the Linux Platform

A long-term development and porting solution

The move to Enterprise Linux is accelerating. Enterprise Linux, provided by RedHat, SuSE, and a number of open source projects, supports clustering, load balancing, and high availability. Yahoo is using Linux with the MySQL open source database, the fastest growing database in the industry, and Hewlett Packard recently announced support for an enterprise stack of Linux, JBoss, and a MySQL database.

While companies are motivated to migrate to Linux, they are encountering significant obstacles. These include running the thousands of lines of existing Visual Basic .NET and C# code on Linux as well as implementing a full-running system without interrupting productivity. According to Forrester, more than half of today's enterprise development activity is being done in .NET, and many firms are experiencing a .NET barrier in moving to Linux.

The Horrors of Porting

Until recently, porting .NET Web applications and Web services to Linux has required major investments in Linux and J2EE skills, tools and resources, as well as delayed time-to-market. Linux migration could be done by moving to JSPs and Java on a Tomcat server. The ASP.NET code would be ported to JSPs and the C# code to Java classes. However, the .NET development team had to contend with a new development environment and the challenge of learning the JSP programming model. On top of this, components in the ASP.NET model, such as Web controls and ADO.NET, do not have simple equivalents in the J2EE world. The .NET-J2EE benchmarks have shown that equivalent J2EE front-end code has significantly more lines of code (LOC) than does a .NET implementation.

The Promise of Mono

The open source Mono project gives .NET developers a much more viable solution to the problem. With Novell's release of Mono 1.0, developers can use a .NET platform on Linux for their ASP.NET and C# code. Mono developers remain in the .NET world and are able to deploy and run existing code with little or no changes. In fact, the city of Munich has used Mono to migrate their ASP.NET and Web services applications to deploy on 300 Linux servers. Mono provides the Linux .NET developer with an implementation of the standard CLI runtime, a C# compiler, and implementations of the .NET APIs including System, ASP.NET, and ADO.NET classes. Mono provides additional specific APIs that include bindings for the GTK UI toolkit and graphics libraries.

ASP.NET and ADO.NET on J2EE

Mainsoft's Visual MainWin for the J2EE platform (see Figure 1) delivers the .NET-to-Linux migration on enterprise-ready J2EE application servers such as open source JBoss as well as BEA WebLogic and IBM WebSphere.

By delivering the Mono .NET APIs for ASP.NET and ADO.NET classes on the J2EE platform, Mainsoft enables enterprises with a large staff of Microsoft developers to write Web applications and Web services in C# or Visual Basic .NET and deploy them on stable and scalable J2EE application servers.

How Visual MainWin Works

Visual MainWin compiles Microsoft Intermediate code to standard Java bytecode (see Figure 2). The Mono .NET classes are rehosted on standard J2EE application servers. This means that a .NET program, for example, ASP.NET and C# or Visual Basic.NET code, will be deployed as a pure Java application. The Visual MainWin programming model provides seamless integration with Java classes, which are exposed to the .NET programmer as .NET classes. Back-end EJBs are accessed simply as .NET classes, without the .NET programmer having to deal with the complicated mechanics of J2EE EJB lookup and RMI. Since Mono does not yet support the .NET Enterprise Services, transactional components can be implemented as EJBs in Java, and accessed seamlessly from an ASP.NET front end.

Visual MainWin provides complete integration with the Microsoft Visual Studio .NET development environment, allowing .NET developers to remain within their familiar environment. The developer simply builds a .NET project configured for J2EE servers; the complete build process from Microsoft C# compilation through binary compilation to Java bytecode validation of Java references, as well as the packaging as J2EE .jar and .war files, is performed within Visual Studio. Application deployment on J2EE servers is managed, again, from within Visual Studio .NET. The Visual MainWin integrated debugger enables C# or VB.NET programmers to debug applications running in the J2EE application server from the .NET source code.

Sustained Development

As an integrated Visual Studio development environment, Visual MainWin can be used as a strategic, long-term development and porting solution for the Linux platform. It allows companies with Microsoft resources to develop and maintain their applications across the .NET and Linux platforms, boost developer productivity, and speed time to deployment, all of which are key factors in the Linux TCO equation.

More Stories By Yaacov Cohen

Yaacov Cohen is the president and CEO of Mainsoft Corporation.

Comments (1) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Gary 11/06/04 12:40:57 AM EST

So let me try and understand this. A Visual Studio user can write an ASP.NET application in C# and run it on a Linux server? So, can it be concluded that Linux running MySQL and Apache web services can host an ASP.NET C# based web site?