O Projeto Mono: Aplicações
.NET para sistemas não
Windows

1
Agenda
O Projeto Mono
Histórico, Motivações, Rodmap, Features,
Compatibilidade, Estrutura, Ferramentas,

Interoperabilidad...
3
4
Nascimento
Projeto MONO
Criado por Miguel de Icaza em 2001
Criou o Gnome e a empresa Ximian para
dar suporte ao Gnome.
− E...
O que é ?
Projeto MONO
Mono é uma implementação OpenSource do .NET
Permite a execução e desenvolvimento de software
.Net e...
Mono 3.2
Suporte a C# 5.0 como padrão programação assincrona
Parallel Framework
Performance
Large performance improvements...
O que é ?
Projeto MONO

https://www.ohloh.net/p/mono
8
Contribuições Microsoft
MS-PL or Apache Licensed Libraries
Ajax.NET, ASP.NET MVC1, MVC2,
Silverligth ToolKit, Silverligth ...
Suporte C# 4.0 e 5.0
mcs: compilador para qualquer profile
gmcs: compilador para runtime the 2.0 runtime.
smcs: compiledor...
Suporte JAVA
Interoperabilidade
O IKVM é uma VM JAVA escrita em C# que
possibilita executar byte code Java no Mono
além de...
Suporte Python e Ruby
Interoperabilidade
Atualmente o IronPython e IronRuby são
financiado pela Microsoft e licenciados so...
Runtime Mono
Máquina Virtual
É a máquina virtual do Mono
O runtime do Mono está pronto
e tem possibilidade de executar
pro...
Plataformas Suportadas
Supported Architectures

s390, s390x (32 and 64
bits)
SPARC (32)
PowerPC

x86
x86-64: AMD64 and
EM6...
Início do Mono
Interoperabilidade
Uso das ferramentas da microsoft
Como criar um compilador Csharp sem um
compilador.
Prim...
Compilador C# - MCS

COMPILA
COMPILA /USA
EXECUTA

EXECUTA

USA

USA
USA

16
Desenvolvedores
Comunidade
Rafael Teixeira, Alexandre Marcondes, Everaldo Canuto, Rodrigo
Bambo, Francisco Figueredo, mais...
Build Farm
Desenvolvimento
Consulta da implementação do framework em comparação ao
MS.NET
http://wrench.mono-project.com/b...
Mono Test Suite
Desenvolvimento
http://mono-project.com/Test_Suite

19
Documentação
Desenvolvimento
Site intenacional :
www.mono-project.com

MonkeyGuide :
http://mono-project.com/Monkeyguide

...
Suporte
Desenvolvimento
Listas de Discussão
http://mono-project.com/Mailing_Lists
http://www.go-mono.org/forums/

IRC: Irc...
Crie no VS e rode no Linux
Portando aplicativos
Compatibilidade Binária
Monte o disco do linux e copie seus binários no
li...
Sistema de Arquivos
Portando aplicativos
Cuidado com os caminhos
Cuidado com letras Maiúsculas e minúsculas
Não use caminh...
Variáveis de Ambiente
Portando aplicativos
Variáveis de ambiente o o PATH no Windows
usa “;” o linux e outros sistemas uni...
P/Invoke
Portando aplicativos
Chamadas a DLLs nativas a API Windows não
irão funcionar em outros sistemas, pois a API
não ...
MOMA
Portando aplicativos

