tecnologias web rodrigo cristiano silva [email protected]

32
Tecnologias Web Rodrigo Cristiano Silva [email protected]

Upload: internet

Post on 18-Apr-2015

140 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Tecnologias Web

Rodrigo Cristiano Silva

[email protected]

Page 2: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Agenda

Page 3: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

A era das aplicações monolíticas Hoje em dia, a maioria das aplicações Internet que usamos

podem ser consideradas monolíticas, ou seja, não são capazes de compartilhar funcionalidades com outras aplicações

Modelo de desenvolvimento de sucesso, mas que apresenta as seguintes fraquezas: Aplicações amarradas a plataformas ou tecnologias específicas

Dificilmente podem ser estendidas Para fazer a integração de aplicações é necessário um novo

projeto Compartilhar código entre aplicações não é uma tarefa fácil

Linguagens de programação diferentes Às vezes, queremos uma simples informação como a nota de

uma prova, entretanto, na maioria dos casos, a única forma que temos para conseguir essa informação é através de uma interface gráfica que pode ser inviável para conexões lentas ou dispositivos móveis

Page 4: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Revolução dos Componentes Desenvolvedores gastavam grande parte do seu

tempo resolvendo problemas que já tinham resolvido

Desenvolvedores precisavam organizar as aplicações cuidadosamente para ter a chance de reutilizar código

Tudo mudou dramáticamente quando surgiram as tecnologias de componentes como o COM da Microsoft

A tecnologia COM permitia empacotar funcionalidades em componentes reutilizáveis com interfaces bem definidas

A tecnologia COM ajudou a acabar com a era das aplicações monolíticas

Page 5: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Web Services Web services são unidades lógicas de programação

individuais que existem em um servidor web Podem ser facilmente integrados com todos os tipos

de aplicação, desde uma aplicação web até uma aplicação console

Os web services são ainda melhores que a tecnologia COM, uma vez que foram construídos sobre uma fundação de padrões abertos como XML, SOAP, WSDL, etc.

O padrão mais importante para os web services é o XML. Como ele é baseado em texto simples, chamadas a web services podem usar o protocolo HTTP. Outras tecnologias de objetos distribuídos, tais como DCOM, são muito mais complexas

Page 6: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Web ServicesCaracterísticas Interfaces para transações e regras de negócios Baseado em protocolos e padrões como: XML,

WSDL, SOAP, HTTP e UDDI Tecnologia de padrão aberto definida pelo W3C,

utilizada por empresas como a SUN, Microsoft, IBM e HP

Residem em um servidor Web, como as páginas de Internet e têm um endereço URL

Podem ser utilizados em ambientes com firewalls São chamados por outros programas, e recebem

seus parâmetros em formato XML Respondem às chamadas com dados formatados

em XML

Page 7: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Web Site: HTML Cliente:Web Site: HTML Cliente:

Web Service: XML Cliente:Web Service: XML Cliente:

O BrowserO Browser

WebWebServiceService

SistemasSistemas

Exibe a informação Exibe a informação para um usuário, para um usuário, que reage ou não a que reage ou não a elaela

O sistema que recebe O sistema que recebe a informação (Excel, a informação (Excel, ERP) processa a ERP) processa a informação assim que informação assim que a recebea recebe

Page 8: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Padrões abertos utilizados pelos Web Services

Page 9: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Comunicação com um Web Service

Page 10: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Web ServicesBasics Todo Web Service (WS) é uma classe

Um cliente pode criar uma instância de um WS e usar seus métodos como se fosse qualquer outra classe definida localmente

Namespace: System.Web.Services Um WS consiste em:

Um arquivo .asmx: arquivo através do qual são feitas as requisições ao serviço (análogo ao .aspx dos web forms)

Classe do WS: contém as funcionalidades do serviço (código). Herda System.Web.Services.WebService

Um ou mais métodos: métodos do WS marcados com o atributo [WebMethod]. Este atributo torna o método disponível para ser acessado pelas aplicações que usam o WS

ASP.NET gerencia detalhes de nível mais baixo Por exemplo, não é necessário criar um documento WSDL ou

uma mensagem SOAP

