Uma entidade compartilhada entre dois serviços da web?
-
05-07-2019 - |
Pergunta
Eu estou trabalhando em um projeto onde eu tenho 2 serviços de web que precisam da mesma entidade. Os 2 serviços web estão no mesmo servidor para o back-end, eles compartilham as mesmas classes.
No lado do front-end, meus consome código ambos serviços web e vê as entidades de ambos os serviços como separado (em diferentes namespaces), então não posso usar a entidade em ambos os serviços.
Alguém sabe de uma maneira de permitir que isso trabalho no .NET 2.0?
Eu fiz isso com a minha entidade:
[XmlType(TypeName = "Class1", Namespace = "myNamespace")]
public class Class1
{
public int field;
}
Na esperança de que minha IDE de alguma forma "sabe" que a classe é o mesmo em ambos os serviços web para que ele não iria criar entidades separadas para ambas as classes, mas sem sorte.
Isso é possível fazer com serviços da web .NET 2.0?
Solução
Eu acho que você não pode fazer isso de dentro VS mas você pode usar manualmente o utilitário wsdl.exe
assim:
wsdl.exe /sharetypes http://localhost/MyService1.asmx?wsdl http://localhost/MyService2.asmx?wsdl
Observe a opção /sharetypes
que ativa o recurso tipo de compartilhamento. Este recurso cria um arquivo de código com uma única definição de tipo para tipos idênticos partilhados entre os diferentes serviços (o namespace, nome e assinatura fio devem ser idênticos).
Mais informações:
Outras dicas
Eu não tenho certeza sobre os detalhes de implementação com .NET 2.0, mas acredito que o que você quer fazer é colocar as classes comuns em um arquivo XSD separado e se referem a ele de dentro de seus dois do WSDL. Desta forma, os tipos mais comuns têm o mesmo namespace entre os dois serviços.
Agora, como você faz isso no .NET 2.0 eu não poderia dar-lhe os detalhes sobre ...
É possível verificar o namespace da entidade? Certifique-se de que é a mesma em ambos os serviços web.