Computação Orientada aos Serviços. WCF Semestre de Inverno 11/12 (Parte 1)

Documentos relacionados
Computação Orientada aos Serviços. WF (parte 1) Semestre de Inverno 12/13

Lógica de Negócio com WCF

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1.

Programação para Internet Avançada. 4. Web Services. Nuno Miguel Gil Fonseca

Prof. Jhonatan Fernando

Grupo I [6,6v] Responda com os valores que se observam depois da chamada acontecer. 1 Falta na mensagem de resposta. Valor retornado na chamada

FBV - Linguagem de Programação II. Um pouco sobre Java

Criação de um Web Services em.net

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

UNIVERSIDADE. Sistemas Distribuídos

WSDL e UDDI. Pedro Miguel Martins Nunes WSDL. WSDL Exemplo prático Resumo UDDI. Serviço UDDI Estruturas de dados UDDI e WSDL API Resumo

Guia de Fatores de Qualidade de OO e Java

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Comunicando através da rede

Uma introdução sobre WCF Windows Communication Foundation

SOA Introdução. SOA Visão Departamental das Organizações

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Web services. Um web service é qualquer software que está disponível através da Internet através de uma interface XML.

Profº. Enrique Pimentel Leite de Oliveira

Serviços Web: Arquitetura

SOA na Prática Ricardo Limonta

itec h- ON & E ngenharia de S oftware Joel Carvalho - 05/05/2011 Novas Tecnologias Aplicadas à Eng. de So5.

Criação de um Web Services em.net

REST. Caio Nakashima

Sistemas Distribuídos

EMENTA DO CURSO. Tópicos:

DEPARTAMENTO DE COMPUTAÇÃO CURSO DE PÓS-GRADUAÇÃO EM ENGENHARIA DE SOFTWARE COM UML LATO-SENSU CARLOS EDUARDO PASQUETO BORIN

Adriano Reine Bueno Rafael Barros Silva

R/3 e SAP WAS. 8/28/2003 José Alves Marques. R/3 e SAP WAS(2)

INT-9: Implementing ESB Processes with OpenEdge and Sonic David Cleary

Departamento de Informática

DESENVOLVIMENTO DE SOFTWARE AULA 1

Computação Orientada aos Serviços. WF (parte 1) Semestre de Inverno 13/14

UFG - Instituto de Informática

Connection String usada por uma Class Library

Trabalho Prático Nº1 Introdução ao C#.NET

OURO MODERNO Web Designer APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

Universidade da Beira Interior

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -HTML 5: ARMAZENAMENTO DE DADOS (CLIENTE) Prof. Angelo Augusto Frozza, M.Sc.

Web Services. Autor: Rômulo Rosa Furtado

Um Driver NDIS Para Interceptação de Datagramas IP

Aspectos técnicos do desenvolvimento baseado em componentes

Desenvolvimento de aplicações para a Cloud. Queue

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

Sistemas Distribuídos e Paralelos

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

MADALENA PEREIRA DA SILVA SLA Sociedade Lageana de Educação DCET Departamento de Ciências Exatas e Tecnológica

Capítulo 5. Tratamento de excepções

Requisitos para a Federação de um serviço web. Serviço Utilizador RCTS Janeiro de 2010

Programação por Objectos. Java

Orientação a Objetos com Java

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

UNIVERSIDADE. Sistemas Distribuídos

An enterprise distributed system

Livro de Receitas. Modelação Engenharia de Software Sistemas Distribuídos Versão 1.1. Framework de aplicações com Web Services

Universidade Federal de Juiz de Fora Ciência da Computação Sistemas Distribuídos Professor Ciro Barbosa

Service Oriented Architecture (SOA)

Sistemas Distribuídos

Desenvolvimento Cliente-Servidor 1

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto:

Categorias de Padrões

1

ASP.NET. Guia do Desenvolvedor. Felipe Cembranelli. Novatec Editora.

Um pouco do Java. Prof. Eduardo

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

A interface do Microsoft Visual Studio 2005

Manual de Integração SMS

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular SISTEMAS DISTRIBUÍDOS Ano Lectivo 2012/2013

Sistemas Distribuídos: Conceitos e Projeto Controle de Acesso

Trabalho de Sistemas Distribuídos

Web Technologies. Tópicos da apresentação

THREADS EM JAVA. George Gomes Cabral

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

Programação de Sistemas

Programação de Sistemas

ACTOS PROFISSIONAIS GIPE. Gabinete de Inovação Pedagógica

COM/OLE 11. Engenharia Informática Instituto Superior de Engenharia do Porto. Alexandre Bragança 1998/99