26
Banco de Dados
Portando aplicativos
Mono faz acesso ao SQLServer , não existe
necessidade de mudar de banco para rodar sua...
Interface Gráfica
Portando aplicativos
Windows.Forms
Atualmente o Mono esta suportando windows.Forms 1 e 2
http://www.mono...
Interface Gráfica
Portando aplicativos
Pode ser usados outros tool kits gráficos para outras plataformas
http://www.mono-p...
Ferramentas
Portando aplicativos
Mono Develop
Importa soluções do Visual Studio
Versões Windows, Linux e MAC
Suporte para ...
Mono Plug IN
Portando aplicativos
Verifique a compatibilidade do seu
aplicativo com usando o MOMA
diretamente do Visual St...
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 ,...
Moonlight
Portando aplicativos
Implementação do open source do
SilverLight da Microsoft
Baseado em XAML
Em setembro de 200...
Moonligth
Portando aplicativos
Moonlight 3
Mooonlight 3 Pre-Alpha compatível com Silverlight 3
3D graphics
Pixel shaders
A...
C# no IPHONE
Portando aplicativos
Versão comercial do mono para IPHONE
C# and .NET on the iPhone
.NET Bindings to Native A...
C# no Android
Portando aplicativos
Versão comercial do mono para Android
Pluing para Visual Studio
Usa o mesmo profile do ...
HELLO WORLD!!!
$ cat alomundo-cs.cs alomundo-vb.vb alomundo-boo.boo
class AloMundo {
public static void Main(string[] args...
F-spot
Tomboy
MonoDevelop

38
Shell Interativo
Suporte a code completion
Suporte a GTK#

39
MONO.SIMD Cases
SencondLive mudou do LSL para Mono
50x a 300x mais rápido

Unit3d
Usa C#, Boo, unityScritp
40
Apartir de Março de 2006 a
Daruma passou a surportar o uso
de suas impressoras em ambiente
Mono com Linux.
Foram realizado...
Electronic Arts' Sims3
http://thesims3.ea.com/

Unity3D
Unity 3D é um editor de jogos cross-platform , Wii, XBOX, IPHONE, ...
Maior migração já feita para Linux
Software ActiveEntry - Software para provisão e gerenciamento
usando pelo governo Alemã...
Título do Vídeo

44
Bing Maps
PhotoSynth
ShowCase
DesktLets
Smooth Stream

45
46
Upcoming SlideShare
Loading in...5
×

O projeto Mono

815

Published on

Slides sobre o projeto mono , história , características, funcionalidades,

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
815
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

O projeto Mono

  1. 1. O Projeto Mono: Aplicações .NET para sistemas não Windows 1
  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… 2
  3. 3. 3
  4. 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# 5
  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 6
  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 7
  8. 8. O que é ? Projeto MONO https://www.ohloh.net/p/mono 8
  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 9
  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. 10
  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 11
  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 12
  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%. 13
  14. 14. Plataformas Suportadas Supported Architectures s390, s390x (32 and 64 bits) SPARC (32) PowerPC x86 x86-64: AMD64 and EM64T (64 bit) IA64 Itanium2 (64 bit) ARM: little and big endian Alpha MIPS HPPA 14 Runtime Operating system JIT Linux JIT Solaris, Linux JIT Linux, Mac OSX, Wii, PS3, PS4, PSVita JIT Linux, FreeBSD, OpenBSD, NetBSD, Microsoft Windows, Solaris, OS X , Android JIT Linux, Solaris JIT Linux JIT Linux ,iPhone, android JIT Linux JIT Linux 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# 15
  16. 16. Compilador C# - MCS COMPILA COMPILA /USA EXECUTA EXECUTA USA USA USA 16
  17. 17. Desenvolvedores Comunidade Rafael Teixeira, Alexandre Marcondes, Everaldo Canuto, Rodrigo Bambo, Francisco Figueredo, mais de 500 pessoas na comunidade. 17
  18. 18. Build Farm Desenvolvimento Consulta da implementação do framework em comparação ao MS.NET http://wrench.mono-project.com/builds 18
  19. 19. Mono Test Suite Desenvolvimento http://mono-project.com/Test_Suite 19
  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 20
  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 21
  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 22
  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); 23
  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); 24
  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. 25
  26. 26. MOMA Portando aplicativos 26
  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. 27
  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 28
  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 wxNet http://techbase.kde.org/Development/Languages/Qyoto http://wxnet.sourceforge.net/ 29
  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. 30
  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 31
  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 32
  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 33
  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 34
  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 35
  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 36
  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 37 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 38
  39. 39. Shell Interativo Suporte a code completion Suporte a GTK# 39
  40. 40. MONO.SIMD Cases SencondLive mudou do LSL para Mono 50x a 300x mais rápido Unit3d Usa C#, Boo, unityScritp 40
  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. 41
  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) 42
  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 43
  44. 44. Título do Vídeo 44
  45. 45. Bing Maps PhotoSynth ShowCase DesktLets Smooth Stream 45
  46. 46. 46
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×