473,396 Members | 1,891 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

Plataform Agnostic

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
May 31 '06 #1
2 1336
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
"Max André Bündchen" <no****@microsoft.com> wrote in message
news:Og*************@TK2MSFTNGP02.phx.gbl...
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

May 31 '06 #2
Hi, Gred. Thaks for the post. If you could send the material to my e-mail, my address is ma***********@yahoo.com.br.

Max

--

Atenciosamente,

Max André Bündchen
Dpto. de Desenvolvimento
HGM Sistemas de Informática Ltda.
Fone: (51) 3632 2065
http://www.hgm.com.br
"Greg Young" <dr*******************@hotmail.com> escreveu na mensagem news:ed**************@TK2MSFTNGP04.phx.gbl...
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
"Max André Bündchen" <no****@microsoft.com> wrote in message news:Og*************@TK2MSFTNGP02.phx.gbl...
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


Jun 1 '06 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Zunbeltz Izaola | last post by:
Hi I am using wxPython and i want to have some code plataform dependent. Is it possible? I can't find any information about this in the net. TIA Zunbeltz --
4
by: Rasjid Wilcox | last post by:
I am wanting to write a database application using Python. I want it to be GUI agnostic. The GUI will probably be Python/wxPython, but I would also like the option of a Webbased (PHP?) gui, and...
7
by: Chakra | last post by:
I have been designing my ASP.NET forms by just placing the controls on the form. However, i noticed that some people used a HTML table as the parent control, and then placed the ASP.NET server...
3
by: brian.f.oneil | last post by:
I need to be able to read some element values and populate some element values for some XML documents submitted to a service, but I can not predict the NameSpace in the documents. I have been...
196
by: Don | last post by:
I realize that this may sound like a troll but it is not intended to be. I haven't been reading this group but I've seen a number of vociferious postings lately saying that "vb dotnet doesn't...
12
by: pantagruel | last post by:
Hi, I'm thinking of making a WScript based JavaScript library, I can think of some specific non-browser specific scripting examples that should probably make it in, like Crockford's little...
4
by: jorpheus | last post by:
OK, that sounds stupid. Anyway, I've been learning Python for some time now, and am currently having fun with the urllib and urllib2 modules, but have run into a problem(?) - is there any way to...
1
by: Ivan Ven Osdel | last post by:
>----- Original Message ----- Here's a function I wrote for checking remote or local file existence. It works for me but admittedly I haven't tested many cases with it. Also its currently...
1
by: leonluis | last post by:
Hi, I'm currently in design of my first mobile aplication that has to run in 3 diferent plataforms (Blackberry, Symbian and Windows Mobile), I've checking my options and I'm inclined to chose Perst...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.