SlideShare une entreprise Scribd logo
1  sur  62
Télécharger pour lire hors ligne
CÓDIGO DA SESSÃO: #####

Interoperabilidade com .NET
em ambiente Mainframe
Alessandro de Oliveira Binhara
Projeto MONO BRASIL
binhara@gmail.com
@binhara
Agradecimentos
Apoio e Financiamento

Agradecimento Especial
Andre Ortega – Sócio da BENEFIX (Viabilização do Projeto)
Homero – Presidente da MegaData (Divulgação dos Dados)

2
Agenda
Projeto Z10
O Projeto Mono
Histórico
Motivações
Rodmap, Features
Compatibilidade, Estrutura, Ferramentas

Interoperabilidade de Aplicativos .Net
Migração para MainFrame Z10

3
Apresentação
Mestre em Tecnologia (UTFPR)
Bacharel em Processamento de Dados
Desenvolvedor a mais de 18 anos....
Mono Hacker desde 2003
Linguagens Fluente: C#, Java, PHP
Outras: C++, C , Pascal, Python, Ruby, Boo, etc.

EU RODEI ASP.NET no MAINFRAME !!
Atualmente atua como desenvolvedor/consultor para algumas empresas:

4
Projeto Z10
Objetivo
Avaliar se é possível executar o WebIss no Z10
Avaliar o esforço necessários do porte para o Z10
Descrever os problemas encontrados e as possíveis
soluções
Avaliar desempenho do Z10 em relação a
plataforma baixa como servidor de aplicação Web

5
Sistema WebISS

6
Microsoft lança o .NET
Projeto MONO
Miguel busca uma nova plataforma
para melhorar seus projetos.
Microsoft Lança a plataforma .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
Multi-linguagem
Coletor de Lixo
7
Nascimento
Projeto MONO
Criado por Miguel de Icaza em 2001
Criou o Gnome e a empresa Ximian para
dar suporte ao Gnome.

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.10 (atual)

9

Suporte C# 4.0, F# e Iron Ruby, IronPython
.NET Framework 4.0
Suporte Asp.Net MVC 3, Razor e WebPages
Suporte Asp.Net 4.0
VB.NET profile 2.0 e 4.0
Suporte WebMatrix.Data
Melhorias significativas no suporte WFC
Mono 2.10.7 beta
Is coming!!!
Suporte C# 5.0 (trunk 2.11)
Suporte NuGet
Suporte MSBuild 4.0
Suporte para Azure Libs
Suporte para o Phalanger 3.0

Mono 2.12!!!
C# 5 padrão
Tuned Parallel Framework
.NET 4.0 Core Suporte
Completa implementação do WCF/Silverligth
10
Phalanger
LINUX

11
O que é ?
Projeto MONO

12

http://www.ohloh.net/p/mono/analyses/latest
Contribuições Microsoft
Apache Licensed Libraries
Ajax.NET, ASP.NET MVC1, MVC2, MVC3
Silverligth ToolKit, Silverligth Tests
Managed Extensibility Framework (MEF)
System.Data.Services.Client (OData)
Dynamic Language Runtime

13
Plataformas Suportadas
Supported Architectures

s390, s390x (32 and 64
bits)
SPARC (32)

Runtime

Operating system

JIT

Linux

JIT

Solaris, Linux

PowerPC

JIT

Linux, Mac OSX, Wii, PlayStation 3

x86

JIT

Linux, FreeBSD, OpenBSD, NetBSD,
Microsoft Windows, Solaris, OS X

JIT

Linux, Solaris

JIT

x86-64: AMD64 and EM64T
(64 bit)
IA64 Itanium2 (64 bit)
ARM: little and big endian

Alpha
MIPS
HPPA
14

JIT

JIT

Linux
Linux (both old and new ABI),
iPhone , Android
Linux

JIT

Linux

JIT

Linux
Início do Mono
Interoperabilidade
Uso das ferramentas da Microsoft
Como criar um compilador C# 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#
15
Desenvolvedores
Comunidade
Rafael Teixeira, Alexandre Marcondes, Everaldo Canuto, Rodrigo
Bambo, Francisco Figueredo, mais de 500 pessoas na
comunidade de comiters.

16
C# Shell
Demos
Shell Interativo
Suporte a code completion
Suporte a GTK#

17
Compilador C# - MCS

COMPILA
COMPILA /USA

EXECUTA

EXECUTA

USA

USA
USA

18
Build Farm
Desenvolvimento
Consulta da implementação do framework
em comparação ao MS.NET
http://wrench.mono-project.com/builds

19
Mono Test Suite
Desenvolvimento
http://mono-project.com/Test_Suite

20
C# no Android
Portando aplicativos
Versão 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

21
Mono for Droid 4.0!!!
Suporte completo API Android 4.0
Integrado MonoDevelop e VisualStudio
Alta Perfomance compilado com código nativo
Tudo do .NET Linq, Delegats, Events, etc
CrossPlataform (IOS5, WinPhone7, Android)