Page 11: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Criando um Web Service

WS´s podem ser adicionados a qualquer aplicação web

Não devemos usar o ASP.NET Development Server para hospedar WS´s, uma vez que o Visual Studio escolhe uma nova porta cada vez que ele é iniciado

IIS para hospedar o WS: Criar pasta abaixo do "home directory" do IIS Criar diretório virtual Criar novo web site escolhendo HTTP no "Location box" Adicionar um WS ao projeto

Page 12: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Documentando o Web Service

É possível adicionar descrições nos atributos [WebMethod] e [WebService]

Exemplos: [WebMethod(Description="Teste")] [WebService(Description="Teste",Namespace="w

ww.facens.br/ws")]

Page 13: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Tipos de retorno de um Web Service

Básicos: int, float, bool, string e DateTime

Enumerations Tipos definidos com a palavra chave enum

DataSet e DataTable Útil para a troca de informações recuperadas de um BD

XML Nodes (System.XML.XMLNode) Representam porções de um documento XML

Arrays e Collections Arrays de qualquer tipo suportado pela framework ou

collections como o ArrayList

Page 14: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Proxy Class

A proxy class atua entre o código da aplicação cliente e o WS

Quando o cliente quer invocar um web method, ele chama o método correspondente do objeto proxy

A classe proxy de forma transparente envia e recebe dados usando chamadas SOAP

Poderíamos criar e receber mensagens SOAP, mas isso exigiria um bom conhecimento de SOAP e seria muito mais complexo

Page 15: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Proxy Class

Existem duas maneiras para criar uma classe proxy: WSDL.exe command line tool "Add Web Reference" do Visual Studio

Page 16: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Gerenciamento de Estado

Um WS usualmente é desenvolvido como uma stateless class

Métodos são independentes e não retêm quaisquer informações entre requisições

Desabilitado por padrão Podemos habilitar para um método

específico: [WebMethod(EnableSession=true)]

Page 17: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Segurança nos Web Services

Transmitem texto puro (clear text), o que significa facilidade de espionagem dos dados ou modificação dos mesmos Solução: SSL

WS´s podem precisar autenticar e autorizar usuários, para isso temos duas opções: Windows Authentication (IIS + ASP.NET) Código customizado

Um dos métodos do WS é responsável pela autenticação

Page 18: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

AJAX-Enabled Web Services

Existem situações nas quais o modelo de carregamento parcial não é apropriado e outras situações em que ele é simplesmente perfeito.

Quando o cliente necessita que uma operação específica seja executada no servidor de forma puramente stateless, devemos considerar outras opções que não o carregamento parcial.

Entra em cena as chamadas remotas a métodos do servidor.

Page 19: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Arquitetura do Servidor Orientada a Serviços Como o título do slide já descreve, a arquitetura do servidor deve

ser constituída de serviços. Para ser invocado a partir de uma página ASP.NET AJAX, o serviço

remoto deve atender a alguns requerimentos, os mais rigorosos estão relacionados à localização do endpoint e à plataforma utilizada. Serviços AJAX-Enabled devem ser hospedados no mesmo domínio a partir do

qual a chamada é feita. Isso significa que o serviço deve ser um ASP.NET XML Web Service (um endpoint .asmx) e deve ser hospedado na mesma aplicação IIS do mesmo servidor Web que a aplicação ASP.NET.

Resumidamente, existem três maneiras de definir serviços para uma aplicação ASP.NET AJAX: ASP.NET XML Web Services com um endpoint .asmx; WCF Services com um endpoint .svc; Métodos da mesma página que executa as chamadas com um endpoint .aspx.

Page 20: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Serialização de Dados

O formato de serialização comum a ambos pontos é a JavaScript Object Notation (JSON).

JSON é um formato baseado em texto especificamente projetado para mover o estado de um objeto através de camadas.

A JSON descreve o estado de um objeto como mostrado a seguir: {“ID”=“ALFKI”, “Company”:”Alfred Futterkiste”}

A string acima denota um objeto com duas propriedades (ID e Company) e seus respectivos valores serializados.

Page 21: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Web Services para Aplicações ASP.NET AJAX O ASP.NET não permite que sejam feitas chamadas a qualquer Web

Service baseado em SOAP a partir do JavaScript. Quando usamos o AJAX Extensions, podemos usar o JavaScript para fazer

chamadas a algum código de servidor dentro das fronteiras da aplicação. De alguma forma, o código de servidor da aplicação deve ser exposto ao

cliente: No ASP.NET 2.0 com AJAX Extensions instalado, podemos contar somente com ASP.NET

XML Web Services (modificados para retornar dados no formato JSON); No ASP.NET 3.5, podemos também utilizar serviços WCF.

Por padrão, os Web Services ASP.NET trabalham enviando e recebendo pacotes SOAP ao invés de pacotes JSON e expõem seus contratos usando WSDL.

O arquivo web.config de uma aplicação ASP.NET AJAX pode modificar o HTTP handler que recebe requisições a arquivos .asmx e redirecionar tais chamadas a um handler que entenda a JSON.

Page 22: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Definindo a API Remota

Um contrato é usado para especificar o que o endpoint no servidor oferece aos clientes.

Um ASP.NET Web Service não requer um contrato explícito, ao contrário de um WCF Service onde um contrato é exigido.

Utilizar uma interface no projeto da API produz um código mais limpo e é uma boa prática de programação.

Uma vez definido o contrato (interface), cria-se uma classe que implementa a interface.

Finalmente, publica-se a API e permite-se que o ASP.NET AJAX runtime faça chamadas a partir do cliente.

Page 23: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Publicando o Contrato

A publicação do contrato significa tornar a API visível ao JavaScript de uma página cliente e, conseqüentemente, habilitar o JavaScript da página a invocar métodos da API.

A publicação de um contrato significa gerar uma JavaScript proxy class que possa ser usada pelos scripts embutidos na página.

Quando a API é implementada através de um Web Service, registra-se o serviço através do controle script manager da página ASP.NET AJAX.

Também é necessário adicionar um HTTP handler especial para requisições a arquivos .asmx no arquivo web.config da aplicação.

Page 24: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Criando um Web Service AJAX

Existem duas principais diferenças entre ASP.NET AJAX Web Services e ASP.NET XML Web Services: Quando trabalhamos com ASP.NET AJAX Web Services, usamos

o contrato para atender aos requisitos de uma aplicação específica ao invés de configurar o comportamento de um serviço público.

Precisamos usar um novo atributo junto a classe do Web Service que não é permitido em ASP.NET XML Web Service tradicional.

No final, um ASP.NET AJAX Web Service deve ter duas interfaces publicas: a interface baseada em JSON e a interface clássica baseada em SOAP exposta a qualquer cliente de qualquer plataforma.

Page 25: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

O Atributo ScriptService O atributo ScriptService indica que o serviço foi projetado para

aceitar chamadas de proxies baseados em JavaScript.

Page 26: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Bloqueando Clientes SOAP Podemos optar por inibir clientes SOAP de realizar chamadas ao

serviço. Para isso, basta inserir as configurações abaixo no arquivo web.config da aplicação ASP.NET que hospeda o serviço:

Page 27: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Definindo Métodos para um Web Service Métodos públicos da classe do Web Service que recebem o atributo

WebMethod podem ser invocados a partir da página cliente. Qualquer método é invocado usando o verbo POST do HTTP e

retorna seus valores como um objeto JSON. Podemos mudar essas configurações padrões para cada método

usando um atributo opcional chamado ScriptMethod.

Page 28: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Propriedades do Atributo ScriptMethod

Page 29: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Registrando AJAX Web Services

Page 30: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Configurando Aplicações ASP.NET para Hospedar AJAX Web Services

Para permitir que a aplicação ASP.NET AJAX faça chamadas ao Web Service, precisamos adicionar as configurações a seguir ao arquivo web.config da aplicação.

Essas configurações são incluídas por padrão no arquivo web.config gerado pelo Visual Studio quando criamos um projeto Web AJAX-enabled.

Page 31: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Proxy Class

Page 32: Tecnologias Web Rodrigo Cristiano Silva rodrigo@facens.br

Executando Chamadas Remotas