O que é um terminal de serviço da web?

323

Digamos que meu serviço da web esteja localizado em http://localhost:8080/foo/mywebservicee meu WSDL esteja em http://localhost:8080/foo/mywebservice?wsdl.

É http://localhost:8080/foo/mywebserviceum ponto de extremidade, ou seja, é o mesmo que o URI do meu serviço da web ou onde as mensagens SOAP são recebidas e não ordenadas?

Você poderia me explicar o que é e qual é o objetivo?

karakays
fonte

Respostas:

416

Essa é uma resposta mais curta e esperançosamente mais clara ... Sim, o terminal é o URL em que seu serviço pode ser acessado por um aplicativo cliente. O mesmo serviço da web pode ter vários pontos de extremidade, por exemplo, para disponibilizá-lo usando protocolos diferentes.

lbalazscs
fonte
8
@ user137717 Não, os sites não são serviços da web. Um serviço da Web é usado principalmente por aplicativos, enquanto os sites são principalmente para humanos.
lbalazscs
4
@ user137717 O nó de extremidade é a URL onde seu serviço da Web pode ser acessado por um aplicativo cliente. Se você não entender o que é um serviço da Web, leia, por exemplo, o seguinte: stackoverflow.com/questions/226108/…
lbalazscs
1
+1 de mim também e uma pergunta: por que não chamá-lo (isto é, o chamado "ponto final") de "URI base"? Existe uma diferença fundamental entre um "ponto final" e um "URI base"? Obrigado.
Retido
1
@Withheld Conceitualmente, há uma diferença entre um endpoint e seu endereço, mas na prática geralmente o endereço é utilizado, porque normalmente você precisa configurar um cliente com um "endpoint" para encontrar o serviço.
Lbalazscs
2
@lbalazscs - Endereço IP: 8080 / foo / ShoppingWebservice / Toys , Endereço IP: 8080 / foo / ShoppingWebservice / Books etc. - Como é chamada a parte / Toys, / Books? Eles também são chamados de pontos finais ou recursos?
MasterJoe2
47

Resposta atualizada, de Peter nos comentários:

Essa é uma "antiga terminologia", use diretamente a definição de "ponto final" do WSDL2 (a WSDL2 traduzida como "porta" para "ponto final").


Talvez você encontre uma resposta neste documento: http://www.w3.org/TR/wsdl.html

Um documento WSDL define serviços como coleções de terminais ou portas de rede. No WSDL, a definição abstrata de pontos de extremidade e mensagens é separada de suas implantações de rede concretas ou ligações de formato de dados. Isso permite a reutilização de definições abstratas: mensagens, que são descrições abstratas dos dados que estão sendo trocados, e tipos de portas que são coleções abstratas de operações. O protocolo concreto e as especificações de formato de dados para um tipo de porta específico constituem uma ligação reutilizável. Uma porta é definida pela associação de 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 usa 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 suportada pelo serviço.
  • Tipo de porta - um conjunto abstrato de operações suportadas por um ou mais pontos de extremidade.
  • Encadernação - um protocolo concreto e 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 pontos de extremidade relacionados.

http://www.ehow.com/info_12212371_definition-service-endpoint.html

O terminal é um ponto de conexão em que os arquivos HTML ou as páginas ativas do servidor são expostos. Os terminais fornecem as informações necessárias para endereçar um terminal de serviço da Web. O terminal fornece uma referência ou especificação usada para definir um grupo ou família de propriedades de endereçamento de mensagens e fornece características de ponta a ponta, como referências para a origem e o destino dos terminais e a identidade das mensagens para permitir uniformidade endereçamento de mensagens "independentes". O terminal pode ser um PC, PDA ou terminal de ponto de venda.

Julien
fonte
72
"Os terminais fornecem as informações necessárias para endereçar um terminal de serviço da Web." Tem que amar essa frase! : D
musaul 10/10
2
Essa é uma "antiga terminologia", use diretamente a definição de "ponto final" do WSDL2 (a WSDL2 traduzida como "porta" para "ponto final").
Peter Krauss
34

Um terminal de serviço da web é a URL que outro programa usaria para se comunicar com seu programa. Para ver o WSDL, você adiciona ?wsdlao URL do terminal do serviço da web.

Os serviços da Web são para interação programa a programa , enquanto as páginas da web são para interação programa-humano .

Então: Endpoint é: http://www.blah.com/myproject/webservice/webmethod

Portanto, o WSDL é: http://www.blah.com/myproject/webservice/webmethod?wsdl


