Professional Documents
Culture Documents
Xamarin Mono
Program prezentacji
Krtka historia Mono Roadmapa Instalacja (na przykadzie GNU Debian) Przenone biblioteki graficznego interfejsu uytkownika Bazy danych Rne przydatne komponenty, ktre dziaaj w Mono Narzdzia produkcyjne Licencje czyli czy mog zamkn kod mojego programu? Problemy Wnioski kocowe
Drobne rnice w wygldzie aplikacji Wolniejsze dziaanie Niedokadne odwieanie widoku Zablokowana specyficzna funkcjonalno
Unika wywoa funkcji konkretnego systemu operacyjnego (np. WinAPI, WMI) lub zapewni wskazanie zamiennikw (System.Media.SoundPlayer,
#IF UNIX ..... #ENDIF)
Unika stosowania mechanizmw, ktre nie istniej w innych systemach (np. Rejestr Windows) Umoliwia konfiguracj uycia mechanizmw systemowych
(np. Harmonogram zada CRON, wybr przegldarki internetowej) Warto rozway mechanizm pluginw do realizacji okrelonych dziaa na rnych systemach, listowanych i konfigurowanych w funkcji systemu operacyjnego, np. plugin Scheduler, WebBrowser, FileManager.
Stosowa predefiniowane cieki i tam zakada podkatalogi z uwagi na rn ich struktur FS w Windows i Linux
(Desktop, Programs, Personal, DesktopDirectory, ApplicationData, CommonApplicationData, MyPictures, etc.)
Uproszczenie procesu produkcji jeden kod Redukcja czasu potrzebnego na integracj rnych platform Redukcja kosztw zakupu narzdzi Ograniczenie iloci potrzebnej do zdobycia wiedzy specjalistycznej (dokumentacje)
.NET 4.0, WinForms (2.0), ASP.NET (WebForms, MVC2, 3) C#, Java, Boo, Nemerle, VB.NET, Python, PHP, Oberon, JS Firmy / projekty:
Novell, MedTronic, FuturePrice, LindenLab (2nd Life), Skybound, WatzdPrice, ST Microeletronics, Slingshot Software, Metrosharp Corporation, Codice Software, MicroInvest, Artisteer, MindTouch, Medshpere, Volcker Informatik, Quantifi Solutions, Unity Technologies, Versora, Fiducial, Neoware, Fanfare, SplendidCRM, Information Technologi Partners, Devart, VistaDB, Mainsoft, etc.
http://tirania.org/blog/
RAID1, RAID5 dla Linuksa Midnight Commander GNOME GNumeric WINE (wsptwrca) Ximian
(wykupione przez Novell; wiceprezes dziau programistycznego Novell)
Mono roadmapa
Mono roadmapa
The easiest way to describe what Mono currently supports is: Everything in .NET 4.0 except WPF, WWF, and with limited WCF
Mono roadmapa
Mono 3.0 C# Async compiler
Unified C# compiler for all profiles 4.5 Async API Profile Integrated new Microsoft's Open Sourced stacks:
ASP.NET MVC 4 ASP.NET WebPages Entity Framework Razor System.Json (replaces our own)
New High performance Garbage Collector (SGen - with many performance and scalability improvements)
Mono instalacja
Instalacja z repozytoriw
Prosta instalacja:
Stare wydania (Debian Squeeze 2.6, gdy jest 3.0) Nowsze wydania s w repo unstable - ryzyko utraty stabilnoci i bezpieczestwa systemu Pena kontrola nad tym co, gdzie i jak si instaluje Dugotrway proces (3-6 godzin) Skomplikowany proces
Instalacja ze rde
Mono instalacja
apt-get update/upgrade apt-get install gcc make bison gettext fontconfig libpng12-0 libpng12-dev libX11-6 libX11-dev libexif12 sun-java6-jre unzip bzip2 wget build-essential pkg-config libglib2.0-dev libglib2.0-dev libjpeg62-dev libgif-dev libX11-dev libfontconfig1-dev libfreetype6-dev gettext libtool libtiff4 libtiff4-dev apt-get install libgtk2.0 (instaluje stare mono) wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2 tar xjvf libgdiplus-2.10.tar.bz2 > /dev/null ./configure prefix=/opt/mono-2.10.8 make make install wget http://download.mono-project.com/sources/mono/mono-2.10.8.tar.gz tar zxvf mono-2.10.8.tar.gz > /dev/null cd mono-2.10.8 ./configure --prefix=/opt/mono-2.10.8 ./configure --with-large-heap=yes --prefix=/opt/mono-2.10.8 --with-libgdiplus=/opt/mono-2.10.8 with-moonlight=no ake make install echo /opt/mono-2.10.8/lib >> /etc/ld.so.conf ldconfig ln -s /opt/mono-2.10.8/bin/mono /usr/bin/mono ln -s /opt/mono-2.10.8/bin/gmcs /usr/bin/gmcs wget http://download.mono-project.com/sources/mono-basic/mono-basic-2.10.tar.bz2 tar xjvf mono-basic-2.10.tar.bz2 > /dev/null cd mono-basic-2.10 PATH=$PATH:/opt/mono-2.10.8/bin PKG_CONFIG_PATH=/opt/mono-2.10.8/lib/pkgconfig ./configure prefix=/opt/mono-2.10.8 make make install wget http://download.mono-project.com/sources/xsp/xsp-2.10.2.tar.bz2 tar xjvf xsp-2.10.2.tar.bz2 > /dev/null cd xsp-2.10.2 ./configure prefix=/opt/mono-2.10.8 make make install ln -s /opt/mono-2.10.8/bin/xsp2 /usr/bin/xsp2 apt-get install libglade2.0 libglade2-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomeprint2.2-dev libgnomeprintui2.2-dev libpanel-applet2-dev wget http://download.mono-project.com/sources/gtk-sharp212/gtk-sharp-2.12.11.tar.bz2 tar xjvf gtk-sharp-2.12.11.tar.bz2 > /dev/null ./configure prefix=/opt/mono-2.10.8 make make install wget http://download.mono-project.com/sources/mono-addins/mono-addins-0.6.2.tar.bz2 tar xjvf mono-addins-0.6.2.tar.bz2 > /dev/null ./configure prefix=/opt/mono-2.10.8 make make install apt-get install gnome-sharp2 wget http://download.mono-project.com/sources/mono-debugger/mono-debugger-2.10.tar.bz2 tar xjvf mono-debugger-2.10.tar.bz2 > /dev/null ./configure prefix=/opt/mono-2.10.8 make ake install wget http://download.mono-project.com/sources/mono-tools/mono-tools-2.11.tar.bz2 tar xjvf mono-tools-2.11.tar.bz2 > /dev/null ./configure prefix=/opt/mono-2.10.8 make make install touch /etc/ld.so.conf.d/glib.conf gedit /etc/ld.so.conf.d/glib.conf wpis: /usr/lib/cli/glib-sharp-2. /sbin/ldconfig wget http://download.mono-project.com/sources/monodevelop/monodevelop-3.0.3.5.tar.bz2 tar xjvf monodevelop-3.0.3.5.tar.bz2 > /dev/null ./configure prefix=/opt/mono-2.10.8 make make install ln -s /opt/mono-2.10.8/bin/monodevelop /usr/bin/monodevelop Dla Cairo potrzebny jest apt-get install libxt-dev
Mono instalacja
Instalowa zawsze do /opt/mono-ver i dowiza symoblicznie w /usr/bin. Korzyci:
Komponenty (kompilatory, biblioteki) nie bd widoczne w systemie, pki si tego jawnie nie zadeklaruje W razie potrzeby usunicia caoci, wystarczy usun podkatalog /opt/mono... W razie potrzeby wykonania kopii zapasowej rodowiska - wystarczy skopiowa katalog /opt/mono... Skopiowanie rodowiska na inn maszyn sprowadza si do skopiowania na ni katalogu /opt/mono... Mona w ten sposb zainstalowa kilka wersji Mono obok siebie
Mono instalacja
Mono instalacja
instalacja libgdiplus i Mono
Mono instalacja
instalacja libgdiplus i Mono
Mono instalacja
instalacja libgdiplus i Mono
Windows Forms:
Wyglda nieestetycznie Dziaa (odrysowuje si) wyranie wolniej Brak dostosowania do natywnych motyww Problemy z niektrymi kontrolkami Kontrolki innych firm mog nie dziaa (P/Invoke) Brak designera (bardzo uproszczona wersja alfa) Prosty proces produkcji jeden kod Wiele przydatnych kontrolek (CodeProject) dziaa Mona korzysta z designera VS pod Windows Wspierany prosty binding dla danych (DataTable, List) W prostszych przypadkach w peni wystarczajce
Diametralnie rna skadnia, inne klasy, inne podejcia Prba obiektowego opakowania kodu w C Mao kontrolek firm trzecich Mao wygodny designer Brak data bindingu (rczne rzebienie MVC dla grida) Help dla jzyka C (proceduralny) albo Pythona. Kiepski dla C# Sprawdzony od lat (GNOME, GIMP, Firefox, Inkscape, Dia, Abiword, Gnumeric) Pena przenono, w miar spjny wygld pod rnymi OS Graficzne designery (cho mniej wygodne ni VS) Sizery (dostpny free layout) Budowanie interfejsw w XML Rewelacyjny komponent Tree
wxWidgets.NET
Komunikaty obsugiwane jak w MFC (brak event'w) Mao kontrolek firm trzecich Brak darmowych designerw dla C# Sizery - tylko i wycznie. Brak free layout Brak data bindingu Help dla jzyka C++ (proceduralny). Kilka prostych tutoriali dla C# Binding tylko dla podstawowych kontrolek. Setki kontrolek niedostpne w C# Nie rozwijany od 2011, ale pojawiaj si patche, wic nie umar Sprawdzony od lat (Google, DropBox, Xerox, AMD, Center for Naval Analyses, National Center for
Biotechnology Information, MapTek, DynamicGraphics)
Pena przenono, wykorzystuje natywne biblioteki (WinCtrl, GTK, Quartz) Budowanie interfejsw w XML (XRC) Niezy designer dla XRC Kilka niezych komponentw: grid, HTMLView (HTML 3.2), pola z mask
Bazy danych
Dostpno baz danych i sterownikw
Baza danych SQL Server Oracle PostgreSQL MySQL SQLite Sybase Firebird Db4o
Silnik
Driver
Bazy danych
Technologie dostpu do danych
SourceGrid BarcodeLib (Code 128, Code11, Code 39 (Extended/Full ASCII), Code 93, EAN-8, EAN-13, UPC-A, UPC-E, JAN-13,
MSI, ISBN, Standard 2 of 5, Interl. 2 of 5, PostNet, UPC, Supplemental 2, UPC, Supplemental 5, Codabar, ITF-14, Telepen, FIM)
DockPanelSuite GTK SourceView Lucene.NET i SimMetrics OpenDICOM, ECG Toolkit, NHapi (HL7 2.x) fyiReporting, Report Manager, mona prbowa Jasper Reports Meta nummerics, Math.NET, R.NET/RServereCLI MVC# Nplot (MdeI napisa interfejs dla GTK#), ZedGraph
Narzdzia produkcyjne
Visual Studio (Express) + ew. patny plugin Mono Tools for VS #Develop Monodevelop (czyta i zapisuje projekty VS) Glade wxFormBuilder
MoMA
(2.6)
Narzdzia produkcyjne
Porwnanie
.NET al.exe gacutil.exe ngen.exe wsdl.exe disco.exe xsd.exe sn.exe ildasm.exe ilasm.exe webdev.webserver.exe
Narzdzia produkcyjne
Visual Studio Tools
ASP.NET Web Forms ASP.NET MVC (2, 3, 4) Remoting ASP.NET WebServices (.asmx) WCF (CORBA)
MEX (endpointy) ale jest opracowywane COM WF WSHttpBinding + TransactionFlow + ReliableSession Federation WSDualHttpBinding i oglnie duplex MSMQ (mechanizm Windows) DataServices P2P
WCF ServiceStack
.netow implementacj JVM .netow implementacj klas Javy (OpenJDK, Claspath) narzdzia do konwersji JAR CIL (exe, dll)
Problemy...
Problem z adowaniem dynamicznych bibliotek pod Linuksem
Problemy...
Problem z adowaniem dynamicznych bibliotek pod Linuksem
#include <stdlib.h> #include <stdio.h> #include <dlfcn.h> void* dlopen(const char* file, int flag) { void* ret; ret = dlopen(file,flag); return ret; } char* dlerror() { char* err; err = dlerror(); return err; } void* dlsym(void* handle, const char* symbol) { void* ret; ret = dlsym(handle,symbol); return ret; } int dlclose(void* handle) { return dlclose(handle); }
Problemy...
Problem z adowaniem dynamicznych bibliotek pod Linuksem
Wnioski
Nadaje si do tworzenia
usug serwerowych przenonych aplikacji klienckich o prostym interfejsie aplikacji internetowych narzdzi prostych aplikacji pomocnicznych aplikacji na urzdzenia mobilna ale za $ tworzenia bogatych interfejsw uytkownika*
Licencje
LGPL - Lesser General Public License GPL (tylko dla programw i o ile kto wie, jak skorzysta; jest to moliwe, cho zoone) X11 (MIT) - Massachusetts Institute of Technology License Ms-PL - Microsoft Public Licence MPL - Mozilla Public Licence BSD - Berkeley Software Distribution License Apache 2 Public domain CPOL - The Code Project Open License
Distribution Restrictions. You may not: [] distribute Distributable Code to run on a platform other than the Windows platform;
Licencje
LGPL X11 (MIT) Ms-PL MPL BSD Apache 2 Public domain CPOL GPL (tylko dla programw i o ile kto wie, jak skorzysta; jest to moliwe, cho zoone)
Distribution Restrictions. You may not: [] distribute Distributable Code to run on a platform other than the Windows platform;
http://mono-project.com/Start
http://download.mono-project.com/sources/ http://monodevelop.com http://www.mono-project.com/MoMA http://www.mono-project.com/Plans http://docs.go-mono.com/index.aspx http://www.mono-project.com/Compatibility http://go-mono.com/status/ http://mono-project.com/Guidelines:Application_Portability http://mono-project.com/Mod_mono http://mono-project.com/Mono.Cairo_Cookbook http://www.mono-project.com/Monkeyguide http://www.mono-project.com/WCF_Development http://mono-project.com/Database_Access
GTK#
:-)
Dzikuj za uwag