none
Como LEIO um dado de uma aplicação WINDOWS VIA WebService? RRS feed

  • Pergunta

  • Olá baseado no exemplo da lógica abaixo como eu leria um dado de uma aplicação windows via webservice ou seria melhor utilizar smart client?

     

    A aplicação windows faz a leitura do txt local.

     

    Chama o webService e transmite dados ao webService

     

    Alguem poderia me passar um exemplo ou link de exemplo pratico de como poderia sêr feito isso?

    terça-feira, 24 de abril de 2007 05:06

Todas as Respostas

  • A sua pergunta é o inverso do exemplo que você deu. Você quer mandar a informação para o Ws ou o Ws acessar a aplicação Windows e ler a informação?

     

    A primeira opção é simples, você vai ler o arquivo em um stream, ler o stream em uma string e manda-la para o método do Ws. A segunda não dá pra fazer, por default. A aplicação teria que está aguardando solicitação, como um servidor.

     

    Ex.:

     

    'WS

     

    <webmethod> _

    Sub GetInformation(txt as string)

        'faça o que quiser com o txt

    End Sub

     

    'Client

    Dim ws as new SeuWebService

    Dim s as String

    Dim sr as new StreamReader(path)

     

    s = sr.ReadToEnd

     

    ws.GetInformation(s)

     

    Não esqueça de fazer a Web Reference ao seu Web Service na aplicação Client.

    terça-feira, 24 de abril de 2007 11:37
  • Leonardo Bruno boa td

     

    Baseado nas suas perguntas estou lhe passado algo prático como referencia a minha duvida

    A sua pergunta é o inverso do exemplo que você deu. Você quer mandar a informação para o Ws ou o Ws acessar a aplicação Windows e ler a informação?

     

    R.: o Ws acessar a aplicação Windows e ler a informação(dado) do app windows, repassando p/ outras paginas no servidor (no caso o Ws seria o intermediário entre os dois)

     

    A primeira opção é simples, você vai ler o arquivo em um stream, ler o stream em uma string e manda-la para o método do Ws. A segunda não dá pra fazer, por default. A aplicação teria que está aguardando solicitação, como um servidor.

     

    Ex.:

     

    'WS (esse tem que estar no servidor correto?)

     

    <webmethod> _

    Sub GetInformation(txt as string) 

        'faça o que quiser com o txt

        'Nesse caso o path do txt seria c:/windows/alguma coisa/arquivo.txt (para ler o dado)

        e repassaria para uma variavel que seria consumida em algumas paginas web

    End Sub

     

    'Client (essa parte do codigo eu coloco na app windows ou no ws?)

    Dim ws as new SeuWebService

    Dim s as String

    Dim sr as new StreamReader(path)

     'Nesse caso o path do txt seria c:/windows/alguma coisa/arquivo.txt (para ler o dado)

    s = sr.ReadToEnd

     

    ws.GetInformation(s)

     

    Não esqueça de fazer a Web Reference ao seu Web Service na aplicação Client.

     

    Como eu faria essa referencia teria como me passar um exemplo?

     

    e aproveitando os exemplos que vc me enviou estão em vb ou c#?

     

    Fico no aguardo?

    terça-feira, 24 de abril de 2007 16:56
  • 1) Então você ter que construir um server no client. Para isso você vai usar algo como WCF, Remoting (prefira o wcf mesmo), sockets, etc.

    2) Sim, o Web Service fica no servidor

    3) A parte 'Client fica na app windows

    4) Botão direito no projeto -> Add Web Reference

    5) VB.Net

     

    Exemplos de web services:

     

    http://msdn.microsoft.com/webservices/

    http://www.w3schools.com/ngws/ngws_webservices.asp

    http://www.devmedia.com.br/articles/viewcomp.asp?comp=5070

     

     

    terça-feira, 24 de abril de 2007 17:48
  • no caso o WCF seria algo como o artigo em video que vc explica no

     

    site

     

    http://www.linhadecodigo.com.br/videos_dotnet/Default.aspx

     

    Do qual sou assinante do portal de videos? Se tiver um outro video de lá alem desse que vc me recomendária para esse tipo de aplicação que irei fz fico no aguardo ou só esse bastaria?

     

     

    WCF - Como consumir um serviço
    Autor: Leonardo Bruno Bentes Lima
    Data publicação: 05/02/2007

    terça-feira, 24 de abril de 2007 18:49
  • Exato, é parecido com o que eu explico lá.

     

    Mas eu não acho que interessante a forma como você quer fazer isso, mas se é uma questão de requisito tudo bem, mas se puder ser de outra forma, faça. Fazer com  que um ws acesse um outro serviço é complicado, primeiro por que ele não vai fazer isso sozinho, alguém tem que invocar um metodo para que esse método acesse o server WCF que está no seu cliente, etc, etc.

    terça-feira, 24 de abril de 2007 19:04
  • mas no caso de eu querer só recuperar a informação

     

    no ws pela web eu posso usar  dessa forma

     

    <webmethod> _

    Sub GetInformation(txt as string) 

        'faça o que quiser com o txt

        'no caso eu poderia colocar aqui o codigo em c# ou vb p/  a leitura do arquivo.txt do caminho do

        desktop como segue 

     

     'Este código está em c#

       

      // Create an instance of StreamReader to reader text to a file.

      // The using statement also closes the StreamReader.

      using (StreamReader sr = new StreamReader("C:\\TestFile.txt"))

    {

    // Add some text to the file.

    linkinteiro = sr.ReadLine();

    protocolotexto = sr.ReadLine();

    dominiotexto = sr.ReadLine();

    caminhotexto = sr.ReadLine();

     

     

    End Sub

     

    onde depois eu repassaria que dado como variavel se eu estiver correto em minha lógica e funcionar para sêr consumido nas paginas web?

    terça-feira, 24 de abril de 2007 22:24
  • Se você está no servidor, como vai acessar o path da aplicação cliente? Não dá. Por isso que eu disse que não está bom esse desenho da aplicação, com base no que você nos passou.
    quarta-feira, 25 de abril de 2007 00:37
  • Criei um outro desenho para a aplicação acredito que desse jeito daria p/ fazer o que eu quero

    vamos vêr se vc concorda? ou me daria uma orientação á mais sobre

     

    1)Qdo o usuario for cadastrar p/ bx a aplicação na net ele teria que fornecer dois dados

         1.1) O email do titular da aplicação (ou dele proprio)

          1.2)O caminho fisico do servidor onde estaria hospedado o site do cliente

     

     esses dados ficariam gravados em  meu servidor ou seja (vamos chamar servidor da distribuição do produto)

     

    2) Na aplicação windows ele teria que apenas cadastrar o mesmo email p/ posterior comparação

         ao webservice requisitado (que estaria em meu servidor de distribuição) p/  á seguir se comparado e devidamente autorizado liberar esse dado á aplicação windows fazendo funcionar á

       aplicação

     

    Isso o webservice através daquele exemplo que vc me passou e do código que embuti ácima daria pra fazer?

     

       Em resumo

           1)O usuario ao se cadastrar p/ bx a aplicação forneceria os dados no servidor do produto

           2)na app windows ele cadastraria apenas o email 

           3) comparando-se o email cadastrado na app windows á requisição do dado do webservice do servidor do produto aí ele libera

     

    Esse desenho já seria funcional ou não?

     

    fico no aguardo

     

      

     

     

    quarta-feira, 25 de abril de 2007 01:48
  • Dá pra fazer sim, basta seguir a padrão de orientação a serviço.

     

    Client -> acessa -> Server

    Server -> responde -> Client

     

    Isso em uma sessão que após a resposta do server voltar, a mesma é perdida (stateless) ok? Aí você desenvolve sua ideia em cima disso.

    quarta-feira, 25 de abril de 2007 02:23
  • Naqueles videos de WebServices seu ou dos seus colegas do linha de codigo videos teria algum ex. pratico sobre isso que vc acabou de me orientar apesar que acabei de encontrar mais um novo problema não sei se está faltando importar algum namespace em minha app windows pq ele não escreve no path que está liberado p/ leitura e escrita no servidor (no caso o meu servidor)

     

     

    quarta-feira, 25 de abril de 2007 02:40
  • Sim, todos os exemplos utilizam o mesmo esquema. Exceto o exemplo sobre Singleton, mas só afeta o item: sessão, o esquema de sequencia de acesso e retorno é mesmo. Quanto ao path, veja se além da pasta, o compartilhamento está com permissões.
    quarta-feira, 25 de abril de 2007 13:00
  • Mas como vejo isso do lado do servidor?

     

    O meu provedor é a LOCAWEB , sendo que para as pastas internas ao website tenho como no provedor da LOCAWEB dar permissão de leitura e escrita, só não sei se estão compartilhadas e não sei como no caso eu compartilharia isso do lado do servidor, mesmo com o painel que eles dispoem para os usuarios dentro do seus planos profissionais e premium de hospedagem windows 2003

     

    só sei que tem uma pasta onde estão as minhas subpastas, no caso essa que está ainda em aspclassico e não como aplicação que liberei p/ leitura e escrita p/ arquivos .txt já que a hospedagem está em modo misto ou seja raiz e a maioiria das subpastas em aspclassico e algumas convertidas p/ aplicações 2.0, apesar que tb se eu quiser as libero p/ leitura e escrita, mas no caso de meu arquivo do ex. que lhe passei esta numa subpasta (liberada p/ leitura e escrita no modo aspclassico)

     

    independente disso fora da raiz do site eles possuem uma pasta propria p/ inserção de bd com permissão de leitura e escrita tb

     

    No caso junto a LOCAWEB o que eu teria que perguntar ou solicitar junto ao suporte desses referente á isso que vc me passou?

    quarta-feira, 25 de abril de 2007 13:52
  • Nesse caso, que você está acessando sub-pastas (e não compartilhamento) você já deveria ter permissão. Tem quer ver com eles.
    quarta-feira, 25 de abril de 2007 14:03
  • Já vi e realmente não tem jeito via navegador ou path fisico vindo de app windows não dá, só dá se for por metodo de upload ou ftp?

     

    Nesse caso vou fz o ex. do cadastro no navegador mesmo, passando os dados p/ webservice, lendo os dados do webservice no winapp e baseado nesses dados, regravar os mesmos em alguma pasta local (via programação) aí acredito que deva funcionar?

     

    Fico no aguardo, mas deve sêr isso a verdadeira lógica

    quarta-feira, 25 de abril de 2007 18:21