semana interop: desenvolvendo asp.net para linux

44
Desenvolvendo Asp.NET para Linux Alessandro de Oliveira Binhara Msc em Gestão de Projetos Complexos Projeto Mono Brasil [email protected] 21/01/2010

Upload: alessandro-binhara

Post on 11-May-2015

1.074 views

Category:

Technology


3 download

DESCRIPTION

Desenvolvendo Asp.NET para Linux Portando Aplicativos Mono e ASP.NET Progrando ASP.NET no Mono Criando uma aplicação Cases de Sucesso

TRANSCRIPT

Desenvolvendo Asp.NET para LinuxAlessandro de Oliveira BinharaMsc em Gestão de Projetos ComplexosProjeto Mono [email protected]

21/01/2010

Agenda

− Projeto Mono− Portando Aplicativos− Mono e ASP.NET− Progrando ASP.NET no Mono− Criando uma aplicação− Cases de Sucesso

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

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− C# 3.0 (repositório já está com C# 4.0)− 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.

5

APIs

6

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

7

Documentação

− Site intenacional :− www.mono-project.com

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

− Mono APIs : − http://www.go-mono.com/docs/

− Projeto Mono Brasil− http://www.monobrasil.org− Esforço de tradução do Mono Brasil

Portando aplicativos

8

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

10

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);

11

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);

12

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

13

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.

14

MOMA

15

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.

16

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

17

Portando ASP.NET

− Diferenças nos nomes de arquivos :− Arquivo:Login.aspx Referência: login.aspx

− Exemplo completo de porte de um Blog− Requisitos, sistema de arquivos, arquivos de configuração, variáveis de

ambientes− Configuração de conexão com o banco, nome de arquivos− http://www.mono-project.com/

Guide:_Porting_ASP.NET_Applications

ASP.NET no Mono

ASP.NET no Mono

− Suporte ASP.NET 1.1 e 2.0 − Suporte WEBForms e WEBServices− Suporte a Debug e Debug Remoto− Suporte a ASP.NET Ajax e controle .NET 3.5

− Anthem.NET, magicajax.net, Gaia Ajax for ASP.NET− Suporte a ASP.NET MVC− Suporte Completo a C# e VB.NET− Suporte a outras liguagens com F# em binários− Suporte a Code Behind

20

Restrições do Mono

− Problemas com WebParts− WebParts API− Não suporta ASP− Não suporta “WebService Enchacements”− Não suportar websites pré compilados atualizáveis− Sem suporte a mod_mono no apache com windows

21

MOD_Mono

− Módulo do mono para o APACHE− Instalação por pacotes disponível na maioria das

distribuições: SUSE, Ubuntu, Debian− Recomendado para ambientes de produção− O mod_mono vai automaticamente carregar o

mod-mono-Server para iniciar o sua aplicação web− Pode-se usar a opção AutoConfiguration

Inclua no apache Include /etc/apache2/mod_mono.conf ou

Carregar via módulo no apacheLoadModule mono_module /usr/lib/httpd/modules/mod_mono.so

22

AutoConfiguration− No passado era preciso fazer um série de configurações para

fazer o Mono funcionar no apache− É um mecanismo para minimizar a quantidade de

configurações− Basta copiar os arquivos para os diretórios expostos do

Apache (ex: htdocs)

ApacheMonoServerPath "/usr/bin/mod-mono-server2“MonoAutoApplication enabled<httpHandlers> <add verb="*" path="*.m" type="Maverick.Dispatcher, Maverick" /> </httpHandlers>

mod_mono.confAddType application/x-asp-net .m

23

Deploy

Copie seu site para o servidor e descompacte $ cd /var/www/ $ unzip CommunityServer.zip Você vai acessá-lo em http://localhost/CommunityServer/

http://www.mono-project.com/ASP.NEThttp://www.mono-project.com/Mod_monohttp://www.mono-project.com/AutoHostingInstruções para o Ubuntuhttps://help.ubuntu.com/community/ModMono

24

XSP− É um servidor utilizado para desenvolvimento− Escrito em C#− Roda tanto no runtime mono e no .NET− É a maneira mais simples para começar a testar− Tem suporte SSL e TLS− Suporta Debug− Não recomendado para ambientes de produção

$ cd /usr/lib/xsp/test $ xsp Listening on port: 8080 Listening on address: 0.0.0.0 Root directory: /home/cvs/mcs/class/corlib/Microsoft.Win32 Hit Return to stop the server.

25

FASTCGI

− Patrocionado pelo Google no Sumer of Code − Simplifica a configuração − Poder ser usado em vários servidores

− Apache, − Abyss − WebServer, − Cherokee, − LigthHttp, − Nginx

26

Problemas Comuns

− Colocar na pasta"Bin“ ao inves "bin"− Não colocar todas as todas as DLLs requeridas no

diretório bin− Problemas com performance− Falha de compilação, problema de compatibilidade

entre o mcs e o compilador da microsoft− http://

www.mono-project.com/ASP.NET_Mono_Specific_Configuration

27

HOSTING

− Alguns hosting com suporte a Mono com ASP.NET

− http://www.grokthis.net/− http://www.ubiquityhosting.com/

28

LINPLOY

− Tenho um servidor linux com mono + ASP.NET em minutos

− Crie sua imagem no Suse Studio e Faça deploy− http://www.linploy.com

Criando uma Aplicação ASP.NET no Linux

Aplicação Teste

Crie os diretórios$ mkdir asp-net$ cd asp-net/$ mkdir bin

Crie o Arquivo teste1.aspx<html> <head> <title>Teste às ASP .NET no Mono</title> </head> <body> Olá Mundo! </body></html>

31

Rodando a Aplicação no XSP

Para teste execute o xsp no diretório da aplicação

$ xspAdding applications '/:.'...Registering application: Host: any Port: any Virtual path: / Physical path: /home/pre/tmp/asp-netListening on port: 8080Listening on address: 0.0.0.0Root directory: /home/pre/tmp/asp-netHit Return to stop the server.

32

Aplicação Teste 2

Teste2.aspx

<%@ Page Language="c#" Inherits="Mono.Teste2" %><html> <head> <title>Teste II às ASP .NET no Mono</title> </head> <body> <asp:Label id="msg" runat="server" /> </body></html>

33

Arquivo CSharp

Compilando a Aplicação

$ mcs teste2.cs -r:System.Web -t:library -out:bin/teste1.dllCompilation succeeded

Mono C#Compiler

Mono C#Compiler

Tipo

Arquivo de

Saída

34

Usando MonoDevelop

35

Adicione a Referência Web

Usando MonoDevelop

36

Saída da Aplicação

Usando MonoDevelop

37

Usando MonoDevelop

38

Editor ASP.NET

39

DEMO - MonoLiveCD

− ASP.NET Foruns− BlogStart Kit− MojoPortal− E outros...

CASES

40

41

Case− MojoPortal− http://www.mojoportal.com− http://demo.mojoportal.com/

42

MindTouch− Escrito em C# , OpenSource− Ganhou diversos prêmios− Melhor Wiki da Atualidade− Usuários: NASA, MOZILA, CISCO, PALM, INTEL,

EMC2, Microsoft, U.S. ARM − www.mindtouch www.monobrasil.org

43

Case

− http://www.rainbowportal.net

© 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.