22
C# no IPHONE
Portando 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
Suporte IOS 5 Integração com Xcode 4
Fácil Bind com bibliotecas C e Objective C
http://monotouch.net/

23
Comparação de Código

Objective C

C# Mono Touch

CFStringRef keys[] = {
kCTFontAttributeName,
kCTForegroundColorAttributeName
};
CFTypeRef bval[] = {
cfListLineCTFontRef,
CGColorGetConstantColor(kCGColorBlack)
};
attr = CFDictionaryCreate (kCFAllocatorDefault,
(const void **) &keys, (const void **) &bval,
sizeof(keys) / sizeof(keys[0]),
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);

var attrs = new CFStringAttributes {
Font = listLineCTFont,
ForegroundColor = UIColor.Black.CGColor
};

astr = CFAttributedStringCreate(kCFAllocatorDefault,
CFSTR("Hello World"), attr);
24

var astr = new NSAttributedString ("Hello World", attrs);
Quem já usa MonoTouch

25
GAMES em C#
Demos

MONO.SIMD Cases
SencondLive mudou do LSL para Mono
50x a 300x mais rápido

Unit3d
Usa C#, Boo, unityScritp
26
Mono Games
Implementação do XNA em Mono
Jogos 2D e iniciando agora 3D
Lider é um Brasileiro : Jalfx
Suporte IOS, Android, MACOSX, Linux, Windows
https://github.com/mono/MonoGame

27
Mono Mac
MonoMac 1.0 Março de 2011
Plataforma .NET para desenvolvimento nativo
para MacOS X
Mais de 40 exemplos completos
Suporte completo para os Componentes CoCoa
Bind nativos para o MacOSX
Empacotamento e Distribuição na AppStore
http://www.mono-project.com/MonoMac

28
Mono no Z10
Portando sua aplicação Asp.Net
Suse Linux Enterprise 11.3
for S390
Crie no VS e rode no Linux
Portando aplicativos
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

30
Sistema de Arquivos
Portando aplicativos
Cuidado com os caminhos
Cuidado com letras Maiúsculas e minúsculas
Nã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 Separadores
int index = exePath.LastIndexOf("");
exeDir = exePath.Substring(0, index);
exeFile = exePath.Substring(index+1);
Código mais portável
exeDir = Path.GetDirectoryName (exePath);
exeFile = Path.GetFileName (exePath);
31
Variáveis de Ambiente
Portando aplicativos
Variáveis de ambiente 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);

32
P/Invoke
Portando aplicativos
Chamadas a DLLs nativas a API Windows não
irão funcionar em outros sistemas, pois a API
não existe no Linux.
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.
33
MOMA
Portando aplicativos

34
Banco de Dados
Portando 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
É possível usar os dataproviders do mono no
.NET com VS para acessar os bancos livres.

35
Ferramentas
Portando aplicativos
Mono Develop
Importa soluções 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.

36
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 Distribuição linux
customizada para seu aplicativo
com o Suse Studio

37
ASP.NET
Portando aplicativos
Mono Suporte Asp.NET 1,2, 3 e 4.0
Suporta Asp.NET MVC 1,2 e 3
Rodando no Apache, Ngnix:
XSP, Mod_Mod , FastCGI

Suporta WebServices
Suporta Ajax.NET (Microsoft)
WCF quase completo
Exemplo
www.monobrasil.org

38
Instalação Mono Linux AMD
Suse Enterprise 11
Instalação dos pacotes via Zypper
Instalação do Suse Linux Mono Extensions
Compilação dos fontes do Mono
Atualização dos pacotes para o Mono 2.10
Tudo ocorreu na mais perfeita ordem.

39
Instalação Mono Z10

40
Mono 2.11 Instalado!!

41
Compatibilidade de Bibliotecas
Nunit,obout_slideMenu,ThoughtWorks, e World
São 100% compatíveis com o mono.

Texsharp, MagicAjax Mscaptcha
Podem funcionar parcialmente pois não fazem
chamadas ao Windows.

Component One (Relatórios)
Já as bibliotecas relacionadas a relatórios não irão
funcionar pois apresentam muitas chamadas a API
do Windows e será necessário remove-las e
substituí-las por uma biblioteca compatível.
42
Erro Página de Código

43
Ajustes no Código

4 Arquivos C# tinha acentuação no código.
1 Expressão Lambda estava acusando erro de
compilação pelo compilador do Mono.
1 ajuste no uso de alguns objetos de conexão
com o banco de dados que estava sendo usando
de uma forma muito genérica, usando a forma
específica foi resolvido.
SqlCommand cmd = new SqlCommand(commandString, sqlConnection);
cmd.Transaction = sqlTransaction;
cmd.ExecuteNonQuery();
dataTable = null;
44
Ajuste no Código
Erro de Sessão ao sair do Sistema.
Acontece um problema no Apache que bloqueia a
session do usuário obrigando a reiniciar o apache
cada vez que o usuário clica em sair do sistema.
É um bug no mono no método Session.Abandon();
Está corrigido na versão 2.10.1
Foi feita um ajuste usando o Session.RemoveAll();
corrigiu o problema e está funcionando como
esperado.

