Mono kontratakuje

Microsoft .NET umożliwia tworzenie rozbudowanych aplikacji internetowych za pomocą popularnych kompilatorów C/C# czy Visual Basica. Jednak od pewnego czasu coraz głośniej mówi się o alternatywie dla produktu firmy z Redmond. Czy darmowe Mono może już zagrozić potężnemu .NET?

Projekt Mono został zapoczątkowany w połowie 2001 roku za sprawą Novella. Głównym celem firmy było stworzenie darmowego odpowiednika microsoftowej platformy programistycznej.NET Framework dla innych niż Windows systemów operacyjnych. Projektanci i programiści uczestniczący w projekcie doszli do wniosku, że chcąc zapewnić Mono jakiekolwiek szanse na rozwój i upowszechnienie się, muszą zagwarantować przede wszystkim jego jak najlepszą kompatybilność z platformą.NET.

Nie tylko Microsoft

Jeżeli uda się zrealizować to założenie, możliwe będzie przeniesienie tworzonych aplikacji na inne systemy operacyjne nie tylko inżynierom rozpoczynającym nowe projekty, ale również programistom, którzy swoje aplikacje zbudowali już na bazie.NET. To nie lada gratka dla tych, którzy nie chcą wydawać dużych pieniędzy na wdrażanie swoich produktów z wykorzystaniem systemów Windows.

Podobnie jak.NET, „małpka” (mono to po hiszpańsku małpa) umożliwia tworzenie aplikacji w wielu językach programowania dzięki CLR (Common Language Runtime – środowisku uruchomieniowemu). Dwie najważniejsze technologie platformy.NET zostały przeniesione do Mono i są tam obecne pod tymi samymi nazwami. Mowa tutaj o ADO.NET, służącej do komunikacji i obsługi baz danych, oraz ASP.NET, technologii, która zastąpiła starszą ASP, umożliwiającą pisanie aplikacji internetowych. ASP.NET w Mono podzielono na dwie części: Web Forms, pozwalające na prezentację i wymianę danych z użytkownikiem poprzez strony WWW, oraz Web Services, które oferują mechanizmy umożliwiające zdalny dostęp do aplikacji poprzez powszechnie stosowany protokół HTTP.

Mono nie ogranicza się tylko do odwzorowania.NET. Przy współpracy z innymi zespołami tworzącymi aplikacje typu Open Source powstały narzędzia dające znacznie więcej możliwości konstruowania oprogramowania zarówno serwerowego, jak i klienckiego, niż oferuje firma Microsoft. Jednak najważniejszą zaletą Mono jest możliwość tworzenia i uruchamiania powstałych aplikacji na wielu platformach systemowych oraz sprzętowych. Mono działa pod Linuksem, Windows, Solarisem i Mac OS-em na takich procesorach, jak Intel, AMD, PowerPC, StrongARM.

Co programować na Mono

Możliwości jest co najmniej tyle samo, ile w przypadku.NET Framework. Platforma Mono służy zarówno do pisania aplikacji klienckich, jak i serwerowych. Technologia.NET jest stosowana głównie do tworzenia aplikacji działających po stronie serwera, znakomicie zastępując ASP, Servlety czy też różnego rodzaju COM-y (Component Object Model – standard komponentów obiektowych), które pisano w celu rozszerzenia bardzo ograniczonej funkcjonalności języków skryptowych. Na podstawie tych obserwacji nietrudno zgadnąć, że aplikacje, które powstaną na Mono, będą również wszelkiego rodzaju rozwiązaniami serwerowymi, takimi jak sklepy internetowe, portale, wewnętrzne systemy korporacyjne, a nawet systemy do obsługi klientów w bankach. Do tej pory nie było sensownej alternatywy dla Javy i jej wirtualnej maszyny, jeżeli pisany program miał działać na wielu systemach operacyjnych. Pod względem liczby baz danych, z którymi można się połączyć za pomocą architektury ADO.NET, Mono jest zdecydowanie lepszym narzędziem niż.NET. Dzięki komunikacji z MySQL, PostgreSQL czy SQL Lite, używając Mono, można pisać programy na tanie lub darmowe bazy, z których często korzystają małe i średnie firmy. Nie zabrakło też możliwości podłączenia aplikacji tworzonych w Mono do wydajnych baz danych Oracle’a czy IBM DB2, wykorzystywanych głównie przez duże korporacje, co umożliwia implementację modułów dla systemów istniejących już w firmach.

Mono to jednak nie tylko platforma dla aplikacji serwerowych – możemy na niej pisać wszelkiego rodzaju programy dla stacji roboczych, począwszy od aplikacji biurowych, a na grach wykorzystujących akcelerację grafiki OpenGL skończywszy.

Zaawansowanie implementacji klas Mono vs. .NET Framework
Kompatybilność z.NETLiczba elementów pozostałych do przygotowaniaLiczba elementów dodatkowych, których nie ma w.NETLiczba elementów ze znanymi błędamiLiczba pominiętych elementów
Microsoft.CSharp91%2000
Microsoft.VisualBasic95%813821119
Mono.CSharp.Debugger*n.d.n.d.n.d.n.d.n.d.
System98%353110
System.Data96%820140
System.IO99%6150
System.Net98%15100
System.Runtime.InteropServices95%773760
System.Runtime.Serialization100%0000
System.Runtime.Serialization.Formatters.Soap97%1100
System.Security.Cryptography100%0000
System.Web91%240160
System.Web.Services100%0000
System.Web.UI99%11090
System.Windows.Forms69%17701722482258
System.Xml99%2070
System.Xml.Schema100%0010
System.Xml.Serialization98%15040
System.Xml.XPath100%0010
System.Xml.Xsl99%1000
* – brak odpowiednika w Microsoft.NET; n.d. – nie dotyczy
0
Zamknij

Choć staramy się je ograniczać, wykorzystujemy mechanizmy takie jak ciasteczka, które pozwalają naszym partnerom na śledzenie Twojego zachowania w sieci. Dowiedz się więcej.