Usuário com melhor resposta
Como passar um objeto qualquer do meu servico para web e da web para o serviço?

Pergunta
-
Olá pessoal, como estão??
Estou com uma dúvida, e não estou conseguindo solucioná-la.
Tenho um seriço que é a camada de negócio de todo o sistema. Tem a aplicação web que é a camada de apresentação e a camada de negócio é a serviço (wfc) que nesse serviço contém todos os métodos para solucionar problemas que a camada de apresentação pedir.
Tem mais uma camada, a de banco de dados também, no qual só o serviço tem acesso.
O que estou com problemas é que há metodos que gostaria de retornar um objeto especifico, como por exemplo um cliente, um login e gostaria de passar esse objeto que foi instanciado na aplicação passar para o serviço e dai o serviço pode também retornar esse objeto para a aplicação.
O que eu posso fazer?
obrigado a todos
Respostas
-
Ola Carlos,
Por padrão, a serialização (independentemente do WCF) não serializa métodos, mas somente o estado do objeto, ou seja, as propriedades.
Para que você consiga reutilizar os métodos, você tem que isolar os objetos que são retornados pelo serviço (como a classe Cliente) em um Assembly (DLL) a parte e referenciá-la nos dois projetos (Cliente e Host). Ao fazer a referência do serviço no cliente, por padrão, ela reutiliza os tipos encontrados os assemblies referenciados, isso quer dizer que, se no momento da referência ele encontrar a classe Cliente referenciada no teu projeto ele a utilizará.
Somente atente-se para a questão do SOA e interoperabilidade, já que você está estrapolando os limites do host.
Todas as Respostas
-
Boas Carlos,
Na criação do teu contrato você especificar objetos complexos, como é o caso de um objeto Cliente, Usuario, etc. Apenas atente-se para definir o atributo DataContractAttribute para todos esses objetos que fazem parte do contrato.
Ao referenciá-lo na aplicação, automaticamente a IDE do Visual Studio ou o utilitário svcutil.exe irá, baseado no WSDL, criar uma representação deste objeto do lado do cliente, permintindo que você receba e envie este para o serviço. -
Olá Israel, tudo bem?
Obrigado pela ajuda!!! Mas gostaria de saber se uma dessas classes tiver alguns métodos, e esses métodos precisarem ser utilizados tanto na camada de aplicação quanto a do serviço é possível que ambos utilizem esses métodos?
Os atributos e propriedades eu não tive problemas. Tanto na camada de aplicação quanto a de serviço os atributos e propriedades da classe como Cliente estavam visiveis, porém os métodos dessa classe não estavam.
Teria alguma sugestão?
Abraço,
Carlos
-
Ola Carlos,
Por padrão, a serialização (independentemente do WCF) não serializa métodos, mas somente o estado do objeto, ou seja, as propriedades.
Para que você consiga reutilizar os métodos, você tem que isolar os objetos que são retornados pelo serviço (como a classe Cliente) em um Assembly (DLL) a parte e referenciá-la nos dois projetos (Cliente e Host). Ao fazer a referência do serviço no cliente, por padrão, ela reutiliza os tipos encontrados os assemblies referenciados, isso quer dizer que, se no momento da referência ele encontrar a classe Cliente referenciada no teu projeto ele a utilizará.
Somente atente-se para a questão do SOA e interoperabilidade, já que você está estrapolando os limites do host. -
-
Ola Carlos,
No meu site eu tenho escrito vários artigos para falar sobre as features do WCF: http://www.projetando.net/Sections/Articles.aspx. Já no meu blog, eu comento também alguns detalhes sobre ele: http://weblogs.pontonetpt.com/israelaece/