45
WebISS no MonoDevelop
Solução do WebIss é aberta e compilada sem
maiores problemas com os ajustes feitos no
ambiente do MonoDevelop.
Deploy do WebIss a partir do MonoDevelop

46
Apache no Z10
Suse Enterprise11 for S390
Pacotes desatualizados
Falta de bibliotecas
Recompilação do Apache e módulos mod_mono
Recompilação XSP
Não conseguimos compilar o FAST-CGI

47
WebISS rodando Linux/Z10

48
49
Considerações Compatibilidade

O Sistema WebIss não foi pensando para rodar sobre
plataforma linux, mesmo assim, eles esta funcionando
bem, com exceção dos relatórios.
Apenas com uma boa orientação técnica e usando
componentes 100% .NET, a própria evolução natural
do WebIss poderá rodar no Linux 100% sem nenhum
ajuste ou mudança no código.
O maior trabalho a ser realizado atualmente é a troca
do componente de relatórios.

50
WebServices

51
WCF
Existe apenas 1 método não implementado no
Mono. Mas este método é o método usado para
autenticar as chaves digitais.
Opções são :
Implementar a funcionalidade o Mono.
(Desaconselhado)
Mudar a implementação da Aplicação WCF.
O mais simples é migrar o WCF para WebServices,
pois não é utilizada nenhuma característica especial
do WFC nessa aplicação.
52
Bechmarks!!!!!
Resultados dos teste!!!
Algrítmos Genéricos

ArrayList
Mono Linux

Mono Z10
dotNet
54
Windows

StringBuilder

Adição de Integer & Floating

Exception

Reflection e recursão

452
1038
499

768
1926
639

5192
12164
5194

321
543
3057

4684
9787
5865
Criação de Objetos em Memória
Teste feito em C# mono e .net
Tempo em Mili segundos

Criação de Objetos em Memória
2000
1500
Mono AMD

1000

Mono Z10

500

.NET AMD

0
1k

10k
Quantidade de Objetos
Mono AMD
Mono Z10
.NET AMD

55

100k
1k
17
25
31

10k
115
146
93

100k
1059
1458
936
Teste SQL – 1 Thread .C#
Teste SQL Para 1mil Registros
18000
Tempo em mili segundos

16000
14000
12000
10000

Mono AMD

8000

Mono Z10

6000

.NET AMD

4000
2000

0
Criar
Memoria

Insert

Busca

update

Delete

Insert

Busca

update

Delete

Mono AMD

17

8727

936

9472

11402

Mono Z10

56

Criar Memoria

25

4337

959

4379

4149

.NET AMD

31

10077

1029

9406

9592
Teste SQL – 1 Thread .C#
Teste SQL para 10mil Registros
180000
Tempo em mili segundos

160000
140000
120000
100000

Mono AMD

80000

Mono Z10

60000

.NET AMD

40000
20000
0

Criar
Memoria

Insert
Mono AMD
Mono Z10
.NET AMD

57

Busca

update
Criar Memoria
115
146
93

Delete
Insert
93232
43677
99637

Busca
26885
33916
29749

update
137954
94313
154284

Delete
131444
101117
153645
Single e Multi Thread

O Mainframe parece ter uma performance
melhor com 1 única tarefa. Mas como mostrado
anteriormente com teste de múltiplas tarefas
simultâneas ele apresenta a mesma eficiência
do AMD em vários caso.
Num ambiente de WebServer ele parece não ser
adequado, pois ocorrem muitas threads para
serem atendidas de forma rápida para não
afetar o atendimento dos pedidos.
58
Resultados
SIM : é possível executar o WebIss no Z10 com mínimo de
esforço de programação e testes
Avaliar o esforço necessários do porte para o Z10
Troca dos componentes Ajax e Componentes de Relatórios
Conversão dos WCF para WebServices comuns
Migração das Chaves de Criptografia do ISS para o Apache

Descrever os problemas encontrados e as possíveis soluções
Necessidade de uma maior conjunto de Testes, Teste manuai e criação de
testes automáticos.

Avaliar desempenho do Z10 em relação a plataforma baixa como
servidor de aplicação Web

59

O Z10 teve performance equivalente a um AMD de 5 anos atrás. Com
certeza a aplicação não terá a mesma velocidade que tem usando a infra
estrutura de processadores Xeon atuais.
Conclusões
Z10 não é tão performático como um
INTEL/AMD para rodar uma aplicação Web
como o WEBISS.
Tudo que esta fora do ambiente do mainframe
se torna lento, e o Z10 não está preparado para
esse tipo de situação.
O Z10 não escala a aplicação sozinho, a
aplicação e o ambiente do sistema operacional
precisa ser construído para rodar nesse
ambiente.
60
61
Por favor preencha a
avaliação

