Inquiridor
Duvida tipos WebSerivices

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
Todas as Respostas
-
-
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.
-
-
-
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.
-
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? -
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.