Melhor maneira de fazer engenharia reversa uma interface de serviço web a partir de um arquivo WSDL?

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

Pergunta

Eu herdei um arquivo WSDL para um serviço web em um sistema que eu não tenho acesso a para desenvolvimento e teste.

Eu preciso gerar um serviço web que adere a esse WSDL. O invólucro é .NET, mas se há uma maneira fácil de fazer isso com outra plataforma, que pode ser capaz de olhar para isso. O serviço de produção web está baseado em Java.

Qual é a melhor maneira de ir sobre como fazer isso?

Nota: O wsdl herdou não parece ser compatível com o wsdl.exe , porque não se conforma com perfil WS-I Basic v1.1. Em particular, o grupo que passou-o mencionado ele usa outro padrão que a ferramenta Microsoft não suporta, mas eles não esclarecer. O erro está relacionado ao campo de um 'nome' necessário:

Error: Element Reference '{namespace}/:viewDocumentResponse' declared in
schema type '' from namespace ''
       - the required attribute 'name' is missing

Por uma questão de clareza, eu entendo que eu posso facilmente criar uma .NET classe wrapper a partir do arquivo WSDL, mas isso não é o que eu preciso. É assim:

Update:. O serviço Web original foi criado usando Axis

Diagrama do sistema mostrando serviço web indisponíveis e serviço web falsa http: // paulw.us/blog/uploads/SO-WSDL-Question2.gif

Foi útil?

Solução

Estamos usando FUMEC - ferramenta Web Services Contrato Primeiro de Thinktecture para fazer o desenvolvimento de serviços web criação de esquema XSD em primeiro lugar e, em seguida, gerar interfaces de serviço que utilizam esta ferramenta. Pode ser útil para gerar interfaces de serviço do WSDL, mas eu não tentei isso ainda me.

Outras dicas

Você pode achar útil a utilitário de linha de comando wsdl.exe do .NET usando a opção /serverInterface. De acordo com a documentação:

gera interfaces para server-side implementação de um Web ASP.NET Serviço. Uma interface é gerado para cada ligação no documento WSDL (s). Os WSDL sozinho implementa o WSDL contrato (classes que implementam a interface não deve incluir qualquer um o seguinte sobre os métodos de classe: atributos de serviço Web ou Serialização atribui essa mudança o contrato WSDL). pequeno formulário é '/ Si'.

Sim - você pode usar FUMEC (conforme acima) para gerar o código do lado do servidor. O URL real pode então ser substituído para apontar para o URL de teste que você deseja usar.

No entanto, isso só gera um topo. Você ainda tem que código do exemplo real GetCustomers () método que é um pouco suspeito porque você não tem idéia de como as obras de implantação real.

Em seguida, você pode zombar isso ou criar um servidor web ASP simples para executá-lo.

Tente zombar da interface wrapper utilizando RhinoMocks e StructureMap .

Não sei se isso vai ajudar,

o que eu fiz recentemente é:

  • Gerar ficheiro.cs usando a ferramenta WSDL ou visual studio
  • Eu mudei-o para ser uma classe parcial
  • Eu criei uma outra classe parcial, em que tudo que faz é adicionar uma linha para dizer que os implementos classe iWhatever
  • Eu criei uma interface que é o mesmo que a classe proxy gerado (Portanto, o proxy totalmente implementa a interface)

Então eu usei um quadro de zombaria (MOQ) no meu caso, para zombar do WebService, eu então utilizado mans pobres injeção de dependência (passe o mock em um construtor da classe em teste) .. que pode lidar com uma instância de iWhatever

Test distância ..

Espero que ajude

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