Qual é a diferença entre um endpoint, um serviço e uma porta ao trabalhar com webservices?

StackOverflow https://stackoverflow.com/questions/11561

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();
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top