Upload
alessandro-binhara
View
696
Download
2
Embed Size (px)
DESCRIPTION
Slides sobre o projeto mono , história , características, funcionalidades,
Citation preview
1
O Projeto Mono: Aplicações .NET para sistemas não Windows
2 2
Agenda
O Projeto Mono Histórico, Motivações, Rodmap, Features, Compatibilidade, Estrutura, Ferramentas,
Interoperabilidade de Aplicativos .Net Orientações para porte de aplicativos: Linux, Mac, Iphone, Android , Cases de Sucesso.
Demonstração e Cases WindowsForms, GtkSharp, C# Shell, Empresas usuárias, Etc…
3 3
4 4
5 5
Nascimento Projeto MONO
Criado por Miguel de Icaza em 2001
Criou o Gnome e a empresa Ximian para dar suporte ao Gnome. − Evolution: cliente de email
− Necessidade da criação de uma comunidade
− A Ximian foi adquirida pela Novell
Licenciamento MPL, LGPL, MIT, BSD
Miguel recebeu em 2009 o título da Microsoft de MVP C#
6 6
O que é ? Projeto MONO
Mono é uma implementação OpenSource do .NET Permite a execução e desenvolvimento de software .Net em ambiente Não Windows.
Mono 3.2 (atual) WCF client e servidor,
LLVM support, LINQ para SQL usando o DbLinq.
Novo debuger. Novo Gereciamento de memória
CSharp shell agora suporta auto-completion
4.5 API (WinRT, Async methods)
ASP.NET MVC 1, 2 ,3, 4
xbuild agora realiza o build de projetos msbuild
7 7
Mono 3.2
Suporte a C# 5.0 como padrão programação assincrona
Parallel Framework
Performance Large performance improvements
LLVM support has graduated to stable
Novo Generational Garbage Collector SGEN
Version 2.0 of the embedding API
WCF Routing
OpenBSD support integrated
F# 3.0
Microsoft Open Stacks (Razor, MVC, WebPages,Http,Json)
http://mono-project.com/Roadmap
http://www.mono-project.com/Release_Notes_Mono_3.0
9 9
Contribuições Microsoft MS-PL or Apache Licensed Libraries
Ajax.NET, ASP.NET MVC1, MVC2,
Silverligth ToolKit, Silverligth Tests
Managed Extensibility Framework (MEF)
System.Data.Services.Client (OData)
Dynamic Language Runtime
10 10
Suporte C# 4.0 e 5.0
mcs: compilador para qualquer profile
gmcs: compilador para runtime the 2.0 runtime.
smcs: compiledor para rutime 2.1para compilar aplicações Moonlight.
dmcs: iniciado com Mono 2.6 para C# 4.0
Mono.Csharp : compiler as a service
Características já suportadas:
anonymous methods , iterators,partial classes , Generics , Nullable Types, friend assemblies , static classes, property accessor accessibility, fixed
buffers, external assembly alias, namespace alias qualifier , inline warning control , Extension Methods, LINQ syntax, Expression trees, Automatic
properties, Lambda expressions, Anonymous types.
11 11
Suporte JAVA Interoperabilidade
O IKVM é uma VM JAVA escrita em C# que possibilita executar byte code Java no Mono além de um conjunto de ferramentas para:
conversão bytecode (java) -> IL (mono)
e IL (mono)-> bytecode (java)
http://www.ikvm.net
12 12
Suporte Python e Ruby Interoperabilidade
Atualmente o IronPython e IronRuby são financiado pela Microsoft e licenciados sob Licença Apache 2.0
13 13
Runtime Mono Máquina Virtual
É a máquina virtual do Mono
O runtime do Mono está pronto e tem possibilidade de executar programas .NET formato Binário.
Compilador JIT (mono), com e sem otimizações.
Novo GC já disponível, melhorando a performance e reduzindo o uso de memória em cerca de 50%.
14 14
Plataformas Suportadas
Supported Architectures Runtime Operating system
s390, s390x (32 and 64 bits)
JIT Linux
SPARC (32) JIT Solaris, Linux
PowerPC JIT Linux, Mac OSX, Wii, PS3, PS4, PSVita
x86 JIT Linux, FreeBSD, OpenBSD, NetBSD, Microsoft Windows, Solaris, OS X , Android
x86-64: AMD64 and EM64T (64 bit)
JIT Linux, Solaris
IA64 Itanium2 (64 bit) JIT Linux
ARM: little and big endian
JIT Linux ,iPhone, android
Alpha JIT Linux
MIPS JIT Linux
HPPA JIT Linux
15 15
Início do Mono Interoperabilidade
Uso das ferramentas da microsoft
Como criar um compilador Csharp sem um compilador.
Primeira versão do mcs foi escrita no Visual Studio.
Inicialmente 5 engenheiros, Foco em aplicações desktop
Toda a infra-estrutura do mono é escrita em C#
16 16
Compilador C# - MCS
EXECUTA EXECUTA
USA USA
USA
COMPILA /USA COMPILA
17 17
Desenvolvedores Comunidade
Rafael Teixeira, Alexandre Marcondes, Everaldo Canuto, Rodrigo Bambo, Francisco Figueredo, mais de 500 pessoas na comunidade.
18 18
Build Farm Desenvolvimento
Consulta da implementação do framework em comparação ao MS.NET
http://wrench.mono-project.com/builds
19 19
Mono Test Suite Desenvolvimento
http://mono-project.com/Test_Suite
20 20
Documentação Desenvolvimento
Site intenacional : www.mono-project.com
MonkeyGuide : http://mono-project.com/Monkeyguide
Mono APIs : http://www.go-mono.com/docs/
Esforço de tradução do Mono Brasil http://www.monobrasil.org
21 21
Suporte Desenvolvimento
Listas de Discussão http://mono-project.com/Mailing_Lists
http://www.go-mono.org/forums/
IRC: Irc.gnome.org Média 100 pessoas online , 24 horas por dia
Mais de 50 canais
22 22
Crie no VS e rode no Linux Portando aplicativos
Compatibilidade Binária
Monte o disco do linux e copie seus binários no linux
Compartilhe no windows e acesso no linux
Testando Uso de máquinas virtuas: Ex: Virtual PC
Donwload das VM e LiveCD no site do mono
23 23
Sistema de Arquivos Portando aplicativos
Cuidado com os caminhos
Cuidado com letras Maiúsculas e minúsculas
Não use caminhos absolutos, eles não vão funcionar em outros sistemas.
Use algum mecanismo como um arquivo de configuração para localizar seus arquivos e caminhos
Busca manual de Separadores
int index = exePath.LastIndexOf("\\");
exeDir = exePath.Substring(0, index);
exeFile = exePath.Substring(index+1);
Código mais portável
exeDir = Path.GetDirectoryName (exePath);
exeFile = Path.GetFileName (exePath);
24 24
Variáveis de Ambiente Portando aplicativos
Variáveis de ambiente o o PATH no Windows usa “;” o linux e outros sistemas unix usam “:”
Você pode usar System.IO.Path.PathSeparator para separa o path nas variáveis de ambiente
Console.WriteLine ( "Subdiretorios encontrados no PATH :“ );
string path_env = Environment.GetEnvironmentVariable ( "PATH“ );
string[] path_dirs = path_env.Split (Path.PathSeparator);
foreach (string pathdir in path_dirs)
Console.WriteLine(pathdir);
25 25
P/Invoke Portando aplicativos
Chamadas a DLLs nativas a API Windows não irão funcionar em outros sistemas, pois a API não está la.
Caso você dependa de bibliotecas em C, você deverá substituir por equivalentes no ambiente Linux.
Sua aplicação deverá identificar o sistema que está rodando e chavear entre as bibliotecas.
26 26
MOMA Portando aplicativos
27 27
Banco de Dados Portando aplicativos
Mono faz acesso ao SQLServer , não existe necessidade de mudar de banco para rodar sua aplicação no linux.
Mono Disponibiliza os dataproviders para os bancos : MySQL, Postgresql, Oracle, DB2, SyBase
É possivel usar os dataproviders do mono no .NET com VS para acessar os bancos livres.
28 28
Interface Gráfica Portando aplicativos
Windows.Forms
Atualmente o Mono esta suportando windows.Forms 1 e 2 http://www.mono-project.com/WinForms
Status do Windows.Forms: Sem suporte a windows.forms rodando em múltiplos threads. Todos os formulários devem ser criados no mesmo thread.
Temas windows suportados a partir do mono 2.2
Suporte de transparência no linux através do composite
Todo código Windows.Forms é em C# gerenciado
Windows.Forms é suportado no Mac a partir da versão 1.9
29 29
Interface Gráfica Portando aplicativos
Pode ser usados outros tool kits gráficos para outras plataformas
http://www.mono-project.com/Gui_Toolkits GTK# -> Ambientes Linux , BSD e Windows
COCA# -> MacOSX
QT# -> Linux
Qyoto http://techbase.kde.org/Development/Languages/Qyoto
wxNet http://wxnet.sourceforge.net/
30 30
Ferramentas Portando aplicativos
Mono Develop Importa soluções do Visual Studio
Versões Windows, Linux e MAC
Suporte para GTK# , Iphone, MacOX
Debug integrado, controle de versão
Bando de Dados, Sistema de Testes,
www.monodevelop.com
Prj2make Converte uma solução do Visual Studio em script para o make, gerando os make files.
31 31
Mono Plug IN Portando aplicativos
Verifique a compatibilidade do seu aplicativo com usando o MOMA diretamente do Visual Studio
Teste no Windows, Teste no Linux
Debug remoto no Linux
Empacote para linux
Crie uma Distribuição linux customizada para seu aplicativo com o Suse Studio
32 32
ASP.NET Portando aplicativos
Mono Suporte Asp.NET 1 e 2
Suporta Asp.NET MVC 1 e 2
Rodando no Apache, Ngnix: XSP, Mod_Mod , FastCGI
Suporta WebServices
Suporta Ajax.NET (Microsoft)
Exemplo www.monobrasil.org
33 33
Moonlight Portando aplicativos
Implementação do open source do SilverLight da Microsoft
Baseado em XAML
Em setembro de 2007 , a Microsoft e a Novel anunciaram a colaboração técnica isso inclui o acesso aos sistemas de teste do Silverligth e a distribuição do pacote de media para usuários Linux contendo as licenças de codec para áudio e vídeo.
Recentemente a Microsoft disponibilizou também o Silverligth Tool Kit e este foi integrado ao Moonlight
34 34
Moonligth Portando aplicativos
Moonlight 3 Mooonlight 3 Pre-Alpha compatível com Silverlight 3
3D graphics
Pixel shaders
Application library caching
Out-of-browser capabilities and offline support
Pluggable media pipeline to support 3rd party codecs
HD Smooth Streaming
Native support for MPEG-4-based H.264/AAC Audio
Release Date Alpha Q1 2010 Beta Q2 2010 Final Q3 2010
35 35
C# no IPHONE Portando aplicativos
Versão comercial do mono para IPHONE
C# and .NET on the iPhone
.NET Bindings to Native APIs
Distribute on the Apple App Store
Enterprise deployable
MonoDevelop Integration
XCode Integration
http://monotouch.net/
http://monotouch.net/Tutorials
36 36
C# no Android Portando aplicativos
Versão comercial do mono para Android
Pluing para Visual Studio
Usa o mesmo profile do MonoTouch
Suporte OpenGL , GC, Multi-threading, .NET 3.5, C# 3.0 e LINQ
.NET Bindings to Native APIs
http://monodroid.net/
http://monodroid.net/Tutorials
37 37
HELLO WORLD!!! $ cat alomundo-cs.cs alomundo-vb.vb alomundo-boo.boo
class AloMundo { public static void Main(string[] args){ System.Console.WriteLine("Alô mundo!!! em C#"); } } Module AloMundo Public Sub Main(args as string()) System.Console.WriteLine("Alô mundo!!! em MonoBASIC") End Sub End Module print "Alô mundo!!! em Boo"
$ mcs /codepage:utf8 alomundo-cs.cs
$ mbas alomundo-vb.vb
$ booc alomundo-boo.boo
$ mono alomundo-cs.exe Alô mundo!!! em C#
$ mono alomundo-vb.exe Alô mundo!!! em MonoBASIC
$ mono alomundo-boo.exe Alô mundo!!! em Boo
A linguagem Boo foi desenvolvida pelo Rodrigo 'Bamboo' Oliveira, para o ambiente CLI (Mono/.NET).
É similar ao Python mas com tipagem estática, o que lhe permite interagir mais facilmente com as outras linguagens CLI.
38 38
F-spot
Tomboy
MonoDevelop
39 39
Shell Interativo
Suporte a code completion
Suporte a GTK#
40 40
MONO.SIMD Cases SencondLive mudou do LSL para Mono 50x a 300x mais rápido
Unit3d Usa C#, Boo, unityScritp
41 41
Apartir de Março de 2006 a Daruma passou a surportar o uso de suas impressoras em ambiente Mono com Linux.
Foram realizados treinamentos da equipe desenvolvedora no Brasil, e foram feitas melhorias internas na estrutura dos device drives linux das impressoras para ficarem 100% compatível com Mono.
42 42
Electronic Arts' Sims3 http://thesims3.ea.com/
Unity3D Unity 3D é um editor de jogos cross-platform , Wii, XBOX, IPHONE, PC, etc (http://unity3d.com).
Chrome Compiler Um compilador Pascal, Delphi (http://chromesville.com/)
DekiWiki Is an advanced WYSIWYG Wiki system powered by Mono. (http://wiki.mindtouch.com)
SplendidCRM Cross platform, CRM system. (http://www.splendidcrm.com)
Plasma Source Code Management system from Codice Software. (http://pnunit.codicesoftware.com/opproducts.aspx)
Medsphere OpenVista A cross-platform, real-time, point-of-care, patient-centric information resource for clinicians. (http://www.medsphere.com)
43 43
Maior migração já feita para Linux
Software ActiveEntry - Software para provisão e gerenciamento usando pelo governo Alemão. (Munich)
Foram migrados todos os servidores da cidade de
Munich para linux e portado as aplicações para Mono
http://www.novell.com/success/volcker.html
"Mono is now a critical part of our cross-platform development," said Matthias Bauer, head of development for Völcker Informatik AG. "Using Mono was the only way for us to leverage our existing software and give our customers what they need on Linux.“
Uso de C# aplicação com mais de 2milhões de linhas
350 Servidores, 40mil estações, 150mil usuários
44
Título do Vídeo
45 45
Bing Maps
PhotoSynth
ShowCase
DesktLets
Smooth Stream
46