semana de interop: projeto mono
Post on 14-Dec-2014
70 Views
Preview:
DESCRIPTION
TRANSCRIPT
Projeto Mono: Aplicações .NET para Sistemas não windowsAlessandro de Oliveira BinharaMsc em Projetos ComplexosProjeto Mono Brasil
18/01/2010
Agenda
Projeto MonoHistórico, Motivações, Rodmap, Features, CompatibilidadeEstrutura, Ferramentas, Modelo de Desenvolvimento mono
Builds, Testes, Contribuições
Portando AplicativosOrientações para porte de aplicativosAplicações no Linux , no Mac , no IPhoneAplicativos , Cases de Sucesso
Demonstração e CasesWindowsForms, GtkSharp, C# Shell, Empresas usuárias
3
Nascimento do Mono
− Criado por Miguel de Icaza em 2001− Mono é uma implementação OpenSource do .NET
Permite a execução e desenvolvimento de software .Net em ambiente Não Windows.
− Criou o Gnome e a empresa Ximian para dar suporte ao gnome.
Miguel recebeu este ano o título da Microsoft de MVP C#
− Evolution- cliente de email− 17 desenvolvedores, 2 anos e meio, muito caro− Um problema do linux era ter boas ferramentas− Necessidade da criação de uma comunidade
4
Motivações
5
Microsoft lança o .NET
● Microsoft Lança a plataroma .Net
– Coloca o C# como um padrão
– O Core do .Net é colocado como padrão
– Padrões ECMA 334 , ECMA 335
● Plataforma Microsoft .Net
– Mult-linguagem
– Coletor de Lixo
6
Multi-Linguagem .NET
7
Estado AtualMono 2.6Lançado dia 15/12/2009 − MonoDevelop 2.2
− Mudou a licença para LGPL e MIT. Melhorias na interface, suporte Asp.NET MVC, Moonligth Suporte, suporte Windows e MACOSX, novos refactoring , suporte Iphone,
− WCF client e servidor, um subset exposto pelo by Silverlight 2.0.
− LLVM support, to improve performance on server/computational loads.
− LINQ para SQL usando o DbLinq.− Novo debuger integrado com o MonoDevelop e com o OSX.− csharp shell agora suporta auto-completion− 3.5 API agora está mais completa− MoonLigth 2.0 -> WEBCAST AMANHÃ !!!!− Esta versão esta integrando Microsoft's open sourced
− ASP.NET MVC, ASP.NET AJAX and Microsoft's Dynamic Language Runtime.
8
Suporte C# 3.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.
9
APIs
10
Suporte ao Java
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
IronPython e IronRuby
− .NET é uma excelente plataforma para linguagens dinâmicas.
− Atualmente o IronPython IronRuby são financiado pela Microsoft e licenciados sob uma Lincensa de Software Livre.
− Serão integrados a próxima versão do Visual Studios.
− Já é possível Baixar e instala-los
− WEBCAST SEXTA!!!
12
RoadMap
Mono 2.8− Remove support for .NET 1.1 Framework− Moonlight 3 Preview− MonoDevelop 2.4− Compacting GC− C# Compiler, Full C# 4.0 support − LINQ to SQL Beta
Mono 3.0 − C# Compiler− .NET 3.5+ compatibility
http://mono-project.com/Roadmap
13
Runtime Mono
− É a máquina virtual do Mono
− O runtime do Mono está pronto e tem possibilidade de executar programas através de:
− um compilador JIT (mono), com e sem otimizações
− um interpretador (mint)− Atualmente estão trabalhando na implementação de um gerenciador de memória mais eficiente
− Os programas podem ainda ser precompilados com um Ahead-of-Time Compiler (aot)
14
Plataformas 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
Desenvolvimento do Mono
15
Início do Mono
− 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#
17
Desenvolvedores
Rafael Teixeira, Alexandre Marcondes, Everaldo Canuto, Rodrigo Bambo, Francisco Figueredo,
MONO BRASIL
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
Compilador C# - mcs
MCSMono C#CompilerEscrito em
C#
RunTimeMONO
Escrito em C++
Bibliotecas de
Classe C#Escrito em
C#
EXECUTAEXECUTA
USAUSA
USA
COMPILA /USACOMPILA
19
BuildFarm
http://wrench.mono-project.com/builds
20
BuildFarmConsulta da implementação do framework em
comparação ao MS.NET
http://wrench.mono-project.com/builds
21
Mono TestSuite
http://mono-project.com/Test_Suite
22
Licenciamento do Mono
− MPL, GPL, LGPL, MIT, BSD
http://www.ohloh.net/p/mono/
23
Linhas de Código− Mais de 6 milhões de linhas
Curiosidade : • Miguel de Icaza alterou 1.6Milhões de linhas de
código • Mais de 900mil linhas de código C#• Representa uma atuação em quase 20% do código
24
Linhas de Código
25
Documentação
− 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
26
Suporte - ListasMono-announce-list, mono-aspnet-list, mono-list, mono-devel-list, mono-gc-list, mono-patches, mono-docs-list, mono-bugs, mono-winforms-list, gtk-sharp-list, mono-vb, mono-addins , monodevelop-list, monodevelop-devel-list, mono-osx, monotouch, cocoa-sharp, mono-cecil , gendarme, mono-olive, moonlight-list,
monoxna, tao-list, tf4mono group, mono-packagers-list
http://mono-project.com/Mailing_Listshttp://www.go-mono.org/forums/
Padrões ECMA 334 , ECMA 335
27
Suporte - Escritório do Mono− Média 100 pessoas online , 24 horas por dia− Irc.gnome.org − Mais de 50 canais
28
MonoBrasil
− Comunidade Brasileira de Desenvolvedores Mono− Site : www.monobrasil.org− Projeto Finep MonoBasic
29
Contribuindo
Bibliotecas de classe− Fazer alterações , escrever Teste− Criação Patch, ou commit no repósitorio− Documentação− Teste em várias plataformas]
Como começar− Baixe o fonte, compile , instale e use − Linux ou Windows + VisualStudio− Cadastrar-se nas listas− Participar do IRC− Reporte bugs − Mande seus patchs
30
BUGS
http://mono-project.com/Bugs
Portando aplicativos
31
Crie no VS e rode no Linux
− 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
33
Sistema de arquivos− Cuidado com os caminhos− Cuidado com letras Maiúsculas e minúsculas
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);
34
Variáveis de Ambiente
− 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);
35
Caminhos absolutos
− Não use caminhos absolutos, eles não vão funcionar em outros sistemas.
− Use algum mecanismo como um arquivo de configurção para localizar seus arquivos e caminhos
36
P/Invoque
− 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.
37
MOMA
38
Banco de Dados
- 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.
39
Não é Suportado no Mono
− Sem suporte a Enterprise Services− Sem suporte a cross-process trasaction
− Mono so suporta trasações locais
− Não tem suporte a COM− Com não existe em Sistema UNIX− Existe um projeto para suportar isso http://www.mono-
project.com/COM_Interop
40
Interface Gráfica− Windows.Forms
− Inicialmente foi usando o Projeto WINE − 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 apartir 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 apartir da versão 1.9
− ‘
41
Interfaces Gráficas
− Pode ser usados outros tool kits graficos 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− Bind do QT
− wxNet − http://wxnet.sourceforge.net/
42
Ferramentas
− Mono Develop− Importa solutions 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.
43
Mono Tools− Verifique a compatibilidade do
seu aplicativo com o Mono Migration Analaizer diretamente do Visual Studio
− Teste no Windos, Teste no Linux− Debug remoto no Linux− Empacote para linux− Crie uma Distro customizada para
seu aplicativo com o Suse Studio
44
Asp.NET
− Mono Suporte Asp.NET 1 e 2− Suporta Asp.NET MVC− Pode-se rodar aplicativos Web com :
− XSP, Mod_Mod , FastCGI− Suporta WebServices− Suporta Ajax.NET − WEBCAST QUINTA!!!!
Exemplowww.monobrasil.org
45
IPhoneVersã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
http://www.youtube.com/watch?v=M0VoyhKFmWghttp://monotouch.info/MonoTouch/Videoshttp://monotouch.net/http://www.codesnack.com/storage/screencasts/
46
Mono Touch
Demonstrações e Cases
47
HELLO WORD!!!$ 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 SubEnd Module
print "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/
49
DEMOS
−F-spot−Tomboy−MonoDevelop
C# Shell
− Shell Interativo como python e ruby− Suporte a code completion− Suporte a GTK#
51
C# Shell− Exemplo com Linq
52
Games
MONO.SIMD CasesSencondLive mudou do LSL para Mono- 50x a 300x mais rápidoUnit3d-Usa C#, Boo, unityScritp-WEBCAST QUARTA!!!!
53
Case Brasileiro - DARUMA−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.
54
CASES DekiWiki (http://wiki.mindtouch.com) is an advanced WYSIWYG Wiki system
powered by Mono. SplendidCRM (http://www.splendidcrm.com) Cross platform, CRM system. Plasma (http://pnunit.codicesoftware.com/opproducts.aspx) Source Code Management
system from Codice Software. Chrome Compiler (http://chromesville.com/language/): a commercial Pascal compiler with
many features to take advantage of .NET 2.0 (including generics and many new language features inspired by C# 2.0).
Electronic Arts' Sims3 (http://thesims3.ea.com/). Unity3D (http://unity3d.com). Unity is is a 3D game editor with powerful cross-
platform capabilities. Medsphere OpenVista (http://www.medsphere.com) a cross-platform, real-time, point-of-
care, patient-centric information resource for clinicians. Vault (http://www.sourcegear.com/vault/index.html), from SourceGear
(http://www.sourcegear.com/), relies on Mono to run on Unix systems. Virtuoso Universal Server (http://virtuoso.openlinksw.com/), from OpenLink Software
(http://www.openlinksw.com/), is a cross-platform hosting environment for Mono/.NET/C#.
Völcker used Mono (http://www.novell.com/success/volcker.html), .NET and C# to re-code its Active Entry (http://www.activeentry.com/) software to run on Linux.
Winfessor SoapBox Framework Mono Edition (http://www.winfessor.com/portal/DesktopDefault.aspx?tabid=57) enables developers to build .NET-based IM solutions that run on any Mono-supported platform
* GMOVIL (http://www.aspl.es/gmovil/us/index.html) is a complete tool to manage common processes for Vodaphone sales points. It includes a Gtk# (shown here) and SWF GUI (Technical details (http://www.aspl.es/fact/index.php?id=39)).
CASE INTERNACIONAL
− 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."
56
CASE INTERNACIONAL
− Tempo de desenvolvimento 9 meses− Mono com C#− A aplicação passou de 7 milhões de linhas para 2
milhões de linhas de código.− Foram instalados 350 novos servidores linux− Com a novas versao do ActiveEntry com Mono− Os servidores linux provêm provêm toda a
administração da cidade Munich, gerenciando mais de 40.000PCs
− São 150.000 usuários do sistema
Obrigado!! Dúvidas ?Alessandro de O. Binharabinhara@monobrasil.org
18/01/2010
57
© 2009 Microsoft Corporation. All rights reserved. Microsoft, MSDN, the MSDN logo, and [list other trademarks referenced] are trademarks of the Microsoft group of companies. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond
to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
top related