Cross Platform Net Development With Mono And My Sql Presentation

download Cross Platform  Net Development With Mono And My Sql Presentation

If you can't read please download the document

Transcript of Cross Platform Net Development With Mono And My Sql Presentation

BrainShare Presentation Template - Safe Harbor Statement

Cross-Platform .NET:
Mono and MySQL

Joseph Hill

Product Manager for Mono, Novell

[email protected]

Joe Audette

Founder, Source Tree Solutions, LLC

[email protected]

What Can You Do with Mono?

Migrate Microsoft .NET desktop and server applications to Linux without significant investment in rewriting code

Target multiple platforms and increase addressable market

Leverage existing expertise in computer languages for more efficient development

Mono (mn), n:

A complete and modern development platform for Linux

The necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix

A thriving open source project with a growing community

What is Mono?

Multi-platform, Multi-language

C#

Visual Basic

Boo

IronRuby

x86

SPARC

StrongARM

s390

PowerPC

CommonIntermediateLanguage

Code Generation:Just-In-Timeor Ahead-of-Time

IronPython

JavaScript

F#

Java (IKVM)

Interesting thing about Mono/.NETCIL (Common Intermediate Language): the "Lingua Franca" for computer languages. Allows you to write a front-end compiler (C#, Java, etc.) and instead of generating native machine code, you generate code for the intermediate language. So you always map to a single language, then the single language gets mapped to the target OS.

We take the IL and generate code that will run on a number of platforms.

So today we have very good coverage of languages that you can use with Mono. C# 2.0 (you can use full generics), VB.NET, Java applications - with IKVM which has been incredibly popluar - and a bunch of other languages.

Mono 1.0 (7/04)

.NET 3.0 / .NET 3.5

.NET 2.0

C# 2.0Generics

Upgrades to stack.

.NET 1.1

Server: ASP.NET

Gtk#

WinForms

Upgrades to stack.

C# 3.0LINQ

WCFWFWPF

Mono 1.2 (11/06)

.NET 3.0 / .NET 3.5

.NET 2.0

C# 2.0Generics

Upgrades to stack.

.NET 1.1

Server: ASP.NET

Gtk#

WinForms

Upgrades to stack.

C# 3.0LINQ

WCFWFWPF

Mono Today: Mono 1.9 March 2008

ASP.NET 1.1 & 2.0

Web Forms & Web Services

Support for ASP.NET AJAX

ADO.NET 1.1 & 2.0

SQL Server, Oracle, PostgreSQL

MySQL, Sybase, DB2, SQLite, etc

Win Forms 1.1 & 2.0

C# 1.0, 2.0, 3.0

LINQ

GTK#

Mono 2.0 (Summer 08)

.NET 3.0 / .NET 3.5

.NET 2.0

C# 2.0Generics

Upgrades to stack.

.NET 1.1

Server: ASP.NET

Gtk#

WinForms

Upgrades to stack.

C# 3.0LINQ

WCFWFWPF

Mono 3.0 (Olive)

.NET 3.0 / .NET 3.5

.NET 2.0

C# 2.0Generics

Upgrades to stack.

.NET 1.1

Server: ASP.NET

Gtk#

WinForms

Upgrades to stack.

C# 3.0LINQ

WCFWFWPF

Mono Migration Analyzer (MoMA)

Inspects CIL byte code

Looks for uses, compares with implementation

Missing methods

Todo methods (flagged with an attribute)

MoMA is the best place to start; full report of how easy your existing app will be to migrate

http://www.mono-project.com/Moma

We started building the left side of the stack, ie, ASP.NET, ADO.NET, Windows.Forms, and that stack is done for 1.1 and 70% done for .NET 2.0. We can run a lot of apps with that. But we didn't really know what people were using, which controls, which bugs actually matter, etc. So, a couple of months ago we built a tool that people could run on windows, and would allow us to figure out what to implement. So we have developed this. Inspects the byte code, looks at methods, and ships with a definition of everything that Mono has. Generates a report and sends it to our website.

Developers can use this tool to find out what apps are portable, and which apps are not portable. So, once the data is submitted, let's see what the data looks like. We aggregate all the data that people have sent us. Between Mono 1.2.2 and 1.2.3 we implemented 2000 methods.

Regarding apps submitted to us, 16% are VB, 67% are Windows.Forms, 28% are .NET 1.1, and 72% are .NET 2.0.

mojoPortal What Is It?

Content Management/Web Site Framework

Project began with the idea of supporting MySql and Mono

Current Features Blogs, Forums, Calendars, Maps, Image Gallery, Ecommerce, and more

Download it from www.mojoportal.com

mojoPortal Architecture

Cross Platform Development

Visual Studio 2005/2008

MonoDevelop

Developing with MonoDevelop

Free .NET IDE for Linux and Mac OS X

Code completion

Refactoring

Class management

Built-in help

VS 2005 project support

Gtk# designer support

ASP.NET support

C#/VB/Boo/C/C++ support

Much More

Getting Mono

Mono

http://www.mono-project.com/Downloads

MoMA

http://www.mono-project.com/MoMA

Moonlight

http://www.mono-project.com/Moonlight

http://go-mono.com/moonlight

Mono projects

http://packages.opensuse-community.org/

mojoPortal

http://www.mojoportal.com

Mono Stacks

ASP.NET

ADO.NETWindows.Forms

Mono Runtime

(Implementation of ECMA #335)

MySQL/Postgress

Microsoft Compatibility Libraries

Mono Libraries

Mozilla

Apache Mono

Novell LDAP

Java Compatibility

Evolution#

Novell iFolder

GTK#

Gnome#

Virtual Machine: Multilanguage

(Implementation of ECMA #335)

Gtk#/Gnome

Mono Stack

Bonjour

Identity

Sqlite#

Addins

D-Bus#

Novell APIs:iFolder, LDAP

Desktop: GTK#

Cecil

Rocks

MySQL

Mozilla

Apache Mono

OpenOffice

Java Compatibility

ASP.NET

ADO.NETWindows.Forms

ASP.NET

ADO.NETWindows.Forms

.NET StackDone some very important thingsGTK# work - provided bindings for building GUI applicationsat Novell, we try to not write C-Code very much, we try to use managed languages- in the last couple of years we've done Banshee, F-Spot, desktop searchFairly successful in creating an ecosystem of class libraries that would complement Mono

IKVM - allows you to run unmodified Java apps on top of Mono. Takes your Java byte code and xlates on the fly and generates code for the CIL.

Has exploded into a universe of API and class libraries.Cecil - a library that lets you manipulate executabeles, insect, make mods, insert code, inspect code, etc.

Platform Support

32 bit:

x86

SPARC

S390, IBM

ARM family

PowerPC

64 bit:

x86-64

s390x, IBM

Itanium

Operating Systems:

Linux

Solaris

MacOS X

Windows

Nokia/Maemo

Contributed ports:

Alpha, MIPS (not finished).

Presented by,MySQL & OReilly Media, Inc.