COLIBRI Ambiente Colaborativo Multimédia MÓDULO MOODLE. Rui Ribeiro FCCN - Dezembro 2010

UNIVERSIDADE. Sistemas Distribuídos

MIB (Management Information Base) Objetos Gerenciados Um objeto gerenciado é a visão abstrata.

Programação Paralela e Distribuída. Prof. Cidcley T. de Souza

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

SOP aplicado em um jogo tipo de corrida usando a arquitetura cliente e servidor

Implementando uma Classe e Criando Objetos a partir dela

Departamento de Informática

Sistemas Distribuídos

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

JPA: Persistência padronizada em Java

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Sistemas Operacionais

Transcrição:

Computação Orientada aos Serviços WCF Semestre de Inverno 11/12 (Parte 1)

WCF O Windows Communication Foundation (WCF) é uma application programming interface (API) na.net Framework para construir aplicações orientadas aos serviços. O WCF é desenhado para utilizar os princípios da arquitectura orientada aos serviços e para suportar computação distribuída Os serviços são loosely coupled. Têm tipicamente uma inteface passível de ser descrita em WSDL. 2

Características do WCF Interoperabilidade e Standards Suporta os protocolos WS-* Modelo de programação unificado Unifica modelos anteriores como o.net Remoting, ASMX Web services, COM+ Modelo de programação Declarativo Imperativo Baseado em configurações 3

WCF endpoints Endereço (onde) Binding (como) Contrato (o que) 4

Endereço Combinação de transporte, nome do servidor, porta e caminho O transporte é determinado pelo binding Exemplos: http://localhost:8001 net.tcp://localhost:8002/myservice net.pipe://localhost/mypipe net.msmq://localhost/private/myservice net.msmq://localhost/myservice 5

Bindings Transporte HTTP TCP MSMQ Formatos de mensagem e codificação Plain text Binário Os canais usados para transporte one-way request-reply duplex Segurança na comunicação Sem segurança Segurança ao nível do transporte Segurança ao nível da mensagem Invocações autenticadas e autorizadas 6

Classes de Binding BasicHttpBinding WSHttpBinding WSDualHttpBinding WSFederationHttpBinding NetNamedPipeBinding NetPeerTcpBinding NetTcpBinding MsmqIntegrationBinding NetMsmqBinding... 7

Contratos Contratos de serviço Definem operações, comunicações e comportamentos Contratos de Dados Definem entidades de dados e tipos de parâmetros Contratos de Falha Definem tipos de erros Contratos de Mensagem Definem formatos de mensagem 8

Contratos de Serviços [ServiceContract] define um conjunto de operações [OperationContract] define uma operação/método [ServiceContract] public interface IBookMarkService{ [OperationContract] BookMarks GetBookMarks(); [OperationContract] BookMark GetBookMark(string id);... } Definidos no namespace System.ServiceModel. 9

Propriedades Propriedades do ServiceContract: CallBackContract Name Namespace SessionMode ConfigurationMode Propriedades do OperationContract: Action AsyncPattern IsInitiating IsOneWay IsTerminating Name ReplyAction 10

