A gerar um WSDL a partir de um ficheiro XSD
Preciso de gerar um ficheiro WSDL com um ficheiro XSD. Como faço isto? Posso fazer isto em VS2005? Qual é a maneira mais simples de fazer isto?
6 answers
Você não pode-um XSD descreve os aspectos de dados, por exemplo, de um webservice - o WSDL descreve as funções dos serviços web (chamadas de método). Você normalmente não pode descobrir o método chamadas a partir de seus dados sozinho.
Estas são duas partes distintas da equação. Por uma questão de simplicidade, importaria frequentemente as suas definições de XSD para o WSDL na marca<wsdl:types>
.
(graças ao Cheeso por apontar o meu uso incorrecto dos Termos)
Um XSD descreve os aspectos dos dados. de um serviço web-o WSDL descreve as funções dos serviços web (método chama). Não pode tipicamente descubra o método de chamadas do seu só o data.
O WSDL não descreve funções. WSDL define uma interface de rede, que por si só é composta de Pontos finais que recebem mensagens e, em seguida, às vezes responder com mensagens. Descrição do WSDL os pontos finais e as mensagens de pedido e resposta. É muito orientada para a mensagem.
Muitas vezes pensamos no WSDL como um conjunto de funções, mas isto é porque as ferramentas de serviços web normalmente geram proxies do lado do cliente que expõem as operações do WSDL como métodos ou chamadas de funções. Mas o WSDL não requer isso. Este é um efeito colateral das ferramentas.
EDIT : Também, no caso geral, o XSD não define aspectos de dados de um serviço web. O XSD define os elementos que pode estar presente num documento XML conforme. Tal documento pode ser trocado como uma mensagem sobre um endpoint de serviço web, mas não precisa ser.
Voltando à pergunta, responderia à pergunta original de forma um pouco diferente. Eu gostaria de dizer que sim, é possível gerar um arquivo WSDL dado um arquivo xsd, da mesma forma que é possível gerar uma omeleta usando ovos.
Editar : a minha resposta original não foi clara. Deixa-me tentar outra vez. Eu não sugira que o XSD é equivalente ao WSDL, nem que um XSD é suficiente para produzir um WSDL. Eu digo que é possível gerar um WSDL, dado um ficheiro XSD , Se por essa frase quer dizer "gerar um WSDL usando um ficheiro XSD". Ao fazê-lo, irá aumentar a informação no ficheiro XSD para gerar o WSDL. Você precisará definir coisas adicionais-partes de mensagens, operações, tipos de portas - nenhuma delas está presente no XSD. Mas é possível "gerar um WSDL, dado um XSD" , com algum esforço criativo.
Se a frase "gerar um WSDL dado um XSD" é tomada para implicar "transformar mecanicamente um XSD em um WSDL" , então a resposta é não, você não pode fazer isso. Isto deve ser claro dada a minha descrição do WSDL acima.
Ao gerar um WSDL usando um ficheiro XSD, irá normalmente fazer algo assim (repare nos passos criativos neste procedimento):
- importar o esquema XML para o WSDL (WSDL: types element)
- adicione ao conjunto de tipos ou elementos com outros, ou embalagens (digamos matrizes, ou estruturas contendo os tipos básicos) como desejado. O resultado de #1 e # 2 compreendem todos os tipos que o WSDL irá usar.
- defina um conjunto de mensagens de entrada e saída (e talvez falhas) em termos de tipos previamente definidos.
- definir um tipo de porto, que é a coleção de pares de in.mensagens. Você pode pensar em port-type como um analógico WSDL para uma interface Java.
- especifique uma ligação, que implementa o tipo de porta e define como as mensagens serão serializadas.
- especifique um serviço, que implemente a ligação.
A maior parte da WSDL é mais ou menos boilerplate. Pode parecer assustador, mas isso é principalmente por causa daqueles colchetes assustadores e abundantes, eu encontrei.
Alguns sugeriram que este é um processo manual longo. Talvez. Mas é assim que se pode construir serviços interoperáveis. Você também pode usar ferramentas para definir o WSDL. Gerar dinamicamente WSDL a partir de código levará a armadilhas interop.Esta ferramenta xsd2wsdl faz parte do projecto Apache CXF que irá gerar um WSDL minimalista.
Pessoalmente (e dado o que eu sei, isto é, Java e axis), eu geraria um modelo de dados Java a partir do .XSD files (Axis 2 can do this), and then add an interface to describe my web service that uses that model, and then generate a WSDL from that interface.
Porque a. NET também tem todas estas características, deve ser possível fazer tudo isso nesse ecossistema também.
Podemos gerar o ficheiro wsdl a partir do xsd, mas tem de usar o pacote oracle enterprise do eclipse(OEPE). basta criar xsd e, em seguida, clique com o botão direito->new->wsdl...