Contenu connexe

Tendances

Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroRogério Moraes de Carvalho
 
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5Rogério Moraes de Carvalho
 
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...Rogério Moraes de Carvalho
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF CoreRogério Moraes de Carvalho
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoreRogério Moraes de Carvalho
 
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataformaTDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataformatdc-globalcode
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asteriskVicente Nobre
 
Frameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPFrameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPElton Minetto
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework CoreRogério Moraes de Carvalho
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Rogério Moraes de Carvalho
 
Apresentação Final a FINEP Projeto MonoBasic
Apresentação Final a FINEP Projeto MonoBasicApresentação Final a FINEP Projeto MonoBasic
Apresentação Final a FINEP Projeto MonoBasicAlessandro Binhara
 
W3af - Web Attack and Audit Framework
W3af - Web Attack and Audit FrameworkW3af - Web Attack and Audit Framework
W3af - Web Attack and Audit FrameworkLeandro Magnabosco
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Mini-Curso Python para Symbian
Mini-Curso Python para SymbianMini-Curso Python para Symbian
Mini-Curso Python para SymbianMarcel Caraciolo
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...Rogério Moraes de Carvalho
 

Tendances (20)

Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
 
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
 
Remobile
RemobileRemobile
Remobile
 
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
 
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataformaTDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asterisk
 
Frameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPFrameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHP
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
Apresentação Final a FINEP Projeto MonoBasic
Apresentação Final a FINEP Projeto MonoBasicApresentação Final a FINEP Projeto MonoBasic
Apresentação Final a FINEP Projeto MonoBasic
 
W3af - Web Attack and Audit Framework
W3af - Web Attack and Audit FrameworkW3af - Web Attack and Audit Framework
W3af - Web Attack and Audit Framework
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Mini-Curso Python para Symbian
Mini-Curso Python para SymbianMini-Curso Python para Symbian
Mini-Curso Python para Symbian
 
Microsoft .NET Framework
Microsoft .NET FrameworkMicrosoft .NET Framework
Microsoft .NET Framework
 
Docker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no AzureDocker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no Azure
 
Introdução à linguagem python
Introdução à linguagem pythonIntrodução à linguagem python
Introdução à linguagem python
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
 

Similaire à Interoperabilidade .NET Mainframe

ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010Norton Guimarães
 
O Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não WindowsO Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não WindowsAlessandro Binhara
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NETPedro Alves Jr.
 
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaRogério Moraes de Carvalho
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...Bruno Grange
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Laís Vidal
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETAlessandro Binhara
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioGeovani Ferreira Gonçalves
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo maisakamud
 

Similaire à Interoperabilidade .NET Mainframe (20)

.NET Open Source
.NET Open Source.NET Open Source
.NET Open Source
 
.NET Open Source 2009
.NET Open Source 2009.NET Open Source 2009
.NET Open Source 2009
 
Int305 projeto mono-final
Int305 projeto mono-finalInt305 projeto mono-final
Int305 projeto mono-final
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
O Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não WindowsO Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não Windows
 
O projeto Mono
O projeto MonoO projeto Mono
O projeto Mono
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NET
 
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
 
Introdução ao .NET
Introdução ao .NETIntrodução ao .NET
Introdução ao .NET
 
1º FasS2B 2010
1º FasS2B 20101º FasS2B 2010
1º FasS2B 2010
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Novidades do .NET 3.5
Novidades do .NET 3.5Novidades do .NET 3.5
Novidades do .NET 3.5
 
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NET
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual Studio
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais
 

Plus de Alessandro Binhara

Uma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptxUma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptxAlessandro Binhara
 
BigData e internte das coisas aplicada a engenharia
BigData e internte das coisas aplicada a engenhariaBigData e internte das coisas aplicada a engenharia
BigData e internte das coisas aplicada a engenhariaAlessandro Binhara
 
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaCase RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaAlessandro Binhara
 
Latinoware 2019 - DEsenvolvimento mobile em Nivel jedi
Latinoware 2019 - DEsenvolvimento mobile em Nivel jediLatinoware 2019 - DEsenvolvimento mobile em Nivel jedi
Latinoware 2019 - DEsenvolvimento mobile em Nivel jediAlessandro Binhara
 
2019 latinoware - O mundo novo da realidade virtual
2019 latinoware - O mundo novo da realidade virtual2019 latinoware - O mundo novo da realidade virtual
2019 latinoware - O mundo novo da realidade virtualAlessandro Binhara
 
Realidade Virtual e a Ciência de Dados -latinoware
Realidade Virtual e a Ciência de Dados -latinowareRealidade Virtual e a Ciência de Dados -latinoware
Realidade Virtual e a Ciência de Dados -latinowareAlessandro Binhara
 
