none
Classes no Web Service ou na Aplicação RRS feed

  • Pergunta

  • Boa Tarde,

    Estou desenvolvendo uma aplicação em VB.Net. A aplicação consiste em uma parte Windows Forms e um Web Service.
    Gostaria de saber onde devo escrever minhas classes (no WebService ou Windows Forms), pois por exemplo numa rotina onde preciso incluir um Cliente no banco de dados acessado pelo Web Service, iria dar muito trabalho passar todos os campos por parametro para o método no Web Service, como posso facilitar esse transporte??
    Tentei criar a mesma classe no client e no WS e passar como parametro do método a classe, porém ele retorna um erro.

    Muito obrigado
    terça-feira, 21 de julho de 2009 18:53

Todas as Respostas

  • Lucas,

    Acho que o ideal seria criar as classes em uma camada de negócio e utilizá-la no projeto do Web Service e Windows Forms. No caso do Web Service, para não enviar diversos campos como parâmetros, é possível criar complex types.

    Qual erro é mostrado em seu código?

    Att.

    Ari C. Raimundo
    quarta-feira, 22 de julho de 2009 01:29
    Moderador
  • Lucas,

    O Ideal é criar as classes dentro de um Class Library.

    Quanto ao erro que você está enfrentando pode ser de conflito de namespace. Por exemplo, você tem uma classe A que é retornada na chamada de um método do WebService. Para não dar erros, uma instancia da Classe A, chamada de objA, tem que pertencer ao namespace referente ao WebService.

    Por exemplo:

    Você adicionou o WebService ao teu projeto e o nomeou como wsTeste. A instância da classe A, deve ser referente à classe wsTeste.A.



    Atenciosamente,


    Rodrigo Romano
    New Concept
    http://www.nconcept.net
    (12) 8115-4366
    quinta-feira, 23 de julho de 2009 03:41
  • Boa Tarde, agradeço as respostas.

    Então Ari, o erro apresentado diz que a classe que instanciei no Client não é a mesma que possuo no WS.

    Rodrigo, quando acesso o WS pelo Client não consigo visualizar as classes do WS para instanciá-las. Foram criadas como public, mas mesmo assim não consigo instânciá-las no Client. Então tentei criar uma classe no client com o mesmo nome da que tem no WS, ai é apresentado o erro relatado acima.
    Como faço para instânciar no Client uma classe que está dentro do WS??

    Grato
    Lucas
    quinta-feira, 23 de julho de 2009 15:27
  • Lucas, boa tarde!

    Era isso que eu falei no post Anterior, você não pode tentar acessar a classe diretamente, pois você precisa ter acesso à classe que será retornada pelo WS. Neste caso, você sabe que é a mesma classe (pois foi você que desenvolveu), mas normalmente, você não saberia qual seria.

    Para ter acesso à classe prossiga da seguinte maneira:

    Vamos dizer que a sua classe se chama Teste, ok?
    E O WebService se chama Service1

    Quando você for no teu projeto e adicionar a referência, o Visual Studio pedirá um nome para aquele serviço, certo?

    Por exemplo, se você colocar wsTeste neste campo, o Visual Studio criará um namespace para você com este mesmo nome.

    Então, para acessar a classe Teste que será retornada pelo WebService, você deverá fazer assim:

    Este exemplo está em C#, mas acho que deve ser a mesma coisa.

    wsTeste.

    Service1 svc= new WebApplication1.wsTeste.Service1(); // instanciando o webService

    wsTeste.

    Teste objTeste = svc.FazAlgumaCoisa(); // chamando o metodo que retornará a classe Teste



    Atenciosamente,


    Rodrigo Romano
    rodrigo@nconcept.net
    New Concept
    http://www.nconcept.net
    (12) 8115-4366
    quinta-feira, 23 de julho de 2009 15:51
  • Complementando a respsta dos amigos:

    - Dê uma google(zada)..rs ou bind(zada) ..rs pela internet..e procure refências sobre WCF (ServiceHost + Service) a idéia é justamente essa, definir um projeto Class Librarye disponibilizar através do serviço ServiceHost.


    Exemplo: http://www.codeproject.com/KB/WCF/WCF_windows_hosting.aspx


    Abraço,
    Nelson Borges - http://nelsonborgesjr.spaces.live.com/blog/
    sábado, 25 de julho de 2009 23:46