Qual é a diferença entre um endpoint, um serviço e uma porta ao trabalhar com webservices?
-
08-06-2019 - |
Pergunta
Usei o Apache CXF para expor cerca de dez classes Java como serviços da web.
Gerei clientes usando CXF, Axis e .NET.
No Axis e no CXF é gerado um "Serviço" ou "Localizador".A partir deste serviço você pode obter uma "Porta".A “Porta” é utilizada para fazer chamadas individuais aos métodos expostos pelo web service.
No .NET o “Serviço” expõe diretamente as chamadas ao serviço web.
Alguém pode explicar a diferença entre uma porta, um serviço, um localizador e um endpoint quando se trata de serviços web?
Eixo:
PatientServiceImplServiceLocator locator =
new PatientServiceImplServiceLocator();
PatientService service = locator.getPatientServiceImplPort();
CXF:
PatientServiceImplService locator = new PatientServiceImplService();
PatientService service = locator.getPatientServiceImplPort();
.líquido:
PatientServiceImplService service = new PatientServiceImplService();
Solução
eu pularia para http://www.w3.org/TR/wsdl.html o que acho que explica razoavelmente bem Porta, Serviço e Endpoint.Um localizador é um mecanismo específico de implementação que algumas pilhas WS usam para fornecer acesso a terminais de serviço.
Outras dicas
Encontrei as informações com base na resposta de Kevin Kenny, mas resolvi postá-las aqui para outras pessoas.
Um documento WSDL define serviços como coleções de terminais de rede ou portas.No WSDL, a definição abstrata de terminais e mensagens é separada de sua implantação de rede concreta ou de ligações de formato de dados.Isso permite a reutilização de definições abstratas:mensagens, que são descrições abstratas dos dados sendo trocados, e tipos de portas, que são coleções abstratas de operações.As especificações concretas de protocolo e formato de dados para um determinado tipo de porta constituem uma ligação reutilizável.Uma porta é definida associando um endereço de rede a uma ligação reutilizável, e uma coleção de portas define um serviço.Portanto, um documento WSDL utiliza os seguintes elementos na definição de serviços de rede:
- Tipos– um contêiner para definições de tipos de dados usando algum sistema de tipos (como XSD).
- Mensagem– uma definição abstrata e digitada dos dados que estão sendo comunicados.
- Operação– uma descrição abstrata de uma ação apoiada pelo serviço.
- Tipo de porta–um conjunto abstrato de operações suportadas por um ou mais pontos de extremidade.
- Vinculativo– um protocolo concreto e uma especificação de formato de dados para um tipo de porta específico.
- Porta– um único terminal definido como uma combinação de uma ligação e um endereço de rede.
- Serviço– uma coleção de endpoints relacionados.
Eu gostaria de adicionar isso <port>
e <endpoint>
servem ao mesmo propósito, mas port
é usado pelo WSDL 1.1 e endpoint
por WSDL 2.0.
Como você já mencionou, esses termos significam coisas diferentes em pilhas diferentes - não existe uma resposta genérica certa para serviços da web.