Download - Int305 projeto mono-final
![Page 1: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/1.jpg)
SETEMBRO, 2010 | SÃO PAULO
![Page 2: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/2.jpg)
Alessandro de Oliveira BinharaProjeto MONO [email protected]
O Projeto Mono: Aplicações .NET para sistemas não Windows
CÓDIGO DA SESSÃO: #####
![Page 3: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/3.jpg)
4
Agenda
O Projeto MonoHistórico, Motivações, Rodmap, Features, Compatibilidade, Estrutura, Ferramentas,
Interoperabilidade de Aplicativos .NetOrientações para porte de aplicativos: Linux, Mac, Iphone, Android , Cases de Sucesso.
Demonstração e CasesWindowsForms, GtkSharp, C# Shell, Empresas usuárias, Etc…
![Page 4: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/4.jpg)
5
MotivaçõesProjeto MONO
Um problema do Linux era ter boas ferramentas integradas
![Page 5: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/5.jpg)
6
Microsoft lança o .NETProjeto MONO
Miguel busca uma nova plataforma para melhorar seus projetos.
Microsoft Lança a plataforma .NetColoca o C# como um padrãoO Core do .Net é colocado como padrãoPadrões ECMA 334 , ECMA 335
Plataforma Microsoft .Net Multi-linguagemColetor de Lixo
![Page 6: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/6.jpg)
7
Nascimento Projeto MONO
Criado por Miguel de Icaza em 2001Criou 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, BSDMiguel recebeu em 2009 o título da Microsoft de MVP C#
![Page 7: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/7.jpg)
8
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 2.6 (atual)
WCF client e servidor, LLVM support, LINQ para SQL usando o DbLinq.Novo debuger. CSharp shell agora suporta auto-completion3.5 API agora está mais completaASP.NET MVC 1 e 2 xbuild agora realiza o build de projetos msbuild Mono Compiler : C# 3.0
![Page 8: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/8.jpg)
9
Mono 2.8Is coming!!!
Suporte a C# 4.0 como padrãoParallel Framework Performance
Large performance improvementsLLVM support has graduated to stable
Preview of the Generational Garbage CollectorVersion 2.0 of the embedding APIWCF RoutingOpenBSD support integrated http://mono-project.com/Roadmap
![Page 9: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/9.jpg)
10
O que é ?Projeto MONO
![Page 10: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/10.jpg)
11
Contribuições MicrosoftMS-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
![Page 11: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/11.jpg)
12
Suporte C# 3.0 , 4.0 e 5.0
mcs: compilador para rutime 1.1.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
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.
![Page 12: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/12.jpg)
13
Suporte JAVAInteroperabilidade
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
![Page 13: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/13.jpg)
14
Suporte Python e RubyInteroperabilidade
Atualmente o IronPython e IronRuby são financiado pela Microsoft e licenciados sob Licença Apache 2.0
![Page 14: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/14.jpg)
15
Runtime MonoMáquina Virtual
É a máquina virtual do MonoO 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%.
![Page 15: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/15.jpg)
16
Plataformas SuportadasSupported Architectures Runtime Operating system s390, s390x (32 and 64 bits)
JIT Linux
SPARC (32) JIT Solaris, Linux
PowerPC JIT Linux, Mac OSX, Wii, PlayStation 3
x86 JIT Linux, FreeBSD, OpenBSD, NetBSD, Microsoft Windows, Solaris, OS X
x86-64: AMD64 and EM64T (64 bit) JIT Linux, Solaris
IA64 Itanium2 (64 bit) JIT Linux
ARM: little and big endian JIT Linux (both old and new ABI), iPhone
Alpha JIT Linux MIPS JIT Linux HPPA JIT Linux
![Page 16: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/16.jpg)
17
Início do MonoInteroperabilidade
Uso das ferramentas da microsoftComo criar um compilador Csharp sem um compilador.Primeira versão do mcs foi escrita no Visual Studio. Inicialmente
5 engenheiros, Foco em aplicações desktopToda a infra-estrutura do mono é escrita em C#
![Page 17: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/17.jpg)
18
DesenvolvedoresComunidade
Rafael Teixeira, Alexandre Marcondes, Everaldo Canuto, Rodrigo Bambo, Francisco Figueredo, mais de 500 pessoas na comunidade.
MONO BRASIL
![Page 18: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/18.jpg)
19
Compilador C# - MCS
Compilador C# escrito em C#Primeiro bootstrap em 2001, 10.000 linhas em 17sHoje tem 82.000 linhas, compila em 2.2s1.6x mais lento que o csc
MCSMono C#CompilerEscrito em
C#
RunTimeMONO
Escrito em C++
Bibliotecas de
Classe C#Escrito em
C#
EXECUTAEXECUTA
USAUSA
USA
COMPILA /USACOMPILA
![Page 19: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/19.jpg)
20
Build FarmDesenvolvimento
Consulta da implementação do framework em comparação ao MS.NEThttp://wrench.mono-project.com/builds
![Page 20: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/20.jpg)
21
Mono Test SuiteDesenvolvimento
http://mono-project.com/Test_Suite
![Page 21: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/21.jpg)
22
DocumentaçãoDesenvolvimento
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 Brasilhttp://www.monobrasil.com.br
![Page 22: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/22.jpg)
23
SuporteDesenvolvimento
Listas de Discussãohttp://mono-project.com/Mailing_Listshttp://www.go-mono.org/forums/
IRC: Irc.gnome.org Média 100 pessoas online , 24 horas por diaMais de 50 canais
![Page 23: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/23.jpg)
24
Crie no VS e rode no LinuxPortando aplicativos
Compatibilidade BináriaMonte o disco do linux e copie seus binários no linuxCompartilhe no windows e acesso no linuxTestando
Uso de máquinas virtuas: Ex: Virtual PCDonwload das VM e LiveCD no site do mono
![Page 24: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/24.jpg)
25
Sistema de ArquivosPortando aplicativos
Cuidado com os caminhosCuidado com letras Maiúsculas e minúsculasNã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 Separadoresint index = exePath.LastIndexOf("\\"); exeDir = exePath.Substring(0, index); exeFile = exePath.Substring(index+1);
Código mais portávelexeDir = Path.GetDirectoryName (exePath); exeFile = Path.GetFileName (exePath);
![Page 25: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/25.jpg)
26
Variáveis de AmbientePortando 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);
![Page 26: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/26.jpg)
27
P/InvokePortando 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.
![Page 27: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/27.jpg)
28
MOMA Portando aplicativos
![Page 28: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/28.jpg)
29
Banco de DadosPortando 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.
![Page 29: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/29.jpg)
30
Interface GráficaPortando aplicativosWindows.Forms
Atualmente o Mono esta suportando windows.Forms 1 e 2 http://www.mono-project.com/WinFormsStatus 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.2Suporte de transparência no linux através do composite
Todo código Windows.Forms é em C# gerenciadoWindows.Forms é suportado no Mac a partir da versão 1.9
![Page 30: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/30.jpg)
31
Interface GráficaPortando aplicativosPode ser usados outros tool kits gráficos para outras plataformas
http://www.mono-project.com/Gui_ToolkitsGTK# -> Ambientes Linux , BSD e WindowsCOCA# -> MacOSXQT# -> Linux
Qyoto http://techbase.kde.org/Development/Languages/Qyoto
wxNet http://wxnet.sourceforge.net/
![Page 31: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/31.jpg)
32
FerramentasPortando aplicativos
Mono DevelopImporta soluções do Visual StudioVersões Windows, Linux e MACSuporte para GTK# , Iphone, MacOXDebug integrado, controle de versãoBando de Dados, Sistema de Testes, www.monodevelop.com
Prj2makeConverte uma solução do Visual Studio em script para o make, gerando os make files.
![Page 32: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/32.jpg)
33
Mono Plug INPortando aplicativos
Verifique a compatibilidade do seu aplicativo com usando o MOMA diretamente do Visual StudioTeste no Windows, Teste no LinuxDebug remoto no LinuxEmpacote para linuxCrie uma Distribuição linux customizada para seu aplicativo com o Suse Studio
![Page 33: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/33.jpg)
34
ASP.NETPortando aplicativos
Mono Suporte Asp.NET 1 e 2Suporta Asp.NET MVC 1 e 2 Rodando no Apache, Ngnix:
XSP, Mod_Mod , FastCGISuporta WebServicesSuporta Ajax.NET (Microsoft)Exemplo
www.monobrasil.org
![Page 34: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/34.jpg)
35
MoonlightPortando aplicativos
Implementação do open source do SilverLight da MicrosoftBaseado em XAMLEm 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
![Page 35: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/35.jpg)
36
MoonligthPortando aplicativos
Moonlight 3 Mooonlight 3 Pre-Alpha compatível com Silverlight 33D 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
![Page 36: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/36.jpg)
37
C# no IPHONEPortando 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
![Page 37: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/37.jpg)
38
C# no AndroidPortando aplicativos
Versão comercial do mono para AndroidPluing para Visual Studio Usa o mesmo profile do MonoTouchSuporte OpenGL , GC, Multi-threading, .NET 3.5,
C# 3.0 e LINQ .NET Bindings to Native APIs
http://monodroid.net/http://monodroid.net/Tutorials
![Page 38: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/38.jpg)
39
Título da Demo
![Page 39: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/39.jpg)
40
HELLO WORLD!!!
$ cat alomundo-cs.cs alomundo-vb.vb alomundo-boo.booclass 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 SubEnd Moduleprint "Alô mundo!!! em Boo"
$ mcs /codepage:utf8 alomundo-cs.cs
$ mbas alomundo-vb.vb
$ booc alomundo-boo.boo
$ mono alomundo-cs.exeAlô mundo!!! em C#
$ mono alomundo-vb.exeAlô mundo!!! em MonoBASIC
$ mono alomundo-boo.exeAlô 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.Ver http://boo.codehaus.org/
![Page 40: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/40.jpg)
41
AplicaçõesDemos
F-spotTomboyMonoDevelop
![Page 41: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/41.jpg)
42
C# ShellDemos
Shell Interativo Suporte a code completionSuporte a GTK#
![Page 42: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/42.jpg)
43
GAMES em C#Demos
MONO.SIMD CasesSencondLive mudou do LSL para Mono50x a 300x mais rápido
Unit3dUsa C#, Boo, unityScritp
![Page 43: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/43.jpg)
44
DarumaCase Brasileiro
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.
![Page 44: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/44.jpg)
45
Empresas usando MonoCases internacionais
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 OpenVistaA cross-platform, real-time, point-of-care, patient-centric information resource for clinicians. (http://www.medsphere.com)
![Page 45: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/45.jpg)
46
Cidade de MunichCase internacional
Maior migração já feita para LinuxSoftware 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 Monohttp://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 linhas350 Servidores, 40mil estações, 150mil usuários
![Page 46: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/46.jpg)
47
Título do Vídeo
![Page 47: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/47.jpg)
48
Moonligth - videos
Bing MapsPhotoSynthShowCaseDesktLetsSmooth Stream
![Page 48: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/48.jpg)
49
![Page 49: Int305 projeto mono-final](https://reader038.vdocuments.pub/reader038/viewer/2022102723/5590b2981a28abea058b4758/html5/thumbnails/49.jpg)
Alessandro de Oliveira BinharaProjeto MONO [email protected]
O Projeto Mono: Aplicações .NET para sistemas não Windows
CÓDIGO DA SESSÃO: #####