Lógica de Negócio com WCF

Tamanho: px
Começar a partir da página:

Download "Lógica de Negócio com WCF"

Transcrição

1 Lógica de Negócio com WCF Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 1 WCF Introdução O que é? Uma tecnologia para suportar o desenvolvimento de aplicações distribuídas orientadas aos serviços, não apenas web services Uma única tecnologia para substituir várias tecnologias diferentes: Enterprise Services, MSMQ, DCOM/.Net Remoting Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 2

2 WCF Introdução Serviços e endpoints Serviços e clientes comunicam enviando mensagens para endpoints Pode ser qualquer processo hospedeiro cliente endpoint mensagens serviço serviço serviço endpoint endpoint endpoint endpoint endpoint endpoint endpoint endpoint endpoint Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 3 WCF Introdução ABC da comunicação Os clientes necessitam de saber a seguinte informação para comunicarem com um endpoint: Address é a indicação da localização na rede para onde devem ser enviadas as menssagens destinadas ao endpoint (exemplos: net.tcp://servidor/servico) Binding define características dos canais a serem usados para comunicar com o endpoint. Um binding é um conjunto de elementos de binding para especificar os protocolos de transporte (HTTP, TCP, MSMQ, Named pipes,...) e restrições de segurança e transacções. Existem pré-definidos vários bindings (basichttpbinding, wshttpbinding,...) Contract Define as capacidades (funcionalidade) do endpoint. Estes três elementos são independentes entre si Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 4

3 WCF Introdução ABC da comunicação Os serviços podem opcionalmente incluir um endpoint designado MetaDataExchange (MEX) que os clientes podem usar para obter os ABCs dos endpoints do serviço. O visual studio 2008 usa esta opção quando se escolhe Add Service Reference num projecto e a ferramenta svcutil.exe também a usa. Em ambos os casos, a informação retornada é usada para criar um ficheiro de configuração da aplicação (app.config) e uma classe com a definição de um proxy que permite ao cliente aceder ao endpoint e um ficheiro de configuração da aplicação (app.config) Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 5 WCF Introdução Um primeiro serviço O contrato: [ServiceContract] public interface IServicoContas [OperationContract] float obtersaldo(int numero); [OperationContract] void alterarsaldo(int numero, float s); Podem ter propriedades diferentes Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 6

4 WCF Introdução Um primeiro serviço O serviço: public class ServicoContas : IServicoContas public float obtersaldo(int numero)... public void alterarsaldo(int numero, float s)... Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 7 WCF Introdução Um primeiro serviço O hospedeiro (self hosting): public class Servico public static void Main(string[] args) ServiceHost host = new ServiceHost(typeof(ServicoContas), new Uri(" host.addserviceendpoint(typeof(iservicocontas), new BasicHttpBinding(),""); host.open(); Console.WriteLine("Serviço iniciado. Enter para terminar"); Console.ReadLine(); host.close(); Pode indicar-se o endereço do endpoint. Se não for indicado um URI comleto, concatens-e o endereço do serviço com o que for dado. Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 8

5 WCF Introdução Um primeiro serviço O hospedeiro (self hosting) usando código e app.config: public class Servico public static void Main(string[] args) ServiceHost host = new ServiceHost(typeof(ServicoContas)); host.open(); Console.WriteLine("Serviço iniciado. Enter para terminar"); Console.ReadLine(); host.close(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 9 WCF Introdução Um primeiro serviço O hospedeiro usando código e app.config: <?xml version="1.0" encoding="utf-8"?> <configuration> <system.servicemodel> <services> <service name="exemplo1.servicocontas"> <host> <baseaddresses> <add baseaddress=" </baseaddresses> </host> <endpoint address="" binding = "basichttpbinding" contract="exemplo1.iservicocontas"/> </service> </services> </system.servicemodel> </configuration> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 10

6 WCF Introdução Um primeiro serviço Serviço com MEX configurado por código public class Servico public static void Main(string[] args) ServiceHost host = new ServiceHost(typeof(ServicoContas)); ServiceMetadataBehavior b = new ServiceMetadataBehavior(); b.httpgetenabled = true; host.description.behaviors.add(b); host.addserviceendpoint( typeof(imetadataexchange), MetadataExchangeBindings.CreateMexHttpBinding(), "mex"); host.open();... Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 11 WCF Introdução Um primeiro serviço Serviço com MEX configurado em app.config <?xml version="1.0" encoding="utf-8"?> <configuration> <system.servicemodel> <services> <service name="exemplo1.servicocontas" behaviorconfiguration="sb"> <host> <baseaddresses> <add baseaddress=" </baseaddresses> </host> <endpoint address="" binding ="basichttpbinding" contract="exemplo1.iservicocontas"/> <endpoint address = "mex" binding = "mexhttpbinding" contract = "IMetadataExchange"/> </service> </services> <behaviors> <servicebehaviors> <behavior name="sb"> <servicemetadata httpgetenabled="true"/> </behavior> </servicebehaviors> </behaviors> </system.servicemodel> </configuration> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 12

7 WCF Introdução Um cliente só com código [ServiceContract] public interface IServicoContas [OperationContract] float obtersaldo(int numero); [OperationContract] void alterarsaldo(int numero, float s); class Cliente static void Main(string[] args) ChannelFactory<IServicoContas> servico = new ChannelFactory<IServicoContas>( new BasicHttpBinding(), new EndpointAddress( " IServicoContas endpt = servico.createchannel(); float s = endpt.obtersaldo(1); Console.WriteLine("Saldo conta 1 = 0", s);... Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 13 WCF Introdução Um cliente configurado com app.config [ServiceContract] public interface IServicoContas [OperationContract] float obtersaldo(int numero); [OperationContract] void alterarsaldo(int numero, float s); class Cliente static void Main(string[] args) ChannelFactory<IServicoContas> servico = new ChannelFactory<IServicoContas>( "clienteservicocontas"); IServicoContas endpt = servico.createchannel(); float s = endpt.obtersaldo(1); Console.WriteLine("Saldo conta 1 = 0", s);... Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 14

8 WCF Introdução Um cliente configurado com app.config <?xml version="1.0" encoding="utf-8"?> <configuration> <system.servicemodel> <client> <endpoint name="clienteservicocontas address =" binding="basichttpbinding" contract="iservicocontas"/> </client> </system.servicemodel> </configuration> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 15 WCF Introdução Um cliente usando a opção Add Service Reference do Visual Studio 2008 using ExemploClienteASR.ServiceReference1; namespace Exemplo1ClienteASR class Program static void Main(string[] args) ServicoContasClient proxy = new ServicoContasClient(); float s = proxy.obtersaldo(1); Console.WriteLine("Saldo conta 1 = 0", s); s *= 2; proxy.alterarsaldo(1, s); proxy.close(); O VS usou o MEX do serviço para criar o namespace <nome projecto>.servicereference1 no qual é implementada a classe proxy de nome <nome do contrato>client (*). Também é gerado o ficheiro app.config (ou web.config) com o nó <system.servicemodel> apropriado. (*) Na verdade, <nome do contrato> pode não coincidir com o nome do contrato. Pode ter sido retirado o I inicial (por exemplo em IServicoContas) Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 16

9 WCF Hospedagem Qualquer processo managed pode servir como hospedeiro. Já vimos como hospedar um serviço numa aplicação.net (self hosting) Para além deste tipo de hospedagem, são ainda possíveis: 1. Hospedagem em IIS 2. Hospedagem num serviço windows 3. Hospedagem em Windows Activation Server (WAS) Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 17 WCF Hospedagem Hospedagem em IIS Para basichttpbinding, wshttpbindig e wsdualhttpbinding, é possível hospedar os serviços no IIS. Procedimento: 1. Criar uma aplicação virtual no IIS para alojar o serviço 2. Criar um ficheiro com a extensão.svc para definir a implementação do serviço. 3. Acrescentar uma secção <system.servicemodel> a web.config Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 18

10 WCF Hospedagem Hospedagem em IIS Em ServicoContas.cs: namespace Exemplo1IISManual... [ServiceContract] public interface IServicoContas [OperationContract] float obtersaldo(int numero); [OperationContract] void alterarsaldo(int numero, float s); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 19 WCF Hospedagem Hospedagem em IIS Em ServicoContas.cs: public class ServicoContas: IServicoContas public float obtersaldo(int numero)... public void alterarsaldo(int numero, float s)... O assembly Exemplo1IISManual.dll, criado após compilação, deve ser colocado no GAC ou ne pasta /bin da aplicação virtual Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 20

11 WCF Hospedagem Hospedagem em IIS Em ServicoContas.svc: Language="C#" Service="Exemplo1IISManual.ServicoContas" %> Em web.config: <?xml version="1.0"?> <configuration> <system.servicemodel> <services> <service name="exemplo1iismanual.servicocontas behaviorconfiguration="servicocontasbehavior"> <endpoint address="" binding="basichttpbinding" contract="exemplo1iismanual.iservicocontas"> </endpoint> <endpoint address="mex" binding="mexhttpbinding" contract="imetadataexchange"/> </service> </services> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 21 WCF Hospedagem Hospedagem em IIS Em web.config: <behaviors> <servicebehaviors> <behavior name="servicocontasbehavior"> <servicemetadata httpgetenabled="true"/> <servicedebug includeexceptiondetailinfaults="false"/> </behavior> </servicebehaviors> </behaviors> </system.servicemodel> </configuration> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 22

12 WCF Hospedagem Hospedagem em IIS Em alternativa poderiamos ter em ServicoContas.svc: 1. Language="C#" Service="Exemplo1IISManual.ServicoContas CodeBehind="~/App_Code/ServicoContas.cs" %> Neste caso na primeira utilização o fichiero ServicoContas.cs seria compilado 2. <%@ServiceHost Language="C#" Service="Exemplo1IISManual.ServicoContas" %> Código do serviço Nesta caso o código seria compilado por cada invocação do serviço Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 23 WCF Hospedagem Hospedagem wm WAS Para Windows Vista e Windows Server 2008, é possível hospedagem em Windows Process Activation Services (WAS), o qual suporta multiplos protocolos ao nível de transporte (HTTP, net.tcp, net.pipe, net.msmq,...). O WAS também suporta process activation, recycling e identity management. Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 24

13 WCF Hospedagem Hospedagem em Managed Windows Service Os MWS são controlados pelo Service Control Manager (SCM) e administrados através de Microsoft Management Console (MMC), ou de outras ferramentas que utilizem a as APIs Windows Management Instrumentation (WMI) e SCM. O VS2008 tem uma opção de projecto para MWS Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 25 WCF Hospedagem Hospedagem em Managed Windows Service namespace Exemplo1MWS [ServiceContract] public interface IServicoContas [OperationContract] float obtersaldo(int numero); [OperationContract] void alterarsaldo(int numero, float s); public class ServicoContas : IServicoContas public float obtersaldo(int numero) public void alterarsaldo(int numero, float s) Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 26

14 WCF Hospedagem Hospedagem em Managed Windows Service [RunInstaller(true)] // auto-instalação // O nome pode ser diferente, pois o atributo é que conta public class ProjectInstaller : Installer // installutil.exe. private ServiceProcessInstaller pi; private ServiceInstaller si; public ProjectInstaller() pi = new ServiceProcessInstaller(); pi.account = ServiceAccount.LocalSystem; si = new ServiceInstaller(); si.servicename = "Exemplo1MWS"; si.description = "Teste de WCF"; Installers.Add(pi); // informação sobre o processo a instalar Installers.Add(si); // descrição do serviço a instalar Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 27 WCF Hospedagem Hospedagem em Managed Windows Service public partial class ServicoMWS : ServiceBase public ServicoMWS() InitializeComponent(); protected override void OnStart(string[] args) ServiceHost host = new ServiceHost(typeof(ServicoContas)); host.open(); ServiceEndpoint ep = host.description.endpoints[0]; EventLog.WriteEntry(ep.Contract.Name+ " iniciado. Endpoint: "+ ep.address+ " Binding "+ ep.binding.name, System.Diagnostics.EventLogEntryType.Information); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 28

15 WCF Hospedagem Hospedagem em Managed Windows Service protected override void OnStop() EventLog.WriteEntry("Exemplo1MWS terminado", System.Diagnostics.EventLogEntryType.Information); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 29 WCF Hospedagem Hospedagem em Managed Windows Service static class Program static void Main() ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] new ServicoMWS() ; ServiceBase.Run(ServicesToRun); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 30

16 WCF Hospedagem Endereços de serviços e endpoints. Dado que um serviço é uma colecção de endpoints, o endereço do serviço pode servir de base para esquemas de endereçamento relativo dos endpoints (mas não é obrigatório). Exemplo:... <host> <baseaddresses> <add baseaddress=" </baseaddresses> </host> <endpoint address="" binding = "basichttpbinding" contract="exemplo1.iservicocontas"/> <endpoint address = "mex" binding = "mexhttpbinding" contract = "IMetadataExchange"/> Endereço: Endereço: Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 31 WCF Hospedagem Endereços de serviços e endpoints. Podem existir vários endereços do serviço, mas apenas um por cada esquema de URI. Os conflitos nos endpoints que usem os mesmos endereços relativos são resolvidos pelos bindings. Exemplo:... <host> <baseaddresses> <add baseaddress=" <add baseaddress= net.tcp://localhost:8001/exemplo1"/> </baseaddresses> </host> <endpoint address= ep" binding = "basichttpbinding" contract="exemplo1.iservicocontas"/> <endpoint address = ep" binding = nettcpbinding" contract = "Exemplo1.IServicoContas"/> Endereço: Endereço: net.tcp://localhost:8001/exemplo1/ep Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 32

17 WCF Hospedagem Hospedagem de multiplos serviços no mesmo processo: Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 33 WCF Contratos Web Services Description Language (WSDL) é um formato XML para descrever serviços (de rede) como um con junto de ports (endpoints) que operam sobre mensagens as quais contêm informação orientada para os procedimentos ou informação orientada para os documentos. As operações e mensagens são definidas de forma abstracta e associadas (bind) a um protocolo concreto de rede e a um fromato concreto de mensagem de forma a definirem um endpoint. Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 34

18 WCF Contratos Elemento Type Message Operation PortType Binding Port Service Descrição Definições de tipos de dados usados para descrever a troca de mensagens (em regra XSD) Definição abstracta dos dados a transmitir. Uma mensagem consiste em várias componentes lógicas com definição num sistema de tipos (Type) O nome e descrição de uma acção suportada pelo serviço que expõe a parte da capacidade e funcionalidade de um endpoint Um conjunto (com nome) de operações relacionadas e mensagens abstractas envolvidas. Um endpoint implementa um PortType (service contract) Define o formato das mensagens e detalhes dos protocolos de comunicação definidos para um PortType particular Especifica um endpoint particular indicando um endereço particular para um Binding Define um conjunto de Ports relacionados Os contratos são uma forma simples de associar elementos CLR a descrições WSDL Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 35 WCF Contratos [ServiceContract] public interface IServicoContas [OperationContract] float obtersaldo(int numero); [OperationContract] void alterarsaldo(int numero, float s); public class ServicoContas : IServicoContas public float obtersaldo(int numero) public void alterarsaldo(int numero, float s)... <service name="exemplo1iismanual.servicocontas behaviorconfiguration="servicocontasbehavior"> <endpoint address="" binding="basichttpbinding" contract="exemplo1iismanual.iservicocontas"> </endpoint> <endpoint address="mex" binding="mexhttpbinding" contract="imetadataexchange"/> </service>... Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 36

19 WCF Contratos <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions name="servicocontas" targetnamespace=" xmlns:wsdl=... > <wsdl:types> <xsd:schema targetnamespace=" <xsd:import schemalocation=... />... </xsd:schema> </wsdl:types> <wsdl:message name="iservicocontas_obtersaldo_inputmessage"> <wsdl:part name="parameters" element="tns:obtersaldo" /> </wsdl:message> <wsdl:message name="iservicocontas_obtersaldo_outputmessage"> <wsdl:part name="parameters" element="tns:obtersaldoresponse" /> </wsdl:message>... <wsdl:porttype name="iservicocontas"> <wsdl:operation name="obtersaldo"> <wsdl:input wsaw:action=" message="tns:iservicocontas_obtersaldo_inputmessage" /> <wsdl:output wsaw:action=" message="tns:iservicocontas_obtersaldo_outputmessage" /> </wsdl:operation>... </wsdl:porttype> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 37 WCF Contratos <wsdl:binding name="basichttpbinding_iservicocontas" type="tns:iservicocontas"> <soap:binding transport=" /> <wsdl:operation name="obtersaldo"> <soap:operation soapaction=" style="document" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="servicocontas"> <wsdl:port name="basichttpbinding_iservicocontas" binding="tns:basichttpbinding_iservicocontas"> <soap:address location= " /> </wsdl:port> </wsdl:service> </wsdl:definitions> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 38

20 WCF Contratos Service contracts: [ServiceContract] public interface IServicoContas [OperationContract] float obtersaldo(int numero); [OperationContract] void alterarsaldo(int numero, float s); void naoobjectodocontrato(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 39 WCF Contratos Service contracts: Propriedades de ServiceContract: Name controla a propriedade name no elemento <porttype> do WSDL (por omissão, o nome da interface do contrato) Namespace idem, mas para a propriedade namespace (por omissão SessionMode indica se o contrato exige um binding que suporte sessões (por omissão, false) CallbackContract especifica o contrato (tipo.net) de retorno numa comunicação duplex (two-way) (por omissão, null)... Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 40

21 WCF Contratos Propriedades de OperationContract: Name especificao nomeassociadoaoelementowsdl:operation name na definição de PortType. Por omissão, o nome do método. Action especifica a acção (elemento wsdl:input wsaw:action na definição de PortType) que identifica unicamente esta operação. Por omissão a concatenação do namespace do contrato, do nome do contrato (interface) do nome da operação e da string Response se a mensagem for uma resposta. Pode ser * para redireccionar para esta operação todas as mensagens recebidas mas que não podem ser associadas a uma operação determinada (mensagens desconhecidas). ReplyAction idem para mensagem de reply. Se for * no servico indica que não pretendemos gerar mensagens de reply. No cliente, um * indica ao WCF para não validar a reply action. IsOneWay indica se esta operação não produz qualquer mensagem de resposta (por omissão, false). Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 41 WCF Contratos Operação One-Way [ServiceContract] public interface IServicoContas [OperationContract] float obtersaldo(int numero); [OperationContract] void alterarsaldo(int numero, float s); [OperationContract(IsOneWay = true)] void x(); // tem de ser void e sem parâmetros ref ou out Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 42

22 WCF Contratos Operação One-Way public class ServicoContas : IServicoContas public float obtersaldo(int numero) public void alterarsaldo(int numero, float s) public void x() Thread.Sleep(5000); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 43 WCF Contratos Operação One-Way No cliente: class Cliente static void Main(string[] args) // para hospedeiro nosso: ChannelFactory<IServicoContas> servico = new ChannelFactory<IServicoContas>( ); IServicoContas endpt = servico.createchannel(); endpt.x(); retorno imediato Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 44

23 WCF Contratos Operação duplex Pode ser Request-Response ou One-Way É criado um novo canal para o sentido contrário (com o mesmo protocolo) se o protocolo não o suportar (p. ex: http) O endereço no sentido contrário pode ser definido, mas, caso não o seja, é determinado com base no endereço de rede de onde o serviço é chamado. Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 45 WCF Contratos Operação duplex: o serviço namespace ServicoDuplex [ServiceContract(CallbackContract=typeof(IClienteCallback))] public interface IServico [OperationContract] void LigaMe(); [ServiceContract] public interface IClienteCallback [OperationContract] void EstouAligarTe(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 46

24 WCF Contratos Operação duplex: o serviço public class Servico : IServico public void LigaMe() IClienteCallback c = Permite acesso a informação sobre o contexto se execução de uma operação dum serviço Informação sobre a thread corrente OperationContext.Current.GetCallbackChannel<IClienteCallback>(); ChamadaCliente chcli = new ChamadaCliente(c); Thread t = new Thread( new ThreadStart(chCli.Chamar)); t.isbackground = true; t.start(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 47 WCF Contratos Operação duplex: o serviço public class ChamadaCliente private IClienteCallback cli; public ChamadaCliente(IClienteCallback c) cli = c; public void Chamar() for(int i = 0; i < 10; ++i) cli.estoualigarte(); Thread.Sleep(5000); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 48

25 WCF Contratos Operação duplex: o serviço public class Host // Hospedeiro public static void Main(string[] args) ServiceHost host = new ServiceHost(typeof(Servico)); host.open(); Console.WriteLine("Serviço iniciado. Enter para terminar"); Console.ReadLine(); host.close(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 49 WCF Contratos Operação duplex: o serviço <?xml version="1.0" encoding="utf-8"?> <configuration> <system.servicemodel> <services> <service name="servicoduplex.servico behaviorconfiguration="sb"> <host> <baseaddresses> <add baseaddress=" </baseaddresses> </host> <endpoint address="" binding = "wsdualhttpbinding" contract="servicoduplex.iservico"/> <endpoint address = "mex" binding = "mexhttpbinding" contract = "IMetadataExchange"/> </service> </services> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 50

26 WCF Contratos Operação duplex: o serviço <behaviors> <servicebehaviors> <behavior name="sb"> <servicemetadata httpgetenabled="true"/> </behavior> </servicebehaviors> </behaviors> </system.servicemodel> </configuration> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 51 WCF Contratos Operação duplex: o cliente (sem ajudas) [ServiceContract(CallbackContract = typeof(iclientecallback))] public interface IServico [OperationContract] void LigaMe(); [ServiceContract] public interface IClienteCallback [OperationContract] void EstouAligarTe(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 52

27 WCF Contratos Operação duplex: o cliente (sem ajudas) namespace ClienteDuplexSemAddServRef public class HandlerCallbackCliente : IClienteCallback public void EstouAligarTe() Console.WriteLine("Ligaram-me"); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 53 WCF Contratos Operação duplex: o cliente (sem ajudas) Fornece contexto de execução de uma instância de um serviço static void Main(string[] args) InstanceContext site = new InstanceContext( Objecto que implementa a instância do serviço new HandlerCallbackCliente()); // Assim para configuracao em código: //WSDualHttpBinding binding = new WSDualHttpBinding(); //binding.clientbaseaddress = // new Uri(" //servico = //new DuplexChannelFactory<IServico>( // site, // binding, // new EndpointAddress(" // ); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 54

28 WCF Contratos Operação duplex: o cliente (sem ajudas) // ou assim, para configuraçao em app.config: DuplexChannelFactory<IServico> servico = new DuplexChannelFactory<IServico>(site, "clienteservico"); IServico endpt = servico.createchannel(); endpt.ligame(); Console.WriteLine("Enter para terminar"); Console.ReadLine(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 55 WCF Contratos Operação duplex: o cliente (sem ajudas) A configuração: <?xml version="1.0" encoding="utf-8"?> <configuration> <system.servicemodel> <client> <endpoint name="clienteservico" address =" binding="wsdualhttpbinding" contract="iservico" bindingconfiguration= MeuBindingDuplexCliente"/> </client> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 56

29 WCF Contratos Operação duplex: o cliente (sem ajudas) A configuração: <bindings> <wsdualhttpbinding> <binding name="meubindingduplexcliente" clientbaseaddress=" > <security mode="message"> <message clientcredentialtype="windows" negotiateservicecredential="true" algorithmsuite="default" /> </security> </binding> </wsdualhttpbinding> </bindings> </system.servicemodel> </configuration> Se não for indicado, é usado um endereço baseado no endereço da máquina que invocou o serviço e com o memso porto Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 57 WCF Contratos Operação duplex: o cliente (com Add Service Reference) using ClienteDuplex.ServiceReference1; namespace ClienteDuplex public class HandlerCallbackCliente: IServicoCallback public void EstouAligarTe() Console.WriteLine("Ligaram-me"); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 58

30 WCF Contratos Operação duplex: o cliente (com Add Service Reference) static void Main(string[] args) InstanceContext site = new InstanceContext(new HandlerCallbackCliente()); ServicoClient proxy = new ServicoClient(site); proxy.ligame(); Console.WriteLine("Enter para terminar"); Console.ReadLine(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 59 WCF Contratos Operação duplex: o cliente (com Add Service Reference)... <system.servicemodel> <bindings> <wsdualhttpbinding> <binding name="wsdualhttpbinding_iservico" clientbaseaddress=" > </binding> </wsdualhttpbinding> </bindings> <client> <endpoint address=" binding="wsdualhttpbinding" bindingconfiguration="wsdualhttpbinding_iservico" contract="servicereference1.iservico" name="wsdualhttpbinding_iservico"> <identity> Se não se indicar, é usado um endereço baseado no do serviço, portanto, com o memso porto Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 60

31 WCF Contratos Operação One-Way emparelhada versus Operação duplex Paired one-way Os contratos podem ter versões independentes. Os serviços podem ser oferecidos a outros clientes. Cada contrato one-way pode definir os seus próprios bindings e behavioirs Duplex Os callback do lado do cliente são determinados pelo serviço. Novas versões do serviço podem obrigar a alterações do cliente. Forte compromisso com situações onde o único consumidor das operações do cliente é o serviço. Os protocolos de comunicação são os mesmos em ambas as direcções porque dependem dos bindings do serviço Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 61 WCF Contratos Multiplos contratos no mesmo serviço: namespace ServicoMultiplosContratos [ServiceContract] public interface IServico1 [OperationContract] void op1(); [ServiceContract] public interface IServico2 [OperationContract] void op2(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 62

32 WCF Contratos Multiplos contratos no mesmo serviço: public class Servico : IServico1,IServico2 public void op1() Console.WriteLine("op1"); public void op2() Console.WriteLine("op2"); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 63 WCF Contratos Multiplos contratos no mesmo serviço: public class Host // Hospedeiro public static void Main(string[] args) ServiceHost host = new ServiceHost(typeof(Servico)); host.open(); Console.WriteLine("Serviço iniciado. Enter para terminar"); Console.ReadLine(); host.close(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 64

33 WCF Contratos Multiplos contratos no mesmo serviço: <?xml version="1.0" encoding="utf-8"?> <configuration> <system.servicemodel> <services> <service name="servicomultiploscontratos.servico" behaviorconfiguration="sb"> <host> <baseaddresses> <add baseaddress= " <add baseaddress= "net.tcp://localhost:8002/exemplomultiploscontratos"/> </baseaddresses> </host> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 65 WCF Contratos Multiplos contratos no memso serviço: <endpoint address="" name="ep1" binding = "basichttpbinding" contract="servicomultiploscontratos.iservico1"/> <endpoint address="adr2" name ="ep2" binding="nettcpbinding" contract ="ServicoMultiplosContratos.IServico1"/> <endpoint address="adr3" name ="ep3" binding="basichttpbinding" contract ="ServicoMultiplosContratos.IServico2"/> <endpoint address = "mex" binding = "mexhttpbinding" contract = "IMetadataExchange"/> </service> </services> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 66

34 WCF Contratos Multiplos contratos no mesmo serviço o cliente: using TesteServicoMultiplosContratos.ServiceReference1; namespace TesteServicoMultiplosContratos class Program static void Main(string[] args) //Servico1Client proxy1 = new Servico1Client(); // assim dá erro!!! Servico1Client proxy1 = new Servico1Client("ep1"); Servico1Client proxy2 = new Servico1Client("ep2"); Servico2Client proxy3 = new Servico2Client(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 67 WCF Contratos Multiplos contratos no mesmo serviço o cliente: Console.WriteLine("-----"); proxy1.op1(); Console.WriteLine("====="); proxy2.op1(); Console.WriteLine("*****"); proxy3.op2(); proxy1.close(); proxy2.close(); proxy3.close(); Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 68

35 WCF Contratos Alteração de nomes WSDL: Da forma como trabalhamos anteriormente, as descrições WSDL e, portanto, as mensagens trocadas com o serviço usam nomes derivados dos nomes das classes e interfaces utilizados. O (XML) namespace associado ao <porttype> do serviço também é por omissão igual a Ora, este namespace apenas deve ser usado para desenvolvimento. Na exploração definitiva, cada organização deve usar os seus próprios target namespaces. Por outro lado, a exposição dos nossos nomes de codificação também pode não ser razoável, pois não permite ocultar aspectos internos da organização, como, por exemplo, standardas adoptados para a codificação de nomes. Quando usamos serviços desenvolvidos por outros, a obrigação de usarmos os nomes conatantes da definição WSDL também não é razoável. Por exemplo, impede-nos de usar standards de codificação internos da organização. O WCF permite-nos algum nível de controlo sobre estes aspectos Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 69 WCF Contratos Alteração de nomes WSDL: targetnamespace wsdl:service name Termo WSDL wsdl:portype namespace wsdl:porttype name wsdl:operation wsdl:input wsdl:output Atributo WCF Pode ser alterado com o atributo [ServiceBehavior(Namespace=...)] [ServiceBehavior(Name=...)] [ServiceContract(Namespace=...)] [ServiceContract(Name=...)] [OperationContract(Name=...)] [OperationContract(Action=..)] [OperationContract(ReplyAction=...)] Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 70

36 WCF Contratos Data Contracts: Como associar dados simples e complexos usados ao nível da programação do serviço a dados representados por esquemas XML (XSD) [DataContract] public class Conta [DataMember] public int Numero get; set; [DataMember] public string Titular get; set; public float Saldo get; set; Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 71 WCF Contratos Data Contracts (representação XSD): <?xml version="1.0" encoding="utf-8"?> <xs:schema elementformdefault="qualified" targetnamespace=" xmlns:xs=" xmlns:tns=" <xs:complextype name="conta"> <xs:sequence> <xs:element minoccurs="0" name="numero" type="xs:int" /> <xs:element minoccurs="0" name="titular" nillable="true" type="xs:string" /> </xs:sequence> </xs:complextype> <xs:element name="conta" nillable="true" type="tns:conta" /> </xs:schema> No caso concreto, aperecem por ordem alfabética No caso de haver hierarquias de tipos, são usados extension types (<xs:extention>) em XSD Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 72

37 WCF Contratos <s:envelope xmlns:s=" <s:header> <To s:mustunderstand="1" xmlns=" </To> <Action s:mustunderstand="1" xmlns=" </Action> </s:header> <s:body> <inserirconta xmlns=" <c xmlns:a=" xmlns:i=" <a:numero>7777</a:numero> <a:titular>rita</a:titular> </c> </inserirconta> </s:body> </s:envelope> Mensagem soap resultante da serialização (por DataContractSerializer) para uma invocação da operação inserirconta(c). c é o nome do parâmetro no OperationContract Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 73 WCF Contratos O serializador DataContractSerializer expõe em wsdl (na forma de XSD) e serializa para soap tipos que obedeçam a uma das seguintes condições: 1.Estejam marcados com [DataContract] e [DataMember] 2.Estejam marcados com [CollectionDataContract] 3.Derivem de IXmlSerializable 4.Estejam marcados com [Serializable] (sem membros marcados com [NotSerializable]???) 5.Estejam marcados com [Serializable] e implementem ISerializable 6.Sejam tipos primitivos CLR (int32, string, ) 7.Sejam dos tipos arrays de bytes, DateTime, DateTimeOffset, TimeSpan, Guid, Uri, XmlQualifiedName, XmlElement e XmlNode 8.Sejam arrays e colecções dos tipos List<T>, Dictionary<K,V> e Hashtable 9.Sejam Enumerados 10.Sejam dos tipos ADO.NET DataTable e DataSet Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 74

38 WCF Contratos Data Contracts (colecções): Não existe uma definição XSD ou WSDL standard equivalente às colecções CLR (IEnumerable<T>). Assim, estes objectos são todos representados da mesma forma. São, por isso, consumidos no cliente sempre como arrays. No entanto, se no membro de um DataContract indicarmos outro tipo de colecção (List, ArrayList, LinkedList, ), a desserialização fará essa conversão se o indicarmos quando importamos o esquema XSD (através da propriedade ImportOptions de XsdDataContractImporter). No visual studio, isso é feito em Add Service Reference e Configure Service Reference, pois podemos indicar como queremos que esses membros sejam tratados. Ver também o atributo [CollectionDataContract] Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 75 WCF Contratos Data Contracts (colecções): [ServiceContract] public interface IServico [OperationContract] Conta obterconta(int numero); [OperationContract] List<Conta> obtercontas(list<int> numeros); É importado através do serviço de mata-dados como: [ServiceContract] public interface IServico [OperationContract] Conta obterconta(int numero); [OperationContract] Conta[] obtercontas(int[] numeros); E, em termos de WSDL, teremos: Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 76

39 WCF Contratos Data Contracts (colecções): <xs:complextype name="conta"> </xs:complextype> <xs:element name="conta" nillable="true" type="tns:conta" /> <xs:complextype name="arrayofconta"> <xs:sequence> <xs:element minoccurs="0" maxoccurs="unbounded" name="conta" nillable="true" type="tns:conta" /> </xs:sequence> </xs:complextype> <xs:element name="arrayofconta" nillable="true type="tns:arrayofconta" /> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 77 WCF Contratos Data Contracts (colecções): No cliente: var contas = proxy.obtercontas(new List<int> 1, 3 ); dá origem à seguinte mensagem SOAP: <s:envelope xmlns:s=" <s:header> <To s:mustunderstand="1 xmlns= " </To> <Action s:mustunderstand="1" xmlns= " </Action> </s:header> Informação sobre endereçamento, segurança, transacções Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 78

40 WCF Contratos Data Contracts (colecções): <s:body> <obtercontas xmlns=" <numeros xmlns:a= " xmlns:i=" <a:int>1</a:int> <a:int>3</a:int> </numeros> </obtercontas> </s:body> </s:envelope> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 79 WCF Contratos De notar que a descrição wsdl também inclui uma descrição XSD para definições dos parâmetros das operações (em <?xml version="1.0" encoding="utf-8"?> <xs:schema elementformdefault="qualified"...>... <xs:element name="obtercontas"> <xs:complextype> <xs:sequence> <xs:element minoccurs="0" name="numeros" nillable="true" type="q2:arrayofint xmlns:q2= " /> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="obtercontasresponse"> <xs:complextype> <xs:sequence> <xs:element minoccurs="0" name="obtercontasresult" nillable="true" type="q3:arrayofconta" xmlns:q3= " /> </xs:sequence> </xs:complextype> </xs:element>... <wsdl:message name="iservico_obtercontas_inputmessage"> <wsdl:part name="parameters" element="tns:obtercontas" /> </wsdl:message> <wsdl:message name="iservico_obtercontas_outputmessage"> <wsdl:part name="parameters" element="tns:obtercontasresponse" /> </wsdl:message> Com base nesta descrição e na descrição XSD dos data contracts é possível desserializar as mensagens Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 80

41 WCF Contratos Também não esquecer: <wsdl:message name="iservico_obtercontas_inputmessage"> <wsdl:part name="parameters" element="tns:obtercontas" /> </wsdl:message> <wsdl:message name="iservico_obtercontas_outputmessage"> <wsdl:part name="parameters" element= <wsdl:porttype name="iservico"> "tns:obtercontasresponse" /> </wsdl:message> <wsdl:operation name="obtercontas"> <wsdl:input wsaw:action=" message="tns:iservico_obtercontas_inputmessage" /> <wsdl:output wsaw:action=" message="tns:iservico_obtercontas_outputmessage" /> </wsdl:operation> </wsdl:porttype> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 81 WCF Contratos Data contracts: Propriedades de DataContract: Name controla a propriedade name no elemento <xs:complextype> do XSD que define o tipo em termos de wsdl (por omissão, o nome qualificado da classe) Namespace idem, mas para a propriedade namespace (por omissão um nome derivado do Namespace CLR (Clr.Namespace): " Atenção: usar namespaces nos DataContracts Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 82

42 WCF Contratos Data contracts: Propriedades de DataMember: Name controla a propriedade name no elemento <xs:element> do XSD que define o tipo em termos de wsdl (por omissão o nome do membro CLR) EmitDefaultValue controla se deve ser serializado o valor por omissão do membro (por omissão, true). IsRequired Indica se o membro deve ou não estar presente no processo de desserialização (ver controlo de versões). (por omissão, false). Order o número de ordem do membro na stream de serialização. Os membros das classes base vêm primeiro, depois os da classe derivada não marcados com Order, por ordem alfabética e, por fim, os marcados com Order pela ordem definida e, dentro desta, por ordem alfabética (por omissão, order = -1).... Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 83 WCF Contratos Data Contracts (known types): [DataContract] [KnownType(typeof(subClasse))] public class Classe Pode ser indicado ao nível do [OperationContract] com o atributo [ServiceKnownType], mas, neste caso, os tipos indicados podem apenas ser usados nas operações onde são indicados, ou em todas as operaçõees da interface se ServiceKnownType for usado ao nível da interface. [DataContract] public class SubClasse : Classe Se no destino apenas existir a classe Classe e chegar uma instância de SubClasse, a desserialização não consegue criar o objecto. Isto pode ocorrer se o cliente criar SubClasse e esta não existir no serviço. Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 84

43 WCF Contratos Data Contracts: Em alternativa, podemos usar o nó <system.runtime.serialization> em App.config ou Web.config para indicar known types: <system.runtime.serialization> <datacontractserializer> <declaredtypes> <add type ="Classe, Minhadll, Version= , Culture=neutral, PublickeyToken=null"> <knowntype type ="subclasse, MinhaDll, Version= , Culture=neutral, PublickeyToken=null"/> </add> </declaredtypes> </datacontractserializer> </system.runtime.serialization> Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 85 WCF Contratos Data Contracts: Podemos ainda gerar os known types dinamicamente: [DataContract] [KnownTypes( obterknowntypes )] public class Classe [DataMember] public int x; static Type[] obterknowntypes() return new Type[] typeof(subclasse), ; Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 86

44 WCF Contratos Data Contracts (versões): O data contracts podem sofrer algumas alterações sem quebra de compatibilidade, tais como adição ou remoção de membros não marcados com IsRequired = true. Uma consequência positiva é que serviço e clientes podem evoluir independentemente uns dos outros (desde que se mantenha compatibilidade). Alterações com quebra de compatibilidade: Alteração das propriedades Name ou Namespace do data contract Alteração do nome ou remoção de um membro que estava marcado com IsRquired = true Adição de um novo membro com um nome usado anteriormente Alteração do tipo de dados de um data member Adição de novos membros marcados com IsRequired = true Alteração da propriedade IsRequired de um DataMember de false para true Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 87 WCF Contratos Data Contracts (versões): [DataContract] class Conta // versão 1 [DataMember] public int Numero get; set; [DataMember] public string Titular get; set; [DataContract] class Conta // versão 3 [DataMember(Name= Numero )] public int N get; set; [DataContract] class Conta // versão 2 [DataMember(Name= Numero )] public int N get; set; [DataMember] public string Titular get; set; versões compatíveis [DataMember((Order=0)] public int A get; set; Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 88

45 WCF Contratos Data Contracts (round- trip em versões): [DataContract] public class Aluno // versão 1 [DataMember] public int Numero; [DataMember] public string Nome; [DataContract(Name= Aluno )] public class Aluno2 // versão 2 [DataMember] public int Numero; [DataMember] public string Nome; [DataMember(Order=3)] public string Telefone; call x(aluno(v2) a) Cliente usando Aluno versão 2 retorna a (mas a versão 1) Serviço usando Aluno versão 1 O que acontece ao membro Telefone? Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 89 WCF Contratos Data Contracts (round- trip em versões): [DataContract] public class Aluno : IExtensibleDataObject // versão 1 [DataMember] public int Numero; [DataMember] public string Nome; private ExtensionDataObject dadosextra; public virtual ExtensionDataObject ExtensionData get return dadosextra; set dadosextra = value; Lista com informação dos data members não conhecidos (estes membros serão serializados se uma instância deste data contract for enviada) [DataContract(Name= Aluno )] public class Aluno2 // versão 2 [DataMember] public int Numero; [DataMember] public string Nome; [DataMember(Order=0)] public string Telefone; Um serviço pode impedir este funcioamento através do atributo de comportamento Boa prática, mas não necessário Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 90

46 WCF Contratos Data Contracts (versões): Por omissão, muitas plataformas de serviços (incluindo o WCF) não fazem validação do esquema dos data contracts, permitindo, por isso, elementos extra não suportados pelo esquema. Nestes casos, os métodos que vimos para lidar com versões são adequados. Nos casos em que é necessário (ou as plataformas impõem) a validação de esquemas, a regra é definir um novo data contract com outro nome ou outro namespace (o recomendado) e proceder às alterações necessárias para definição da nova funcionalidade associada à nova versão no service contract. Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 91 WCF Contratos Data Contracts (equivalência) Dois data contracts são equivalentes se tiveram o mesmo namespace e o mesmo nome e se cada data member num deles tiver um data member equivalente no outro. A ordem dos membros também tem de ser a mesma. Dois data members são equivalentes se tiverem o mesmo nome e o mesmo tipo de dados. Em suma, dois data contracts são equivalentes se gerarem a mesma descrição XSD. DataContract] public class Contacto [DataMember] public string Nome; [DataMember] public string Telefone; Data contracts equivalentes [DataContract(Name = "Contacto")] public class Pessoa [DataMember(Name = Nome")] private string NomeCompleto; private string address; [DataMember(Name = Telefone")] private string NumTel; Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 92

47 WCF Contratos Data Contracts (equivalência) DataContract] public class Contacto [DataMember(Order=1)] public string Nome; [DataMember(Order=0)] public string Telefone; [DataContract(Name = "Contacto")] public class Pessoa [DataMember(Name = Nome")] private string NomeCompleto; private string address; [DataMember(Name = Telefone")] private string NumTel; Ordem alfabética: Nome < Telefone Data contracts não equivalentes Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 93 WCF Contratos Message Contracts Permitem trabalhar ao nível das mensagens SOAP. Não veremos este tipo de contratos. Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 94

48 WCF Canais e Bindings Canais São definidos para o transporte de mensagens, protocolos e intercepção de mensagens. Funcionam agrupados em camadas. Aplicação Protocolo... Protocolo Transporte Os canais de protocolo permitem tratar aspectos de segurança, reliable messaging, transacções, etc. Não aprofundaremos o tema canais nestas notas Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 95 WCF Canais e Bindings Os bindings encapsulam a configuração de cenários de comunicação. Consistem de elementos que especificam como e quais canais estão organizados em stack. Aplicação Protocolo... Protocolo Transporte Channel stack Binding Element... Binding Element Binding Element Binding Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 96

49 WCF Canais e Bindings Um binding tem de incluir, obrigatoriamante: 1.Um elemento de binding para o transporte (canal de transporte) 2.Um elemento de binding para a codificação de mensagens (o qual pode ser fornecido por omissão pelo elemento de binding para transporte). Opcionalmente, pode incluir um número variável de elementos de binding para protocolos. Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 97 WCF Canais e Bindings O WCF já fornece alguns bindings para cenários comuns: Binding Interoper. Modelo de segurança Sessão Transacções Duplex basichttpbinding Basic Profile 1.1 (None), Transport, Message, Mixed None, (None) (None) n/a wshttpbinding WS None, Transport, (Message), Mixed wsdualhttpbinding ws2007httpbinding (None), Transport, Reliable Session (None), Yes WS None, (Message) None, (Message) (None), Yes yes nettcpbinding.net None, (Transport), Message, Mixed netnamedpipebinding.net None, (Transport) netmsmqbinding.net None, Message, (Transport), Both Reliable Session, (Transport) None, (Transport) (None), Yes (None), Yes n/a yes yes (None) (None), Yes no Arquitectura de Sistemas de Informação (ISEL-DEETC Walter Vieira) 98

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

Computação Orientada aos Serviços. WCF Semestre de Inverno 11/12 (Parte 1) 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

Leia mais

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

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1. Número: Nome: Página 1 de 6 LEIC/LETI, 2014/15, Repescagem do 1º Teste de Sistemas Distribuídos 30 de Junho de 2015 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração:

Leia mais

Programação para Internet Avançada. 4. Web Services. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Programação para Internet Avançada. 4. Web Services. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Programação para Internet Avançada 4. Web Services Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt São módulos de aplicações de negócios que expõem as regras do negócio como serviços na Internet através

Leia mais

Web Services utilizando JAX-WS

Web Services utilizando JAX-WS Web Services utilizando JAX-WS JAX-WS Facilitar o uso da API JAX-RPC e do modelo de implantação Anotações baseados em JSR-181 Exemplo Básico: Anotações: @WebService @WebMethod @WebParam @WebResult Exemplo

Leia mais

Desenvolvimento de aplicações para a Cloud. AppServiceBus

Desenvolvimento de aplicações para a Cloud. AppServiceBus Desenvolvimento de aplicações para a Cloud AppServiceBus Enterprise Service Bus Um enterprise service bus (ESB) é um modelo arquitectural de software utilizado para desenhar e implementar a interacção

Leia mais

Criação de um Web Services em.net

Criação de um Web Services em.net Web Service em.net 1 Criação de um Web Services em.net 1. Criar um novo projecto do tipo ASP.NET Web Service, de acordo com a figura seguinte. O.Net cria um directório virtual com os ficheiros indicados

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com Mecanismos de Comunicação Protocolos de Aplicação Mecanismos de comunicação

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services Web Services Existem diferentes tipos de comunicação em um sistema distribuído: Sockets Invocação

Leia mais

Connection String usada por uma Class Library

Connection String usada por uma Class Library Connection String usada por uma Class Library Vamos considerar uma Class Library com o modelo de dados e com acesso à base de dados através do Entity Framework. Aonde deve ser colocada a connection string

Leia mais

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

Web services. Um web service é qualquer software que está disponível através da Internet através de uma interface XML. Web services Um web service é qualquer software que está disponível através da Internet através de uma interface XML. XML é utilizado para codificar toda a comunicação de/para um web service. Web services

Leia mais

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva 1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade

Leia mais

Criação de um Web Services em.net

Criação de um Web Services em.net Web Service em.net 1 Criação de um Web Services em.net 1. Criar um novo Web Site com template ASP.NET Web Service, de acordo com a figura seguinte. O Visual studio cria um directório com os ficheiros indicados

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 13 Web Services Web Services

Leia mais

Serviços Web: Arquitetura

Serviços Web: Arquitetura Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula

Leia mais

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

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 Número: Nome: Página 1 de 5 LEIC/LERC 2012/13, Repescagem do 1º Teste de Sistemas Distribuídos, 25 de Junho de 2013 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração:

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Introdução Serviços Web WSDL SOAP UDDI Ferramentas. Serviços Web. (Web Services) Emerson Ribeiro de Mello

Introdução Serviços Web WSDL SOAP UDDI Ferramentas. Serviços Web. (Web Services) Emerson Ribeiro de Mello 1/39 Serviços Web (Web Services) Emerson Ribeiro de Mello Departamento de Automação e Sistemas Universidade Federal de Santa Catarina 22 de Maio de 2007 2/39 Arquitetura Orientada a Serviços Arquitetura

Leia mais

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Pessoa Física NFE (RFB) Versão: 1.0. Autor: Angelo Bestetti Junior

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Pessoa Física NFE (RFB) Versão: 1.0. Autor: Angelo Bestetti Junior Manual de Integração Tecnologia: WebServices SOAP XML Área: CDC Produto: CDC Pessoa Física NFE (RFB) Versão: 1.0 Autor: Angelo Bestetti Junior Conteúdo Introdução... 3 Considerações Iniciais... 4 Privacidade...

Leia mais

Profº. Enrique Pimentel Leite de Oliveira

Profº. Enrique Pimentel Leite de Oliveira Profº. Enrique Pimentel Leite de Oliveira O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam

Leia mais

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

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1 .NET Remoting Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1 Autoria Autores 1a versão Fabio Augusto Dal Castel colaboração revisão Eduardo F. Seganfredo Rodrigo Gatto C. Geyer Programação

Leia mais

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

Trabalho Prático Nº1 Introdução ao C#.NET Trabalho Prático Nº1 Introdução ao C#.NET 1. OBJECTIVOS - Entender o contexto da plataforma.net - Desenvolver programas simples em C#.NET - Saber efectuar entradas de dados em modo Consola e Windows Forms

Leia mais

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

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 e Serviço e e Tecnologias de Middleware 06/07 Curso de Especialização em Informática Departamento de Informática Faculdade de Ciências da Universidade de Lisboa 27.10.2006 e Serviço e 1 2 Serviço e 3 e...o

Leia mais

Prof. Esp. Adriano Carvalho

Prof. Esp. Adriano Carvalho Prof. Esp. Adriano Carvalho O que é um Programa? Um arquivo contendo uma sequência de comandos em uma linguagem de programação especifica Esses comandosrespeitam regras de como serem escritos e quais

Leia mais

Forms Authentication em ASP.NET

Forms Authentication em ASP.NET Forms Authentication em ASP.NET Em muitos sites web é necessário restringir selectivamente o acesso a determinadas áreas, ou páginas, enquanto para outras páginas pode permitir-se acesso livre. ASP.NET

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

Adriano Reine Bueno Rafael Barros Silva

Adriano Reine Bueno Rafael Barros Silva Adriano Reine Bueno Rafael Barros Silva Introdução RMI Tecnologias Semelhantes Arquitetura RMI Funcionamento Serialização dos dados Criando Aplicações Distribuídas com RMI Segurança Exemplo prático Referências

Leia mais

Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C#

Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C# Linguagem de Programação 3 Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C# Prof. Mauro Lopes 1-31 35 Objetivos Nesta aula iremos apresentar a tecnologia.net, o ambiente de desenvolvimento

Leia mais

Manual técnico. v2.2 2015/10

Manual técnico. v2.2 2015/10 Manual técnico v2.2 2015/10 Índice 1. INTRODUÇÃO... 3 2. DESCRIÇÃO... 3 3. INTEGRAÇÃO DO SISTEMA... 4 3.1 DESCRIÇÃO... 4 3.2 INTEGRAÇÃO... 5 3.2.1. Geração de referências... 5 getreferencemb...5 getreferencemb2...7

Leia mais

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

PADI 2015/16. Aula 1 Introdução à Plataforma.NET PADI 2015/16 Aula 1 Introdução à Plataforma.NET 1 Sumário 1. Framework.NET Arquitectura 2. Linguagem C# 2.0 Sintaxe C# vs. Java vs. C++ 3. IDE: MS Visual Studio 2005 ou superior Ferramentas Console/Win

Leia mais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais Curso de Java Orientação a objetos e a Linguagem JAVA Roteiro A linguagem Java e a máquina virtual Objetos e Classes Encapsulamento, Herança e Polimorfismo Primeiro Exemplo A Linguagem JAVA Principais

Leia mais

A interface do Microsoft Visual Studio 2005

A interface do Microsoft Visual Studio 2005 Tarefa Orientada 1 A interface do Microsoft Visual Studio 2005 Objectivos: Introdução à framework.net Iniciar o Visual Studio 2005. Criar um novo projecto de Windows Forms em Visual Basic Introdução à

Leia mais

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

Num sistema de objectos distribuídos, dois conceitos são fundamentais. Folha 10-1 Java RMI - Remote Method Invocation No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus

Leia mais

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Estendida (Física) Versão: 1.0. Autor: Angelo Bestetti Junior

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Estendida (Física) Versão: 1.0. Autor: Angelo Bestetti Junior Manual de Integração Tecnologia: WebServices SOAP XML Área: CDC Produto: CDC Estendida (Física) Versão: 1.0 Autor: Angelo Bestetti Junior Conteúdo Introdução... 3 Considerações Iniciais... 4 Privacidade...

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Kassius Vargas Prestes

Kassius Vargas Prestes Kassius Vargas Prestes Agenda 1. Introdução Web Services 2. XML, SOAP 3. Apache Tomcat 4. Axis 5. Instalação Tomcat e Axis 6. Criação de um Web Service 7. Criação de um cliente Baixar http://www.inf.ufrgs.br/~kvprestes/webservices/

Leia mais

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

SOA Introdução. SOA Visão Departamental das Organizações 1 Introdução A Organização é a forma pela qual nós coordenamos nossos recursos de todos os tipos para realizar o trabalho que nos propusemos a fazer. A estrutura de nossas organizações manteve-se basicamente

Leia mais

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

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 Número: Nome: Pági 1 de 6 LEIC/LETI 2013/14, Repescagem do 1º Teste de Sistemas Distribuídos, 1/7/14 Responda no enunciado, apes no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo I

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

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

COLIBRI Ambiente Colaborativo Multimédia MÓDULO MOODLE. Rui Ribeiro colibri@fccn.pt. FCCN - Dezembro 2010 COLIBRI Ambiente Colaborativo Multimédia MÓDULO MOODLE FCCN - Dezembro 2010 Rui Ribeiro colibri@fccn.pt Módulo COLIBRI Concebido por: José Coelho Universidade Aberta Apoiado por: Rui Ribeiro FCCN Vitor

Leia mais

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA 0 Iniciar o ambiente de desenvolvimento integrado

Leia mais

ZSRest e ZSPos Multiposto

ZSRest e ZSPos Multiposto ZSRest e ZSPos Multiposto 1 2 Este manual serve para o ajudar na configuração multiposto do ZSRest e ZSPos. Após a Instalação do ZSRest e ZSPos, é necessário configurar uma porta estática no SQL Server.

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.

Leia mais

Introdução a Web Services

Introdução a Web Services Introdução a Web Services Mário Meireles Teixeira DEINF/UFMA O que é um Web Service? Web Service / Serviço Web É uma aplicação, identificada por um URI, cujas interfaces podem ser definidas, descritas

Leia mais

Guia de início rápido BlackBerry Enterprise 4.0 para Microsoft Exchange. Versão 1.0

Guia de início rápido BlackBerry Enterprise 4.0 para Microsoft Exchange. Versão 1.0 Guia de início rápido BlackBerry Enterprise 4.0 para Microsoft Exchange Versão 1.0 Vodafone Portugal 2005 Índice 1 Introdução à solução BlackBerry 3 2 Gestão e activação de utilizadores 3 2.1 Adicionar

Leia mais

Web Services. Autor: Rômulo Rosa Furtado

Web Services. Autor: Rômulo Rosa Furtado Web Services Autor: Rômulo Rosa Furtado Sumário O que é um Web Service. Qual a finalidade de um Web Service. Como funciona o serviço. Motivação para o uso. Como construir um. Referências. Seção: O que

Leia mais

3 Classes e instanciação de objectos (em Java)

3 Classes e instanciação de objectos (em Java) 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Programação Concorrente em java - Exercícios Práticos Abril 2004

Programação Concorrente em java - Exercícios Práticos Abril 2004 Programação Concorrente em java - Exercícios Práticos Abril 2004 1. Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente

Leia mais

Web Services. (Introdução)

Web Services. (Introdução) Web Services (Introdução) Agenda Introdução SOA (Service Oriented Architecture) Web Services Arquitetura XML SOAP WSDL UDDI Conclusão Introdução Comunicação distribuída Estratégias que permitem a comunicação

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos

Leia mais

Desenvolvimento Cliente-Servidor 1

Desenvolvimento Cliente-Servidor 1 Desenvolvimento Cliente- 1 Ambiienttes de Desenvollviimentto Avançados Engenharia Informática Instituto Superior de Engenharia do Porto Alexandre Bragança 1998/99 Ambientes de Desenvolvimento Avançados

Leia mais

Java para Desenvolvimento Web

Java para Desenvolvimento Web Java para Desenvolvimento Web Servlets A tecnologia Servlet foi introduzida pela Sun Microsystems em 1996, aprimorando e estendendo a funcionalidade e capacidade de servidores Web. Servlets é uma API para

Leia mais

Fundament n os s da platafo f rm r a. NE N T André Menegassi

Fundament n os s da platafo f rm r a. NE N T André Menegassi Fundamentos da plataforma.net André Menegassi O que é o.net Framework?.NET é uma plataforma de software para desenvolvimento de aplicações que conecta informações, sistemas, pessoas e dispositivos através

Leia mais

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO Intranets FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO As intranets são redes internas às organizações que usam as tecnologias utilizadas na rede mundial

Leia mais

Sistemas Paralelos e Distribuídos - 2003/2004 Curso: Matemática /Informática Sistemas Distribuídos - 2003/2004 Curso: Ensino da Informática

Sistemas Paralelos e Distribuídos - 2003/2004 Curso: Matemática /Informática Sistemas Distribuídos - 2003/2004 Curso: Ensino da Informática Java RMI - Remote Method Invocation Folha 5-1 No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus

Leia mais

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia ADDRESS RESOLUTION PROTOCOL Thiago de Almeida Correia São Paulo 2011 1. Visão Geral Em uma rede de computadores local, os hosts se enxergam através de dois endereços, sendo um deles o endereço Internet

Leia mais

Web Services Novembro de 2011

Web Services Novembro de 2011 Web Services Novembro de 2011 1. Criação do Web Service Somar na plataforma.net. Colocação do serviço na máquina Dot. 2. Criação de uma aplicação de consola para teste deste serviço. 3. Criação de um Cliente

Leia mais

Guia e Utilização do Visual Studio 6.0

Guia e Utilização do Visual Studio 6.0 Guia e Utilização do Visual Studio 6.0 Objectivo Este guia acompanha-o através do processo de criação de uma aplicação C++ utilizando o ambiente de desenvolvimento Visual Studio 6.0. Passo 1: Criação de

Leia mais

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA 0 Inicie o ambiente de desenvolvimento integrado

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

Lista 3 Exercícios de Gestão de Redes

Lista 3 Exercícios de Gestão de Redes 1. Quais os fatores que contribuem para o sucesso de uma operação de gerenciamento? O sucesso de uma operação de Gerenciamento depende dos seguintes fatores: O sistema de gerenciamento invocador deve ter

Leia mais

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

Invocação de Métodos Remotos RMI (Remote Method Invocation) Invocação de Métodos Remotos RMI (Remote Method Invocation) Programação com Objetos Distribuídos Um sistema de objetos distribuídos permite a operação com objetos remotos A partir de uma aplicação cliente

Leia mais

Noções sobre Objetos e Classes

Noções sobre Objetos e Classes Noções sobre Objetos e Classes Prof. Marcelo Cohen 1. Elementos de programação Revisão de programação variáveis, tipos de dados expressões e operadores cadeias de caracteres escopo de variáveis Revisão

Leia mais

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição? Prova de 2011-02 1. Descreva duas maneiras de estabelecer uma conexão entre processos na camada de transporte sem o conhecimento da porta (TSAP) ao qual o servidor remoto esteja associado. 2. Estabelecer

Leia mais

Sistemas Empresariais Integrados

Sistemas Empresariais Integrados Departamento de Engenharia Informática 2010/2011 Sistemas Empresariais Integrados Tutorial de Web Services 2º semestre Pretende-se desenvolver um Web Service que converte valores de temperatura de graus

Leia mais

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 Controle de Revisões Micropagamento F2b Web Services/Web 18/04/2006 Revisão Data Descrição 00 17/04/2006 Emissão inicial. www.f2b.com.br

Leia mais

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado 5 Avaliação Decidimos avaliar a arquitetura de componentes para o OiL proposta neste trabalho em duas dimensões diferentes. Na primeira, demonstramos a capacidade de configuração do middleware com alguns

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho. Entregue três questões de cada prova. Prova de 2011-02 1. Descreva duas maneiras de estabelecer uma conexão entre processos na camada de transporte sem o conhecimento da porta (TSAP) ao qual o servidor

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Marcelo Lobosco DCC/UFJF Comunicação em Sistemas Distribuídos Aula 06 Agenda Modelo Cliente-Servidor (cont.) Invocação Remota de Método (Remote Method Invocation RMI) Visão Geral

Leia mais

Rotina de Discovery e Inventário

Rotina de Discovery e Inventário 16/08/2013 Rotina de Discovery e Inventário Fornece orientações necessárias para testar a rotina de Discovery e Inventário. Versão 1.0 01/12/2014 Visão Resumida Data Criação 01/12/2014 Versão Documento

Leia mais

Um pouco do Java. Prof. Eduardo

Um pouco do Java. Prof. Eduardo Um pouco do Java Prof. Eduardo Introdução A tecnologia JAVA é composta pela linguagem de programação JAVA e pela plataforma de desenvolvimento JAVA. Os programas são escritos em arquivos-texto com a extensão.java.

Leia mais

SAFT para siscom. Manual do Utilizador. Data última versão: 07.11.2008 Versão: 1.01. Data criação: 21.12.2007

SAFT para siscom. Manual do Utilizador. Data última versão: 07.11.2008 Versão: 1.01. Data criação: 21.12.2007 Manual do Utilizador SAFT para siscom Data última versão: 07.11.2008 Versão: 1.01 Data criação: 21.12.2007 Faro R. Dr. José Filipe Alvares, 31 8005-220 FARO Telf. +351 289 899 620 Fax. +351 289 899 629

Leia mais

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 18 Sockets OLadoServidor O Lado Cliente Múltiplos Clientes 1 Programa Capítulo 18 Sockets

Leia mais

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

Universidade Federal de Juiz de Fora Ciência da Computação Sistemas Distribuídos Professor Ciro Barbosa Universidade Federal de Juiz de Fora Ciência da Computação Sistemas Distribuídos Professor Ciro Barbosa Web Service Plínio Antunes Garcia Sam Ould Mohamed el Hacen Sumário Introdução conceitual O Web Service

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

Sistemas Distribuídos e Paralelos

Sistemas Distribuídos e Paralelos Sistemas Distribuídos e Paralelos Web Services Ricardo Mendão Silva Universidade Autónoma de Lisboa r.m.silva@ieee.org November 29, 2014 Ricardo Mendão Silva (UAL) Sistemas Distribuídos e Paralelos November

Leia mais

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados: Protocolo TCP/IP Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados: Número IP Máscara de sub-rede O Número IP é um número no seguinte formato: x.y.z.w Não podem existir

Leia mais

Java 2 Standard Edition Como criar classes e objetos

Java 2 Standard Edition Como criar classes e objetos Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da

Leia mais

BC CORREIO SISTEMA DE CORREIO ELETRÔNICO DO BANCO CENTRAL DO BRASIL. Manual do Web Service

BC CORREIO SISTEMA DE CORREIO ELETRÔNICO DO BANCO CENTRAL DO BRASIL. Manual do Web Service BC CORREIO SISTEMA DE CORREIO ELETRÔNICO DO BANCO CENTRAL DO BRASIL Manual do Web Service SUMÁRIO Introdução... 3 Informações técnicas... 4 Serviços... 5 ConsultarPastasAutorizadas... 5 ConsultarCorreiosPorPasta...

Leia mais

Conteúdo da Aula de Hoje. Web Services. Avaliação da Disciplina. O que é um web service? O que é um web service? Vantagens

Conteúdo da Aula de Hoje. Web Services. Avaliação da Disciplina. O que é um web service? O que é um web service? Vantagens Web Services Pós-Graduação em Tecnologias para o desenvolvimento de aplicações WEB Conteúdo da Aula de Hoje Conceitos básicos Teste com WS Implementação de WS (Provedor e usuário) Instrutor : Avaliação

Leia mais

SOAP. Web Services & SOAP. Tecnologias de Middleware 2004/2005. Simple Object Access Protocol. Simple Object Access Protocol SOAP

SOAP. Web Services & SOAP. Tecnologias de Middleware 2004/2005. Simple Object Access Protocol. Simple Object Access Protocol SOAP Web Services & SOAP Tecnologias de Middleware 2004/2005 SOAP Simple Object Access Protocol Os web services necessitam de comunicar entre eles e trocar mensagens. O SOAP define a estrutura e o processamento

Leia mais

Introdução ao Modelos de Duas Camadas Cliente Servidor

Introdução ao Modelos de Duas Camadas Cliente Servidor Introdução ao Modelos de Duas Camadas Cliente Servidor Desenvolvimento de Sistemas Cliente Servidor Prof. Esp. MBA Heuber G. F. Lima Aula 1 Ciclo de Vida Clássico Aonde estamos? Page 2 Análise O que fizemos

Leia mais

Redes de Computadores. Trabalho de Laboratório Nº2

Redes de Computadores. Trabalho de Laboratório Nº2 Redes de Computadores Curso de Eng. Informática Curso de Eng. de Electrónica e Computadores Trabalho de Laboratório Nº2 Configuração de TCP/IP numa rede de computadores Utilização de Ipconfig, Ping e Tracert

Leia mais

UltraCard Manual de integração via WebService Página 1/13. UltraCard. Manual de integração via WebService. Versão 2.5

UltraCard Manual de integração via WebService Página 1/13. UltraCard. Manual de integração via WebService. Versão 2.5 UltraCard Manual de integração via WebService Página 1/13 UltraCard Manual de integração via WebService Versão 2.5 UltraCard Manual de integração via WebService Página 2/13 Índice O que é WebService?...

Leia mais

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos em java. Polimorfismo Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET 2010/2011 1 Protocolo TCP/IP É um padrão de comunicação entre diferentes computadores e diferentes sistemas operativos. Cada computador deve

Leia mais

Guia rápido de uso da interface beta do NFS-e Easy para operação com Sistemas WebISS

Guia rápido de uso da interface beta do NFS-e Easy para operação com Sistemas WebISS Guia rápido de uso da interface beta do NFS-e Easy para operação com Sistemas WebISS NFS-e Easy v.1.0.2 RC1 Produto: Guia rápido de utilização do NFS-e Easy v1.0.2 RC1 Release date: Set, 23 2010 1 Sumário

Leia mais

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

Computação Orientada aos Serviços. WF (parte 1) Semestre de Inverno 12/13 Computação Orientada aos Serviços WF (parte 1) Semestre de Inverno 12/13 Workflow No desenvolvimento de software, o principal objectivo é resolver problemas reais de negócio. Normalmente parte-se a resolução

Leia mais

A Figura... mostra a arquitetura técnica de serviços na Web

A Figura... mostra a arquitetura técnica de serviços na Web Este capítulo proporciona uma visão técnica simplificada de um sistema UDDI. A arquitetura técnica de UDDI consiste de três partes: O Modelo de Informação UDDI Um esquema XML para descrever negócios e

Leia mais

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

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) Sessão Prática II JPA entities e unidades de persistência 1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) a) Criar um Web Application (JPAsecond) como anteriormente:

Leia mais

Guia Rápido do Contacts

Guia Rápido do Contacts Guia Rápido do Contacts IPBRICK SA 12 de Novembro de 2014 1 Conteúdo 1 Introdução 3 2 IPBrick - Contactos 3 2.1 Separador Administração........................ 4 2.1.1 Requisitos dos ficheiros.csv..................

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode

Leia mais

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc. Endereços IP Endereços IP IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.) precisam ter endereços. Graças

Leia mais

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

Leia mais