DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
The Latest "Software Integration: The Intersection of APIs, Microservices, and Cloud-Based Systems" Trend Report
Get the report
  1. DZone
  2. Software Design and Architecture
  3. Cloud Architecture
  4. Mono and .NET – some things you should be aware of

Mono and .NET – some things you should be aware of

Denzel D. user avatar by
Denzel D.
·
Jun. 08, 10 · Interview
Like (0)
Save
Tweet
Share
7.77K Views

Join the DZone community and get the full member experience.

Join For Free

If you ever thought about cross-platform .NET development, then you probably already know about the Mono Framework – a free, open-source, cross-platform implementation of the .NET Framework. It runs on Windows, Linux and Mac. Considering its base structure, Mono is indeed very similar to .NET, however there are some interesting aspects that developers should be aware of when working with the framework instead of .NET. This list is in no way complete; however, I tried to focus on those elements that are often asked about.

WinAPI

This would actually cut the actual cross-platform part from Mono, since WinAPI is platform-specific. Although there is a way to use native libraries in Mono, this should be avoided to the maximum as long as you plan to use the application on multiple platforms. When it comes to Windows-only development, I’d still recommend using the .NET Framework instead of Mono.

The IDE

Although this shouldn’t be the primary reason for using a specific framework, it is worth mentioning that if you are going to work outside the regular Windows box, chances are you will work with MonoDevelop, once again a free and open-source tool – the official Mono IDE, that, however, doesn’t always has the same capabilities that are present in Visual Studio.  In case you are going to work with Mono in Windows, you have the possibility to use MonoTools to work on your Mono projects directly from Visual Studio, but the solution is not free, and once again, chances are you will be using MonoDevelop.

I do indeed encourage people to work as much with a simple text editor and compile manually, but when it comes to large projects, that is not the way to go. Visual Studio has extensive debugging capabilities, team collaboration tools, database tools, testing tools as well as its UI design tools are somewhat better than those in MonoDevelop.

(MonoDevelop v 2.2 running on Ubuntu)

(Visual Studio 2010 running on Windows 7)

UI Frameworks

When working with user interfaces, don’t expect the UI frameworks to be the same. There is no WPF in Mono (well, even considering its name – Windows Presentation Foundation – there isn’t a similar sub-set of libraries and it is not planned to be present in Mono). There is a somewhat similar to WinForms UI framework – GTK+ that is used in MonoDevelop through GTK#, but its working principles differ from WinForms, so coming from that background will require some additional time learning the particularities of GTK+ UI programming (even with a visual designer present).

No Workflow foundation support in Mono

If you’ve been working with WF (first time released as a part of .NET 3.0), and then decide to migrate to Mono, you will not be able to migrate existing WF solutions simply due to the absence of WF support in Mono. It is planned, however, to add this functionality in one of the next Mono releases.

Mono applications will require Mono Framework

Even considering that Mono is a framework that is based on .NET, when running a Mono application on Windows, don’t expect it to run without the Mono Framework installed, even if you have the latest .NET Framework ready.

This can be considered a drawback, however it makes sense when you take a look at the set of libraries used – Mono pretty much embodies a large number of components that can be used on multiple platforms, therefore it should “adapt” itself to depend as little as possible on a single platform.

Language choices

Currently, Mono only supports C# and VB.NET development (if talking about .NET-languages) right out of the box. You can add F# support, for example, but that will require some additional configuration. There are a bunch of non-.NET languages supported (for example Java and Lua) that can be integrated with Mono, but those will or won’t be of interest to .NET developers. C++ (CLI) support is not present.

Moonlight is not Silverlight, although close

Moonlight is Novell’s implementation of Microsoft Silverlight that should bring the Silverlight experience to Linux boxes. And although it is in continuous development, it lacks some of the Silverlight functionality (for example, DRM) and falls a bit behind the Silverlight updates. For example, Moonlight 2 is an implementation of Silverlight 2 with some parts of Silverlight 3. The most up-to-date version of Silverlight is version 4.

Conclusion

My conclusion to this article is simple – if you plan to switch to Mono or even work with Mono, even coming with solid .NET knowledge, prepare to change a lot of your development principles and dev tool skills. Mono is implementing pretty much the same functionality that is present in .NET - the current release claims to be the same .NET Framework 3.5 (capability-wise) with some lacking subsets (WPF, WF), however due to its cross-platform nature, many of those libraries will be used somewhat different compared to .NET development.

Mono (software) .NET Framework Cross platform Open source Windows Presentation Foundation

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • What Are the Benefits of Java Module With Example
  • Introduction to Spring Cloud Kubernetes
  • The Power of Docker Images: A Comprehensive Guide to Building From Scratch
  • Implementing PEG in Java

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: