cross plataform development with mono [fonts]
DESCRIPTION
Small session and talk about Mono and Cross development platform development for .Net developers. Talk shared in DDD Melbourne and DDD Adelaide 2011TRANSCRIPT
Who am I? I’m a cross platform developer from a beautiful
and tropical place
I was a Linux guy for long time in the past
Open Source contributor
Currently work as Senior Developer for Readify
Microsoft .Net lover, polyglot developer, ASP.NET MVP
Multi-cat guy, husband, blogger, gamer, things like that…
http://www.cprieto.com or @cprieto
Assumptions
You know what’s code
You know what’s .Net
You are already a .Net developer
You know there’s life beyond Windows
You are curious about monkeys…
You know a mono is a primate
What’s mono anyway?
Tip: this is not a biology class…
Ok, What’s not Mono…
Because sometimes myths are just myths…
Seriously, this is not Mono
Mono is NOT a Linux [only] port to .Net
Mono is NOT attached to Microsoft [directly]
Mono is NOT just a compiler or interpreter
Mono is NOT a .Net copy
Mono is NOT dead
Mono is more than a monkey… MonoTouch
MonoMac
MonoDroid
MonoDevelop IDE Mac and Windows
Git and Svn support
Many mono libraries Cecil, Zeroconf, etc.
LLVM compiler
New Garbage Collector
Sharpen
Moonlight 4
C# Compiler as a Service
Mono in games
Mono in Servers
Compiler as a Service?
Because static languages are hot as well!
What’s supported in Mono?
Ok, you got me…
Microsoft .Net libraries C# 4.0, 3.0, 2.0
ASP.NET
System.Core
Core libraries
MEF
DLR (ipy, irb)
Code Contracts (partially)
LINQ, LINQ to SQL
ADO.NET
NuGet
OrchardCMS
F#
VB
XNA (MonoXNA)
WCF (partially)
Odata (client side)
What’s NOT supported Windows Presentation Foundation
System.Management
Windows P/Invoke
System.EnterpriseServices
Cross process transactions
COM
WF (WF 4.0 will be implemented)
Porting your application
Crossing the river…
Stylizer by Skybound
PlasticSCM by Codice
Unity3D by UNITY
Core and basics Mono is CIL compatible with Microsoft
implementation
What about data access? You cannot use EF yet
But you can use NHibernate!
Ok, you can use Mindscape’s Lightspeed too…
VistaDB, MySQL, PostgreSQL, Firebird, SQLServer, SQLite
Do I have some other usefull libraries to use? Bitsharp, Mono.Addins, MonoTorrent, GitSharp,
Mono.Zeroconf, many others!
You can use MonoDevelop IDE
Pay attention to details…
Paths are not the same…
Interop is not your friend…
COM is not your mate…
Did you really need that API?
What about cross platform libraries?
MoMA is your ally!!!
Plenty of UI options… Winforms
Your old “good” friend?
Gtk#
Qyoto
WX.Net
MonoCurses
MonoMac*
iOS/Android
Simple Guidelines Design your code to be presentation
agnostic
Independent Business Logic
Presentation Layer
Just follow the advise of your pattern loving buddies Model, View, Controller (MVC)
Model, View, Presenter (MVP)
Model, View, ViewModel (MVVM)
Business LogicWPF
MonoTouch
MonoDroid
MonoMac
Gtk#
MOMA
A Funny acronym for an useful app!
What about web apps? ASP.NET Webforms
ASP.NET MVC1, MVC2
Portions of ASP.NET MVC3
Monorail, FubuMVC, OpenRasta
OrchardCMS
NuGet
Moonlight 4
Magical things… like Manos de Mono! (no cross platform… yet!)
Questions?
Come on! Don’t be so shy!