o projeto mono: aplicações .net para sistemas não windows

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

If you can't read please download the document

Upload: alessandro-binhara

Post on 25-May-2015

508 views

Category:

Technology


3 download

DESCRIPTION

O Projeto Mono: Aplicações .NET para sistemas não Windows. Esta palestras visa apresentar como rodar aplicações .net em ambientes não windows.

TRANSCRIPT

  • 1. Alessandro de Oliveira Binhara Projeto MONO BRASIL [email protected] O Projeto Mono: Aplicaes .NET para sistemas no Windows

2. 2 Agenda O Projeto Mono Histrico, Motivaes, Rodmap, Features, Compatibilidade, Estrutura, Ferramentas, Interoperabilidade de Aplicativos .Net Orientaes para porte de aplicativos: Linux, Mac, Iphone, Android , Cases de Sucesso. Demonstrao e Cases WindowsForms, GtkSharp, C# Shell, Empresas usurias, Etc 3. 3 Motivaes Projeto MONO 4. 4 Microsoft lana o .NET Projeto MONO Miguel busca uma nova plataforma para melhorar seus projetos. Microsoft Lana a plataforma .Net Coloca o C# como um padro O Core do .Net colocado como padro Padres ECMA 334 , ECMA 335 Plataforma Microsoft .Net Multi-linguagem Coletor de Lixo 5. 5 Nascimento Projeto MONO Criado por Miguel de Icaza em 2001 Criou o Gnome e a empresa Ximian para dar suporte ao Gnome. 6. 6 O que ? Projeto MONO Mono uma implementao OpenSource do .NET Permite a execuo e desenvolvimento de software .Net em ambiente No Windows. Mono 2.6 (atual) WCF client e servidor, LLVM support, LINQ para SQL usando o DbLinq. Novo debuger. CSharp shell agora suporta auto-completion 3.5 API agora est mais completa ASP.NET MVC 1 e 2 xbuild agora realiza o build de projetos msbuild Mono Compiler : C# 3.0 7. 7 Mono 2.8 Is coming!!! Suporte a C# 4.0 como padro Parallel Framework Performance Large performance improvements LLVM support has graduated to stable Preview of the Generational Garbage Collector Version 2.0 of the embedding API WCF Routing OpenBSD support integrated http://mono-project.com/Roadmap 8. 8 O que ? Projeto MONO 9. 9 Contribuies 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# 3.0 e 4.0 mcs: compilador para rutime 1.1. gmcs: compilador para runtime the 2.0 runtime. smcs: compiledor para rutime 2.1para compilar aplicaes Moonlight. dmcs: iniciado com Mono 2.6 para C# 4.0 Caractersticas 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 alm de um conjunto de ferramentas para: converso 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 so financiado pela Microsoft e licenciados sob Licena Apache 2.0 13. 13 a mquina virtual do Mono O runtime do Mono est pronto e tem possibilidade de executar programas .NET formato Binrio. Compilador JIT (mono), com e sem otimizaes. Novo GC j disponvel, melhorando a performance e reduzindo o uso de memria 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, 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 15. 15 Incio do Mono Interoperabilidade Uso das ferramentas da microsoft Como criar um compilador Csharp sem um compilador. Primeira verso do mcs foi escrita no Visual Studio. Inicialmente 5 engenheiros, Foco em aplicaes desktop Toda a infra-estrutura do mono escrita em C# 16. 16 Desenvolvedores Comunidade Rafael Teixeira, Alexandre Marcondes, Everaldo Canuto, Rodrigo Bambo, Francisco Figueredo, mais de 500 pessoas na comunidade. 17. 17 Compilador C# - MCS EXECUTAEXECUTA USAUSA USA COMPILA /USA COMPILA 18. 18 Build Farm Desenvolvimento Consulta da implementao do framework em comparao ao MS.NET http://wrench.mono-project.com/builds 19. 19 Mono Test Suite Desenvolvimento http://mono-project.com/Test_Suite 20. 20 Documentao Desenvolvimento Site intenacional : www.mono-project.com MonkeyGuide : http://mono-project.com/Monkeyguide Mono APIs : http://www.go-mono.com/docs/ Esforo de traduo do Mono Brasil http://www.monobrasil.org 21. 21 Suporte Desenvolvimento Listas de Discusso http://mono-project.com/Mailing_Lists http://www.go-mono.org/forums/ IRC: Irc.gnome.org Mdia 100 pessoas online , 24 horas por dia Mais de 50 canais 22. 22 Crie no VS e rode no Linux Portando aplicativos Compatibilidade Binria Monte o disco do linux e copie seus binrios no linux Compartilhe no windows e acesso no linux Testando Uso de mquinas 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 Maisculas e minsculas No use caminhos absolutos, eles no vo funcionar em outros sistemas. Use algum mecanismo como um arquivo de configurao para localizar seus arquivos e caminhos Busca manual de Separadores int index = exePath.LastIndexOf(""); exeDir = exePath.Substring(0, index); exeFile = exePath.Substring(index+1); Cdigo mais portvel exeDir = Path.GetDirectoryName (exePath); exeFile = Path.GetFileName (exePath); 24. 24 Variveis de Ambiente Portando aplicativos Variveis 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 variveis 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 no iro funcionar em outros sistemas, pois a API no est la. Caso voc dependa de bibliotecas em C, voc dever substituir por equivalentes no ambiente Linux. Sua aplicao 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 , no existe necessidade de mudar de banco para rodar sua aplicao 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 Grfica 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 mltiplos threads. Todos os formulrios devem ser criados no mesmo thread. Temas windows suportados a partir do mono 2.2 Suporte de transparncia no linux atravs do composite Todo cdigo Windows.Forms em C# gerenciado Windows.Forms suportado no Mac a partir da verso 1.9 29. 29 Interface Grfica Portando aplicativos Pode ser usados outros tool kits grficos 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 solues do Visual Studio Verses Windows, Linux e MAC Suporte para GTK# , Iphone, MacOX Debug integrado, controle de verso Bando de Dados, Sistema de Testes, www.monodevelop.com Prj2make Converte uma soluo 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 Distribuio 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 Implementao do open source do SilverLight da Microsoft Baseado em XAML Em setembro de 2007 , a Microsoft e a Novel anunciaram a colaborao tcnica isso inclui o acesso aos sistemas de teste do Silverligth e a distribuio do pacote de media para usurios Linux contendo as licenas de codec para udio e vdeo. Recentemente a Microsoft disponibilizou tambm o Silverligth Tool Kit e este foi integrado ao Moonlight 34. 34 Moonligth Portando aplicativos Moonlight 3 Mooonlight 3 Pre-Alpha compatvel 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 Verso 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 Verso 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 C# Shell Demos Shell Interativo Suporte a code completion Suporte a GTK# 38. 38 GAMES em C# Demos MONO.SIMD Cases SencondLive mudou do LSL para Mono 50x a 300x mais rpido Unit3d Usa C#, Boo, unityScritp 39. 39 Daruma Case Brasileiro Apartir de Maro 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% compatvel com Mono. 40. 40 Empresas usando Mono Cases 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 OpenVista A cross-platform, real-time, point-of-care, patient-centric information resource for clinicians. (http://www.medsphere.com) 41. 41 Cidade de Munich Case internacional Maior migrao j feita para Linux Software ActiveEntry - Software para proviso e gerenciamento usando pelo governo Alemo. (Munich) Foram migrados todos os servidores da cidade de Munich para linux e portado as aplicaes 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 Vlcker 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# aplicao com mais de 2milhes de linhas 350 Servidores, 40mil estaes, 150mil usurios 42. 42 Ttulo da Demo 43. 43 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 esttica, o que lhe permite interagir mais facilmente com as outras linguagens CLI. Ver http://boo.codehaus.org/ 44. 44 Aplicaes Demos F-spot Tomboy MonoDevelop 45. 45 Ttulo do Vdeo 46. 46 Moonligth - videos Bing Maps PhotoSynth ShowCase DesktLets Smooth Stream 47. 47 48. Alessandro de Oliveira Binhara Projeto MONO BRASIL [email protected] O Projeto Mono: Aplicaes .NET para sistemas no Windows