Realidade Virtual e a Ciência de Dados
Realidade Virtual e a Ciência de DadosRealidade Virtual e a Ciência de Dados
Realidade Virtual e a Ciência de DadosAlessandro Binhara
 
A IMPORTÂNCIA DA PARTICIPAÇÃO NA GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...
A IMPORTÂNCIA DA PARTICIPAÇÃO NA  GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...A IMPORTÂNCIA DA PARTICIPAÇÃO NA  GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...
A IMPORTÂNCIA DA PARTICIPAÇÃO NA GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...Alessandro Binhara
 
BIG DATA & IoT: Tecnologias e  Aplicações
BIG DATA & IoT: Tecnologias e  AplicaçõesBIG DATA & IoT: Tecnologias e  Aplicações
BIG DATA & IoT: Tecnologias e  AplicaçõesAlessandro Binhara
 
Introduçãoo aws, escalando uma aplicação Web
Introduçãoo aws, escalando uma aplicação WebIntroduçãoo aws, escalando uma aplicação Web
Introduçãoo aws, escalando uma aplicação WebAlessandro Binhara
 
Desenvolvimento de Games para Mobile.
Desenvolvimento de Games para Mobile.Desenvolvimento de Games para Mobile.
Desenvolvimento de Games para Mobile.Alessandro Binhara
 
Curso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoCurso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoAlessandro Binhara
 
App CrossMobile com C# para Android, Iphone e WindowsPhone
App CrossMobile com C# para Android, Iphone e WindowsPhoneApp CrossMobile com C# para Android, Iphone e WindowsPhone
App CrossMobile com C# para Android, Iphone e WindowsPhoneAlessandro Binhara
 
Xamarin Interop - hands on android -
Xamarin Interop - hands on android - Xamarin Interop - hands on android -
Xamarin Interop - hands on android - Alessandro Binhara
 

Plus de Alessandro Binhara (20)

Uma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptxUma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptx
 
BigData e internte das coisas aplicada a engenharia
BigData e internte das coisas aplicada a engenhariaBigData e internte das coisas aplicada a engenharia
BigData e internte das coisas aplicada a engenharia
 
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaCase RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
 
Latinoware 2019 - DEsenvolvimento mobile em Nivel jedi
Latinoware 2019 - DEsenvolvimento mobile em Nivel jediLatinoware 2019 - DEsenvolvimento mobile em Nivel jedi
Latinoware 2019 - DEsenvolvimento mobile em Nivel jedi
 
2019 latinoware - O mundo novo da realidade virtual
2019 latinoware - O mundo novo da realidade virtual2019 latinoware - O mundo novo da realidade virtual
2019 latinoware - O mundo novo da realidade virtual
 
Realidade Virtual e a Ciência de Dados -latinoware
Realidade Virtual e a Ciência de Dados -latinowareRealidade Virtual e a Ciência de Dados -latinoware
Realidade Virtual e a Ciência de Dados -latinoware
 
Realidade Virtual e a Ciência de Dados
Realidade Virtual e a Ciência de DadosRealidade Virtual e a Ciência de Dados
Realidade Virtual e a Ciência de Dados
 
A IMPORTÂNCIA DA PARTICIPAÇÃO NA GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...
A IMPORTÂNCIA DA PARTICIPAÇÃO NA  GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...A IMPORTÂNCIA DA PARTICIPAÇÃO NA  GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...
A IMPORTÂNCIA DA PARTICIPAÇÃO NA GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...
 
Curso de Férias - Robótica
Curso de Férias -  Robótica Curso de Férias -  Robótica
Curso de Férias - Robótica
 
BIG DATA & IoT: Tecnologias e  Aplicações
BIG DATA & IoT: Tecnologias e  AplicaçõesBIG DATA & IoT: Tecnologias e  Aplicações
BIG DATA & IoT: Tecnologias e  Aplicações
 
Introduçãoo aws, escalando uma aplicação Web
Introduçãoo aws, escalando uma aplicação WebIntroduçãoo aws, escalando uma aplicação Web
Introduçãoo aws, escalando uma aplicação Web
 
Bigadata casese opotunidades
Bigadata casese opotunidadesBigadata casese opotunidades
Bigadata casese opotunidades
 
Xamarin plataform
Xamarin plataformXamarin plataform
Xamarin plataform
 
Desenvolvimento de Games para Mobile.
Desenvolvimento de Games para Mobile.Desenvolvimento de Games para Mobile.
Desenvolvimento de Games para Mobile.
 
Games imersivos
Games imersivosGames imersivos
Games imersivos
 
Abertura - interopmix2014
Abertura - interopmix2014Abertura - interopmix2014
Abertura - interopmix2014
 
Curso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoCurso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto Basico
 
Treinamento csharp mono
Treinamento csharp monoTreinamento csharp mono
Treinamento csharp mono
 