Para expandir ainda mais os elementos de um WSDL, sempre acho útil compará-los ao código:

Um WSDL possui 2 partes (físicas e abstratas).

Porção física:

Definições - variáveis ​​- ex: myVar, x, y, etc.

Tipos - tipos de dados - ex: int, double, String, myObjectType

Operações - métodos / funções - ex: myMethod (), myFunction (), etc.

Mensagens - parâmetros de entrada de método / função e tipos de retorno

  • ex: public myObjectType myMethod ( String myVar)

Porttypes - classes (isto é, são um contêiner para operações) - ex: MyClass {}, etc.

Parte abstrata:

Ligação - eles se conectam aos porttypes e definem o protocolo escolhido para comunicação com este serviço da web. - um protocolo é uma forma de comunicação (portanto, texto / SMS, vs. telefone versus e-mail, etc.).

Serviço - lista o endereço em que outro programa pode encontrar seu serviço da Web (ou seja, seu terminal ).

specialk1st
fonte
5
Descobri que "os serviços da Web são para interação programa a programa, enquanto as páginas da web são para interação programa-humano" é uma declaração muito útil para me deixar confuso "por que diabos as pessoas não chamariam o ponto final como URL"
Minnie
14

Nos projetos anteriores em que trabalhei, o terminal era uma propriedade relativa. Ou seja, pode ou não ter sido anexado, mas sempre continha o protocol://host:port/partOfThePath.

Se o serviço chamado tiver uma parte dinâmica, por exemplo ?param=dynamicValue, a, essa parte será adicionada ao terminal. Mas muitas vezes o ponto final pode ser usado como está sem precisar ser alterado.

O que é importante entender é o que um ponto de extremidade não é e como ele ajuda. Por exemplo, uma maneira alternativa de passar as informações armazenadas em um nó de extremidade seria armazenar as diferentes partes do nó de extremidade em propriedades separadas. Por exemplo:

hostForServiceA=someIp
portForServiceA=8080
pathForServiceA=/some/service/path
hostForServiceB=someIp
portForServiceB=8080
pathForServiceB=/some/service/path

Ou se o mesmo host e porta em vários serviços:

host=someIp
port=8080
pathForServiceA=/some/service/path
pathForServiceB=/some/service/path

Nesses casos, o URL completo precisaria ser construído em seu código da seguinte forma:

String url = "http://" + host + ":" + port + pathForServiceA  + "?" + dynamicParam + "=" + dynamicValue;

No contrato, isso pode ser armazenado como um terminal, como tal

serviceAEndpoint=http://host:port/some/service/path?dynamicParam=

E sim, muitas vezes armazenamos o terminal até e incluindo o '='. Isso levou a um código como este:

String url = serviceAEndpoint + dynamicValue;

Espero que isso mostre alguma luz.

Jose Martinez
fonte
7

Simplificando, um ponto final é um final de um canal de comunicação. Quando uma API interage com outro sistema, os pontos de contato dessa comunicação são considerados pontos finais. Para APIs, um terminal pode incluir uma URL de um servidor ou serviço. Cada terminal é o local a partir do qual as APIs podem acessar os recursos necessários para executar sua função.

As APIs funcionam usando 'solicitações' e 'respostas'. Quando uma API solicita informações de um aplicativo ou servidor da Web, ela recebe uma resposta. O local em que as APIs enviam solicitações e onde o recurso está localizado é chamado de terminal.

Referência: https://smartbear.com/learn/performance-monitoring/api-endpoints/

Satya
fonte
6

Um ponto de extremidade é especificado como um URL relativo ou absoluto que geralmente resulta em uma resposta. Essa resposta geralmente é o resultado de um processo do lado do servidor que, por exemplo, poderia produzir uma sequência JSON. Essa sequência pode ser consumida pelo aplicativo que fez a chamada para o terminal. Portanto, em geral, os pontos de extremidade são pontos de acesso predefinidos, usados ​​nas redes TCP / IP para iniciar um processo e / ou retornar uma resposta. Os pontos de extremidade podem conter parâmetros passados ​​na URL, como pares de valores-chave, vários pares de valores-chave são separados por um e comercial, permitindo que o ponto final chame, por exemplo, um processo de atualização / inserção; portanto, os pontos de extremidade nem sempre precisam retornar uma resposta, mas uma resposta é sempre útil, mesmo que seja apenas para indicar o sucesso ou falha de uma operação.

Martyn Wynn
fonte