Contratos de Dados [DataContract] especifica um tipo como um contrato de dados [DataMember] membros que fazem parte do contrato [CollectionDataContract] especifica uma colecção de elementos como um contrato de dados [DataContract] public class CustomType { [DataMember] public bool MyFlag { get; set; } [DataMember] public string MyString { get; set; } Definidos no namespace System.Runtime.Serialization. 11

Metadata Exchange Serviços podem também expor endpoints para Metadata Exchange (MEX) Fornece um mecanismo para os clientes saberem: O endereço de outros endpoints Os bindings que são utilizados Contratos utilizados Serviço, Operações, Dados, etc. 12

Hosting IIS HTTP WAS (Windows Activation Service) Pode utilizar qualquer transporte Vista e Windows Server 2008 Self hosting Pode utilizar qualquer transporte Pode ser hosted com aplicações Console, WinForms, etc 13

Passagem de dados Para os dados poderem ser acedidos pelas várias aplicações cliente, é necessário serem serializados A Framework.NET já contém um atributo para serialização [Serializable] public class Person { public string LastName; public string FirstName; } No entanto, o atributo de serialização tem algumas limitações Inclui alguma informação de tipos nos dados serializados não é adequado para SOA Não suporta aliases Não suporta versioning 14

Alternativa - DataContract DataContract: criado especificamente para WCF para serializar tipos. O atributo contem as propriedades: Name, Namespace DataMember: é necessário para especificar que propriedades/ campos fazem parte do contrato. Contém as propriedades: EmitDefaultValue, IsRequired, Name, Order [DataContract(Name="Contact")] public class Person { [DataMember(IsRequired=true, Name="SurName")] public string LastName; 15 } public string FirstName; //Não está incluído no contrato

Versioning de contratos de dados Três cenários diferentes: Novos campos foram adicionados Campos antigos foram eliminados Campos foram renomeados [DataContract] public class MyDataContract : IExtensibleDataObject { public ExtensionDataObject ExtensionData { get; set; } } 16

Exemplos //... [DataContract( Name = "Person", Namespace ="http://www.cohowinery.com/employees")] class Person : IExtensibleDataObject { private ExtensionDataObject extensiondataobject_value; public ExtensionDataObject ExtensionData { get { return extensiondataobject_value; } set { extensiondataobject_value = value; } } [DataMember] public string Name; } //O novo campo fica armazenado no campo ExtensionDataObject da primeira versão [DataContract(Name = "Person", Namespace = "http://www.cohowinery.com/employees")] class PersonVersion2 : IExtensibleDataObject{ [DataMember(Order=2)] public int ID; [DataMember] public string Name; private ExtensionDataObject extensiondataobject_value; public ExtensionDataObject ExtensionData { get { return extensiondataobject_value; } set { extensiondataobject_value = value; } } } 17

Herança com os contratos de dados [DataContract] public class Employee {... } [DataContract] public class Manager : Employee {... } [ServiceContract] public interface IEmployeeService { [OperationContract] public void AddEmployee(Employee e); } E na desserialização, o que acontece? 18

Herança com os contratos de dados [DataContract] [KnownType(typeof(Manager))] public class Employee {... } [DataContract] public class Manager : Employee {... } [ServiceContract] public interface IEmployeeService { [OperationContract] public void AddEmployee(Employee e); } 19

Manipular Excepções Podem ocorrer 3 tipos principais de excepções: Erros de comunicação Erros inesperados no serviço Erros lançados pelo serviço por uma determinada causa As excepções.net são específicas da tecnologia 20

Falhas Em WCF, falhas SOAP são passadas como objectos do tipo FaultException Em vez de lançar excepções, os serviços devem lançar FaultExceptions ( i.e., FaultException<T>) Lançar excepções do tipo FaultException não irá provocar falhar nem no proxy nem no canal [FaultContract]: especifica que tipo de excepção pode ser lançado por uma operação [ServiceContract] public interface IEmployeeService { [OperationContract] [FaultContract(typeof(ValidationException))] public void AddEmployee(Employee e); } 21

Server side As excepções são lançadas como Fault Exceptions public class EmployeeService { public void AddEmployee(Employee e) {... throw new FaultException<ValidationException> (new ValidationException(errorMsg)); } } 22

Client side EmployeeServiceProxy proxy = new EmployeeServiceProxy(); try {... proxy.addemployee(emp); } catch(faultexception<validationexception> e) { //Do stuff with exception here } catch(faultexception e) { //Will catch all other types of Fault exceptions... } 23

Atributo ServiceBehavior Não faz parte do contrato, é específico das implementações Permite controlar elementos de comportamento, tais como: Concorrência Instância PerCall, PerSession, Shareable Transacções Gestão de sessões Comportamento de Threads Throttling 24

Atributo OperationBehavior Os aspectos operacionais que podem ser controlados por este atributo são: Transaccional Identidade de quem invoca a operação Reciclagem do objecto 25

Principais assemblies WCF Assembly Objectivo System.Runtime.Serialization.dll Define namespaces e tipos que podem ser utilizados para serializar e desserializar objectos na framework WCF System.ServiceModel.dll Contém os tipos utilizados para construir qualquer tipo de aplicação WCF 26

Alguns Namespaces WCF Namespace System.Runtime.Serialization System.ServiceModel System.ServiceModel.Configuration System.ServiceModel.Description Objectivo Define tipos para controlar como os dados são serializados e desserializados Define tipos de binding e hosting, assim como tipos básicos de segurança e associados a transacções Define tipos que dão acesso programático a ficheiros de configuração WCF Define tipos que fornecem um modelo de objectos para os endereços, bindings e contratos definidos nos ficheiros de configuração no contexto do WCF System.ServiceModel.MsmqIntegration Contém tipos para fornecer integração com o serviço MSMQ 27

A composição básica de uma aplicação WCF O assembly do serviço WCF: este dll contém as classes e interfaces que representam a funcionalidade que se pretende expor O host do serviço WCF: este módulo de software é a entidade que faz hosting do assembly do serviço WCF O cliente WCF: este é a aplicação que acede à funcionalidade do serviço, através do proxy interveniente 28