App CrossMobile com C# para Android, Iphone e WindowsPhone
App CrossMobile com C# para Android, Iphone e WindowsPhoneApp CrossMobile com C# para Android, Iphone e WindowsPhone
App CrossMobile com C# para Android, Iphone e WindowsPhone
 
Xamarin Interop - hands on android -
Xamarin Interop - hands on android - Xamarin Interop - hands on android -
Xamarin Interop - hands on android -
 

Interoperabilidade .NET Mainframe

  • 1. CÓDIGO DA SESSÃO: ##### Interoperabilidade com .NET em ambiente Mainframe Alessandro de Oliveira Binhara Projeto MONO BRASIL binhara@gmail.com @binhara
  • 2. Agradecimentos Apoio e Financiamento Agradecimento Especial Andre Ortega – Sócio da BENEFIX (Viabilização do Projeto) Homero – Presidente da MegaData (Divulgação dos Dados) 2
  • 3. Agenda Projeto Z10 O Projeto Mono Histórico Motivações Rodmap, Features Compatibilidade, Estrutura, Ferramentas Interoperabilidade de Aplicativos .Net Migração para MainFrame Z10 3
  • 4. Apresentação Mestre em Tecnologia (UTFPR) Bacharel em Processamento de Dados Desenvolvedor a mais de 18 anos.... Mono Hacker desde 2003 Linguagens Fluente: C#, Java, PHP Outras: C++, C , Pascal, Python, Ruby, Boo, etc. EU RODEI ASP.NET no MAINFRAME !! Atualmente atua como desenvolvedor/consultor para algumas empresas: 4
  • 5. Projeto Z10 Objetivo Avaliar se é possível executar o WebIss no Z10 Avaliar o esforço necessários do porte para o Z10 Descrever os problemas encontrados e as possíveis soluções Avaliar desempenho do Z10 em relação a plataforma baixa como servidor de aplicação Web 5
  • 7. Microsoft lança o .NET Projeto MONO Miguel busca uma nova plataforma para melhorar seus projetos. Microsoft Lança a plataforma .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 Multi-linguagem Coletor de Lixo 7
  • 8. Nascimento Projeto MONO Criado por Miguel de Icaza em 2001 Criou o Gnome e a empresa Ximian para dar suporte ao Gnome. 8
  • 9. 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.10 (atual) 9 Suporte C# 4.0, F# e Iron Ruby, IronPython .NET Framework 4.0 Suporte Asp.Net MVC 3, Razor e WebPages Suporte Asp.Net 4.0 VB.NET profile 2.0 e 4.0 Suporte WebMatrix.Data Melhorias significativas no suporte WFC
  • 10. Mono 2.10.7 beta Is coming!!! Suporte C# 5.0 (trunk 2.11) Suporte NuGet Suporte MSBuild 4.0 Suporte para Azure Libs Suporte para o Phalanger 3.0 Mono 2.12!!! C# 5 padrão Tuned Parallel Framework .NET 4.0 Core Suporte Completa implementação do WCF/Silverligth 10
  • 12. O que é ? Projeto MONO 12 http://www.ohloh.net/p/mono/analyses/latest
  • 13. Contribuições Microsoft Apache Licensed Libraries Ajax.NET, ASP.NET MVC1, MVC2, MVC3 Silverligth ToolKit, Silverligth Tests Managed Extensibility Framework (MEF) System.Data.Services.Client (OData) Dynamic Language Runtime 13
  • 14. Plataformas Suportadas Supported Architectures s390, s390x (32 and 64 bits) SPARC (32) Runtime Operating system JIT Linux JIT Solaris, Linux PowerPC JIT Linux, Mac OSX, Wii, PlayStation 3 x86 JIT Linux, FreeBSD, OpenBSD, NetBSD, Microsoft Windows, Solaris, OS X JIT Linux, Solaris JIT x86-64: AMD64 and EM64T (64 bit) IA64 Itanium2 (64 bit) ARM: little and big endian Alpha MIPS HPPA 14 JIT JIT Linux Linux (both old and new ABI), iPhone , Android Linux JIT Linux JIT Linux
  • 15. Início do Mono Interoperabilidade Uso das ferramentas da Microsoft Como criar um compilador C# 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# 15
  • 16. Desenvolvedores Comunidade Rafael Teixeira, Alexandre Marcondes, Everaldo Canuto, Rodrigo Bambo, Francisco Figueredo, mais de 500 pessoas na comunidade de comiters. 16
  • 17. C# Shell Demos Shell Interativo Suporte a code completion Suporte a GTK# 17
  • 18. Compilador C# - MCS COMPILA COMPILA /USA EXECUTA EXECUTA USA USA USA 18
  • 19. Build Farm Desenvolvimento Consulta da implementação do framework em comparação ao MS.NET http://wrench.mono-project.com/builds 19
  • 21. C# no Android Portando aplicativos Versão 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 21
  • 22. Mono for Droid 4.0!!! Suporte completo API Android 4.0 Integrado MonoDevelop e VisualStudio Alta Perfomance compilado com código nativo Tudo do .NET Linq, Delegats, Events, etc CrossPlataform (IOS5, WinPhone7, Android) 22
  • 23. C# no IPHONE Portando 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 Suporte IOS 5 Integração com Xcode 4 Fácil Bind com bibliotecas C e Objective C http://monotouch.net/ 23
  • 24. Comparação de Código Objective C C# Mono Touch CFStringRef keys[] = { kCTFontAttributeName, kCTForegroundColorAttributeName }; CFTypeRef bval[] = { cfListLineCTFontRef, CGColorGetConstantColor(kCGColorBlack) }; attr = CFDictionaryCreate (kCFAllocatorDefault, (const void **) &keys, (const void **) &bval, sizeof(keys) / sizeof(keys[0]), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); var attrs = new CFStringAttributes { Font = listLineCTFont, ForegroundColor = UIColor.Black.CGColor }; astr = CFAttributedStringCreate(kCFAllocatorDefault, CFSTR("Hello World"), attr); 24 var astr = new NSAttributedString ("Hello World", attrs);
  • 25. Quem já usa MonoTouch 25
  • 26. GAMES em C# Demos MONO.SIMD Cases SencondLive mudou do LSL para Mono 50x a 300x mais rápido Unit3d Usa C#, Boo, unityScritp 26
  • 27. Mono Games Implementação do XNA em Mono Jogos 2D e iniciando agora 3D Lider é um Brasileiro : Jalfx Suporte IOS, Android, MACOSX, Linux, Windows https://github.com/mono/MonoGame 27
  • 28. Mono Mac MonoMac 1.0 Março de 2011 Plataforma .NET para desenvolvimento nativo para MacOS X Mais de 40 exemplos completos Suporte completo para os Componentes CoCoa Bind nativos para o MacOSX Empacotamento e Distribuição na AppStore http://www.mono-project.com/MonoMac 28
  • 29. Mono no Z10 Portando sua aplicação Asp.Net Suse Linux Enterprise 11.3 for S390
  • 30. Crie no VS e rode no Linux Portando aplicativos 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 30
  • 31. Sistema de Arquivos Portando aplicativos Cuidado com os caminhos Cuidado com letras Maiúsculas e minúsculas Nã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 Separadores int index = exePath.LastIndexOf(""); exeDir = exePath.Substring(0, index); exeFile = exePath.Substring(index+1); Código mais portável exeDir = Path.GetDirectoryName (exePath); exeFile = Path.GetFileName (exePath); 31
  • 32. Variáveis de Ambiente Portando aplicativos Variáveis de ambiente 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); 32
  • 33. P/Invoke Portando aplicativos Chamadas a DLLs nativas a API Windows não irão funcionar em outros sistemas, pois a API não existe no Linux. 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. 33
  • 35. Banco de Dados Portando 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 É possível usar os dataproviders do mono no .NET com VS para acessar os bancos livres. 35
  • 36. Ferramentas Portando aplicativos Mono Develop Importa soluções 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. 36
  • 37. 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 Distribuição linux customizada para seu aplicativo com o Suse Studio 37
  • 38. ASP.NET Portando aplicativos Mono Suporte Asp.NET 1,2, 3 e 4.0 Suporta Asp.NET MVC 1,2 e 3 Rodando no Apache, Ngnix: XSP, Mod_Mod , FastCGI Suporta WebServices Suporta Ajax.NET (Microsoft) WCF quase completo Exemplo www.monobrasil.org 38
  • 39. Instalação Mono Linux AMD Suse Enterprise 11 Instalação dos pacotes via Zypper Instalação do Suse Linux Mono Extensions Compilação dos fontes do Mono Atualização dos pacotes para o Mono 2.10 Tudo ocorreu na mais perfeita ordem. 39
  • 42. Compatibilidade de Bibliotecas Nunit,obout_slideMenu,ThoughtWorks, e World São 100% compatíveis com o mono. Texsharp, MagicAjax Mscaptcha Podem funcionar parcialmente pois não fazem chamadas ao Windows. Component One (Relatórios) Já as bibliotecas relacionadas a relatórios não irão funcionar pois apresentam muitas chamadas a API do Windows e será necessário remove-las e substituí-las por uma biblioteca compatível. 42
  • 43. Erro Página de Código 43
  • 44. Ajustes no Código 4 Arquivos C# tinha acentuação no código. 1 Expressão Lambda estava acusando erro de compilação pelo compilador do Mono. 1 ajuste no uso de alguns objetos de conexão com o banco de dados que estava sendo usando de uma forma muito genérica, usando a forma específica foi resolvido. SqlCommand cmd = new SqlCommand(commandString, sqlConnection); cmd.Transaction = sqlTransaction; cmd.ExecuteNonQuery(); dataTable = null; 44
  • 45. Ajuste no Código Erro de Sessão ao sair do Sistema. Acontece um problema no Apache que bloqueia a session do usuário obrigando a reiniciar o apache cada vez que o usuário clica em sair do sistema. É um bug no mono no método Session.Abandon(); Está corrigido na versão 2.10.1 Foi feita um ajuste usando o Session.RemoveAll(); corrigiu o problema e está funcionando como esperado. 45
  • 46. WebISS no MonoDevelop Solução do WebIss é aberta e compilada sem maiores problemas com os ajustes feitos no ambiente do MonoDevelop. Deploy do WebIss a partir do MonoDevelop 46
  • 47. Apache no Z10 Suse Enterprise11 for S390 Pacotes desatualizados Falta de bibliotecas Recompilação do Apache e módulos mod_mono Recompilação XSP Não conseguimos compilar o FAST-CGI 47
  • 49. 49
  • 50. Considerações Compatibilidade O Sistema WebIss não foi pensando para rodar sobre plataforma linux, mesmo assim, eles esta funcionando bem, com exceção dos relatórios. Apenas com uma boa orientação técnica e usando componentes 100% .NET, a própria evolução natural do WebIss poderá rodar no Linux 100% sem nenhum ajuste ou mudança no código. O maior trabalho a ser realizado atualmente é a troca do componente de relatórios. 50
  • 52. WCF Existe apenas 1 método não implementado no Mono. Mas este método é o método usado para autenticar as chaves digitais. Opções são : Implementar a funcionalidade o Mono. (Desaconselhado) Mudar a implementação da Aplicação WCF. O mais simples é migrar o WCF para WebServices, pois não é utilizada nenhuma característica especial do WFC nessa aplicação. 52
  • 54. Algrítmos Genéricos ArrayList Mono Linux Mono Z10 dotNet 54 Windows StringBuilder Adição de Integer & Floating Exception Reflection e recursão 452 1038 499 768 1926 639 5192 12164 5194 321 543 3057 4684 9787 5865
  • 55. Criação de Objetos em Memória Teste feito em C# mono e .net Tempo em Mili segundos Criação de Objetos em Memória 2000 1500 Mono AMD 1000 Mono Z10 500 .NET AMD 0 1k 10k Quantidade de Objetos Mono AMD Mono Z10 .NET AMD 55 100k 1k 17 25 31 10k 115 146 93 100k 1059 1458 936
  • 56. Teste SQL – 1 Thread .C# Teste SQL Para 1mil Registros 18000 Tempo em mili segundos 16000 14000 12000 10000 Mono AMD 8000 Mono Z10 6000 .NET AMD 4000 2000 0 Criar Memoria Insert Busca update Delete Insert Busca update Delete Mono AMD 17 8727 936 9472 11402 Mono Z10 56 Criar Memoria 25 4337 959 4379 4149 .NET AMD 31 10077 1029 9406 9592
  • 57. Teste SQL – 1 Thread .C# Teste SQL para 10mil Registros 180000 Tempo em mili segundos 160000 140000 120000 100000 Mono AMD 80000 Mono Z10 60000 .NET AMD 40000 20000 0 Criar Memoria Insert Mono AMD Mono Z10 .NET AMD 57 Busca update Criar Memoria 115 146 93 Delete Insert 93232 43677 99637 Busca 26885 33916 29749 update 137954 94313 154284 Delete 131444 101117 153645
  • 58. Single e Multi Thread O Mainframe parece ter uma performance melhor com 1 única tarefa. Mas como mostrado anteriormente com teste de múltiplas tarefas simultâneas ele apresenta a mesma eficiência do AMD em vários caso. Num ambiente de WebServer ele parece não ser adequado, pois ocorrem muitas threads para serem atendidas de forma rápida para não afetar o atendimento dos pedidos. 58
  • 59. Resultados SIM : é possível executar o WebIss no Z10 com mínimo de esforço de programação e testes Avaliar o esforço necessários do porte para o Z10 Troca dos componentes Ajax e Componentes de Relatórios Conversão dos WCF para WebServices comuns Migração das Chaves de Criptografia do ISS para o Apache Descrever os problemas encontrados e as possíveis soluções Necessidade de uma maior conjunto de Testes, Teste manuai e criação de testes automáticos. Avaliar desempenho do Z10 em relação a plataforma baixa como servidor de aplicação Web 59 O Z10 teve performance equivalente a um AMD de 5 anos atrás. Com certeza a aplicação não terá a mesma velocidade que tem usando a infra estrutura de processadores Xeon atuais.
  • 60. Conclusões Z10 não é tão performático como um INTEL/AMD para rodar uma aplicação Web como o WEBISS. Tudo que esta fora do ambiente do mainframe se torna lento, e o Z10 não está preparado para esse tipo de situação. O Z10 não escala a aplicação sozinho, a aplicação e o ambiente do sistema operacional precisa ser construído para rodar nesse ambiente. 60
  • 61. 61
  • 62. Por favor preencha a avaliação