Browse DevX
Sign up for e-mail newsletters from DevX


Almost Too Easy! Creating Cross-Platform ASP.NET Applications Using Mono : Page 3

Running basic ASP.NET applications on other platforms using Novell's open-source Mono project is as easy as copying the files to the new system. For ASP.NET 1.x authors, cross-platform code is fast becoming a reality.




Building the Right Environment to Support AI, Machine Learning and Deep Learning

Testing on Linux, Windows
A single "Run" button click in Visual Studio compiles the code, copies everything to the proper virtual directory, and loads the ASP.NET page into a browser. VS compiles the server-side C# code into a .dll file and places that in a directory named bin below the application root. Visual Studio provides full debugging support including the ability to set breakpoints, examine variables, and step through code.

Testing the application on the Linux side couldn't be easier. The simplest way to move the application over from Windows is to first copy the entire application virtual directory over to a shared drive. Then, from the Linux box, connect to the shared drive and copy the files to a working directory. On Linux, I created a directory named ASP in my Home directory and copied the files there. Then from a terminal window start up the XSP server with the command:

mono /usr/bin/xsp.exe

That command launches the Mono Web server application, listening on the default port of 8080. To view the application you launch a browser and browse to the URL for your local server and the appropriate path and page, for example:


Figure 2. The Family Calendar Application on Mono: As you can see, the application looks essentially identical when compiled and run with Mono.
The most amazing part of the entire process is the fact that you don't have to recompile anything. It just works! Well, almost works. While I wasn't able to get the app to work exactly as I wanted—the LinkButton for the day number doesn't appear in the current date cell of the calendar, so you can't click to make the event details display for the current day—everything else works (see Figure 2). That single difference is apparently a bug in the calendar control. I could still make the details DataGrid show up by using a JavaScript URL that causes a postback, sending the value that the LinkButton would normally send to the server (see the URL shown in Figure 2). After reporting the issue to the Mono developers list I was instructed to file a bug report. Hopefully this will be fixed in a future release. One temporary workaround would be to show the actual events only in the DataGrid and not in the calendar. Other than this minor and probably temporary glitch, the degree of compatibility is extremely high. I made no changes to the code to run it on both platforms.

Giant Steps
Building cross-platform ASP.NET applications has taken a giant step forward with the release of Mono version 1.0. While it's not (yet) one hundred percent compatible, it's certainly close. Future releases of Mono will add increased VB.NET support along with a host of other features. For more information on the direction of Mono, explore the Mono Website and check out the roadmap.

Mono makes it possible for companies or departments looking to implement a Web-based application using ASP.NET on non-Microsoft platforms. What's missing at the moment for full development on Linux is a good competitor to Microsoft's Visual Studio product. MonoDevelop is a port of the open source Windows-based SharpDevelop project. In its current release it does not have a graphical user interface designer, but the project developers plan to add one in the future. Until that happens though, if you have access to Visual Studio, you can use the VS designer to design your Web Forms, and then simply copy the code to your Mono project.

Paul Ferrill, based in Chelsea, Alabama, has been writing about computers and software for almost 20 years. He has programmed in more languages than he cares to count, but now leans toward Visual Basic and C#.
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date