Plataform Agnostic

  • Thread starter Max André Bündchen
  • Start date
M

Max André Bündchen

Hi,

I'm starting a project that will work in many clients and a requiriment is a plataform agnostic system. The idea behind the project
is a winform client based interface with a webservice communication middle tier.

In .Net 2.0, it's very easy to develop and deploy for Windows. My question is about the initiatives to run complex .Net systems in
agnostic plataform way (like Linux). There's real perspectives to make this work fine (some projects like Mono appear promising in
the short time).

Some resources like WSE 3.0 is not supported by Mono, and the EL shouldn't work too. It's a problem, but I'm thinking in a "pure"
..Net 2.0 system.

I would like some suppositions about that, especially from anyone with an experience with this agnostic frameworks for .Net.

Thanks,

Max
 
G

Greg Young

I have been doing quite a few platform agnostic systems ... if you email me
directly I actually have slides from a presentation that I just did that I
can forward to you.

1) Mono winforms code is not prime time ready.
2) Your unix users will hate the mono winforms code
3) Your mac users will REALLY hate the mono winforms code

When it comes to interfaces I generally steer people towards using the MVC
or MVP pattern, then providing specific interfaces for the platform (i.e.
use GTK# for linux, Cocoa# for Mac, and Winforms for windows). It is a bit
of extra work but the user experience is worth it and of course you gain
better seperation and easy unit testing of the code (which never hurts)

If you are going for one interface, GTK# is probably your best option but I
warn you that many of your average windows users will not like your
interface.

The next thing you have to be very careful about is what assemblies you use.
Many of the assemblies in the framework are not architecturally sound to
become cross platform. The registry functions were a great example of this
as OS X/unix did not have a registry. They have since implemented a registry
class in mono that basically also implements a registry allowing you to use
the registry class.

You also need to be very careful with OS specific items such as filenames.
You should become very familiar with the path class as you will be using it
alot :)

You should also be very careful with interactions between mono and .NET ..
things like serialization may not work. It will work for your own classes,
but likely will not work for framework classes as they have been
whiteboarded and have differring internal representations.

The last thing that you really need to watch out for is leaky abstractions.
Path.GetFile is a great example of a leaky abstraction as it wraps the
FindFirst /Next APIs and exhibits some of the odd behaviors associated with
them (such as 8.3 manipulations and odd wildcard handling)

I would HIGHLY recommend going out and grabbing a copy of

Cross Platform .NET Development (published by APress)

You will quickly find that some of the information is outdated as the mono
project has come a long way since publishing but alot of the information is
still valid. The improtant thing to gain from that book is the cross
platform mentality (i.e. the thinking process that goes into writing cross
platform code).

Also depending on the area of the world you are in, I will be giving this
presentation again in the southern US mid June.

Hope this helps you out a bit

Cheers,

Greg Young
MVP - C#
http://geekswithblogs.net/gyoung
 
M

Max André Bündchen

Hi, Gred. Thaks for the post. If you could send the material to my e-mail, my address is (e-mail address removed).

Max

--

Atenciosamente,

Max André Bündchen
Dpto. de Desenvolvimento
HGM Sistemas de Informática Ltda.
Fone: (51) 3632 2065
http://www.hgm.com.br
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top