6. WHAT IS MONO?
• Open source implementation of the .NET
platform
• 2001: Created to bring Windows applications to
Linux
• 2003: Acquired by Novell with Ximian
• Matured at Novell – now a world-class runtime.
11. UNIT TESTING MONOTOUCH APPS
• NUnit Lite Runner on device/simulator
• Same NUnit syntax you already know
• Possible to run the same NUnit tests on
desktop, iOS and WP7 device
13. .NET & MONO JIT ENGINE
C# Memory
Executable
Source Code
Machine Code
MSIL Mono
Just In Time
.NET Bytecode
Compilation
14. AHEAD-OF-TIME COMPILATION
• Apple disallows Just-In-Time compilation (JIT)
• Cannot make writable memory executable – enforced by OS
• MonoTouch uses Ahead-of-Time Compilation (AOT)
• Generates the native code that JIT would normally generate
• Links to runtime to create single ARM process capable native binary
21. REUSABLE CODE
Easily Reusable Reusable with some effort Not reusable
• Domain Model • Code accessing • User Interface Code
platform specific
components that
• Clients for your exist across all • Boot Strapping
REST- and web platforms Code
services
• GPS
• Data Access Code • Contacts
(SQLite) • Picture Library
• Accelerometer
• Storage Code
(Isolated Storage)
• Business Logic
32. TWO APIS: ELEMENTS API
• MonoTouch.Dialog is a framework that brings declarative UI programming to iOS
return new RootElement ("Settings") {
new Section (){
new BooleanElement ("Airplane Mode", false),
new RootElement ("Notifications", 0, 0) {
new Section (null,
"Turn off Notifications to disable Soundsn" +
"Alerts and Home Screen Badges for thenapplications below."){
new BooleanElement ("Notifications", false)
}
}},
33. TWO APIS – REFLECTION API
class AccountInfo {
[Section]
public bool AirplaneMode;
[Section ("Data Entry", "Your credentials")]
[Entry ("Enter your login name")]
public string Login;
[Caption ("Password"),
Password ("Enter your password")]
public string passwd;
[Section ("Travel options")]
public SeatPreference preference;
}
36. CONTROVERSY 1: APRIL 2010 – APPLE’S SECTION 3.3.1
• April 8nd: Apple changed license to state that:
“Applications must be originally written in Objective-C, C, C++, or
JavaScript as executed by the iPhone OS WebKit engine, and only code written in
C, C++, and Objective-C may compile and directly link against the Documented
APIs…”
• September 9th: Apple changed license again:
“In particular, we are relaxing all restrictions on the development tools used to create
iOS apps, as long as the resulting apps do not download any code. This should give
developers the flexibility they want, while preserving the security we need.”
37. CONTROVERSY 2: MAY 2011 - ATTACHEMATE
• May 2nd: Attachemate buys Novell – Mono team laid off
• Xamarin founded 2 weeks later
• Angry Mono customers pressure Novell to cooperate with Xamarin
• Xamarin secures a perpetual license to all Mono IP:
copyrights, patents and trademarks
41. SUMMARY
C# for iOS Cross Platform Useful resources
• Makes iOS easily • Standard .NET libraries • http://xamarin.com/NNU
accessible for .NET for tasks such as: G for 15% discount on
developers. MonoTouch & Mono for
• File Access Android
• Thin layer on top of • Database Access
CocoaTouch – same • Web Service Access • https://github.com/folles
native look & feel oe/FlightsNorway/tree/w
• Business Logic orkshop for 50 page
workshop on cross
• MonoTouch.Dialog for platform development
easier UI creation • Xamarin.Mobile provides using Mono.
same API for common
phone functionality
• NDC 2011 presentation
on cross platform mobile:
http://vimeo.com/267016
39