none
Duvida tipos WebSerivices RRS feed

  • Pergunta

  •  

    Ola a todos!!

    Estou com serio problemas com o webServices ou talvez a arquitetura do sistema

     

    A arquitetura do sistema esta dividido em 3 camadas :

     

    TO - Transfer Objects

    BO - Bussiness Objects

    DA - Data Access

     

    Tenho tambem uma camada de webservices onde por exemplo existe um metodo chamado AtualizaAlunos(TOAluno)

    Esse método tem como parametro um TOAluno

     

    Ao expor esse webservices , no meu front end  , o TOAluno como parametro se torna um TOAluno do tipo do WebServices , ou seja , no meu FRONT - END , nao consigo passar um TOAluno da camada TO , tenho que passar um

    TOAluno da camada do webservices.

     

    Exemplo :

     

    Namespace do WEBSERVICES => Projeto.Teste.Web.Services.Alunos.TOAlunos

     

    Namespace da camada TO => Projeto.Entidade.TOAlunos

     

     

    No front end , onde adiciono a referencia do webservices, o tipo para passar é

    Projeto.Teste.Web.Services.Alunos.TOAlunos

    onde esperava

    Projeto.Entidade.TOAlunos

     

    Como faco para passar o tipo

    Projeto.Entidade.TOAlunos no front-end

     sendo que o meu webservices so aceita

    Projeto.Teste.Web.Services.Alunos.TOAlunos

     

     

     

     

    segunda-feira, 7 de julho de 2008 15:45

Todas as Respostas

  • O erro neste caso acontece por diferenças de namespaces, exclua a referencia da dll e use apenas o TO do webservice.

     

    segunda-feira, 7 de julho de 2008 18:39
  • Ok , eu sei disso , acontece que pensei que existia uma forma de fazer cast ou coisa do tipo , pois o mu front end esta totalmente estruturado em SOA . Pois como o front -end esta dividido em pacotes , um webservices que possue um TO do tipo aluno no pacote de Turmas , é diferente do TO Aluno do pacote de aulas , entende. Ou seja , os webservices dos seus respectivos pacotes no front-end , tem seus tipos diferentes , por causa dos namespaces.

     

     

    terça-feira, 8 de julho de 2008 12:51
  • Entendo, mas não tem cast que resolva esse problema não.

     

    terça-feira, 8 de julho de 2008 15:09
  • Ok vlw

     

    terça-feira, 8 de julho de 2008 17:02
  • Uma coisa que talvez ajude é vc não retransmitir as classes, e usar apenas a referencia da DLL como era feito antes.

    Se vc olhar em advanced na hora de adicionar a referencia, vc acha o que estou falando.

    Talvez isso ajude, pois só vai existir uma referencia para as classes.

     

    terça-feira, 8 de julho de 2008 18:31
  • WebServices ou WCF?

    Com WebServices, alteração manual no Proxy para usar as classes originais da dll referenciada.
    Para WCF, na janela de adicionar serviço tem um botão Advanced. Clique nele.
    Na tela que abre você tem a parte ali do Data Type que permite você usar as classes originais da sua camada, ao invés do VS gerar a proxy destas classes.

    Basicamente, o WCF/WebServices criam classes com a mesma estrutura dos dados que você está passando, para fins de transporte (daí o nome proxy). Isso permite que outras plataformas acessem o seu serviço sem problemas. Mas, caso queira usar os objetos originais, você terá que remover os proxies do código gerado e usar as classes originais da referência importada.

    De qualquer forma, isso é PORCO. Se é pra usar serviço, tem que estar completa e totalmente desconectado das camadas superiores... Isso garante interoperabilidade e não expõe métodos à camada inferior (o consumidor de serviços).

    Se a intenção é usar tais métodos, então pra que fazer serviço em primeiro lugar, concorda?
    sábado, 19 de julho de 2008 03:17
  •  

    O problema está na arquitetura. DTO / TO deve ser único na solução e "todos" os projetos devem referencia-lo, ele será uma camada única de transferencia de parametros entre as camadas.

    Exemplo: Crie um proj DTO e referencie no client do WS e no proprio WS.

    quinta-feira, 24 de julho de 2008 12:30