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

Semana Interop: Desenvolvendo Asp.NET para Linux

May 11, 2015

Download

Technology

Desenvolvendo Asp.NET para Linux
Portando Aplicativos
Mono e ASP.NET
Progrando ASP.NET no Mono
Criando uma aplicação
Cases de Sucesso
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Semana Interop: Desenvolvendo Asp.NET para Linux

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

21/01/2010

Page 2: Semana Interop: Desenvolvendo Asp.NET para Linux

Agenda

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

Page 3: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 4: Semana Interop: Desenvolvendo Asp.NET para Linux

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.

Page 5: Semana Interop: Desenvolvendo Asp.NET para Linux

5

APIs

Page 6: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 7: Semana Interop: Desenvolvendo Asp.NET para 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

Page 8: Semana Interop: Desenvolvendo Asp.NET para Linux

Portando aplicativos

8

Page 9: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 10: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 11: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 12: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 13: Semana Interop: Desenvolvendo Asp.NET para Linux

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.

Page 14: Semana Interop: Desenvolvendo Asp.NET para Linux

14

MOMA

Page 15: Semana Interop: Desenvolvendo Asp.NET para Linux

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.

Page 16: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 17: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 18: Semana Interop: Desenvolvendo Asp.NET para Linux

ASP.NET no Mono

Page 19: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 20: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 21: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 22: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 23: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 24: Semana Interop: Desenvolvendo Asp.NET para Linux

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.

Page 25: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 26: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 27: Semana Interop: Desenvolvendo Asp.NET para Linux

27

HOSTING

− Alguns hosting com suporte a Mono com ASP.NET

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

Page 28: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 29: Semana Interop: Desenvolvendo Asp.NET para Linux

Criando uma Aplicação ASP.NET no Linux

Page 30: Semana Interop: Desenvolvendo Asp.NET para 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>

Page 31: Semana Interop: Desenvolvendo Asp.NET para Linux

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.

Page 32: Semana Interop: Desenvolvendo Asp.NET para Linux

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>

Page 33: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 34: Semana Interop: Desenvolvendo Asp.NET para Linux

34

Usando MonoDevelop

Page 35: Semana Interop: Desenvolvendo Asp.NET para Linux

35

Adicione a Referência Web

Usando MonoDevelop

Page 36: Semana Interop: Desenvolvendo Asp.NET para Linux

36

Saída da Aplicação

Usando MonoDevelop

Page 37: Semana Interop: Desenvolvendo Asp.NET para Linux

37

Usando MonoDevelop

Page 38: Semana Interop: Desenvolvendo Asp.NET para Linux

38

Editor ASP.NET

Page 39: Semana Interop: Desenvolvendo Asp.NET para Linux

39

DEMO - MonoLiveCD

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

Page 40: Semana Interop: Desenvolvendo Asp.NET para Linux

CASES

40

Page 41: Semana Interop: Desenvolvendo Asp.NET para Linux

41

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

Page 42: Semana Interop: Desenvolvendo Asp.NET para Linux

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

Page 43: Semana Interop: Desenvolvendo Asp.NET para Linux

43

Case

− http://www.rainbowportal.net

Page 44: Semana Interop: Desenvolvendo Asp.NET para Linux

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