Eu tenho um serviço WCF e uma lib1 principal.
Digamos, eu tenho um serviço Salvar perfil. O WCF obtém dados (com contrato de dados predefinido) do cliente e passa o mesmo para a Classe Principal Lib1, gera resposta e os envia de volta ao cliente.
Método WCF: SaveProfile (perfil ProfileDTO)
A versão atual 1.0 ProfileDTO possui o seguinte nome de usuário Senha Nome DOB (na sequência aaaa-mm-dd) CreatedDate (Na sequência aaaa-mm-dd)
A próxima versão (V2.0) ProfileDTO tem o seguinte nome de usuário Senha Nome DOB (no UnixTimeStamp) CreatedDate (no UnixTimeStamp)
O ProfileDTO da versão 3.0 possui o seguinte (com alteração na validação do comprimento do nome de usuário e da senha) Nome do usuário Senha Nome do primeiro DOB (no UnixTimeStamp) CreatedDate (no UnixTimeStamp)
Em termos simples, temos a alteração DataContract e Workflow entre cada versão 1. Como nomeio os métodos no Serviço WCF e na Classe Principal Lib1? 2. Preciso seguir algum padrão específico para facilitar o desenvolvimento e a manutenção? 3. Preciso ter terminais diferentes para uma versão diferente?
No exemplo acima, eu tenho um método chamado "SaveProfile". Preciso nomear os métodos como “SaveProfile1.0”, “SaveProfile2.0”, etc. Se for esse o caso quando não houver alteração entre as versões “3.0” e “4.0”, haverá dificuldades na manutenção. Estou procurando uma abordagem que ajude a facilitar a manutenção
fonte
Respostas:
Existem duas maneiras de ter versões diferentes do mesmo contato. O primeiro é usar espaços para nome e o segundo para usar nomes de serviço diferentes . Pessoalmente, prefiro a abordagem de namespace diferente, simplesmente porque ela encapsula a "versão" com um título de namespace e permite que os chamadores sejam específicos sobre seus requisitos de contrato.
No entanto, a criação de novas versões de contrato corre o risco de quebrar a compatibilidade com os chamadores existentes.
fonte