Desenvolvimento - Web Services
Desenvolvendo Aplicações Chrome com integração via WebServices usando Apache AXIS ou Webservices .NET
Este é o terceiro da série de quatro artigos que são resultado de um trabalho de faculdade realizado no ano passado, nossa abordagem neste artigo será a criação de um cliente .NET escrito usando a linguagem Chrome que pode consumir webservices escritos em Apache Axis ou .NET.
por Rogério Pereira AraújoAqui estaremos abordando a codificação, o empacotamento e o instalação do cliente em .NET. Usaremos o webservice criado segundo artigo da série.
Prerequisitos:
-
Notepad
Instalando o RemObjects Chrome:
Execute o arquivo .exe que você baixou e instale em uma pasta de sua escolha.
Dentro do arquivo machine.config adicione a seguinte linha dentro da tag <compiler><compilers> </compilers></compiler>:
<compiler language="chrome" extension=".pas" warningLevel="1" compilerOptions="" type="RemObjects.Chrome.CodeDom.ChromeCodeProvider, RemObjects.Chrome.CodeModel, Version=1.5.0.213, Culture=neutral, PublicKeyToken=3df3cad1b7aa5098" />
Gerando as classes de conexão com o WebService:
Usando a ferramenta de linha de comando wsdl.exe digite:
wsdl.exe -language:"RemObjects.Chrome.CodeDom.ChromeCodeProvider, RemObjects.Chrome.CodeModel, Version=1.5.1.241, Culture=neutral, PublicKeyToken=3df3cad1b7aa5098" http://localhost:8080/doacao/services/DoarService?wsdl
Será gerado o arquivo DoacaoService.pas que será utilizado posteriormente para acessar o webservice em Apache AXIS ou .NET no servidor a partir da aplicação que vamos criar.
Desenvolvendo a aplicação Windows Forms:
Vamos agora criar a classe principal da aplicação escrita em Chrome, ela será herdada de Form, que é a classe responsável por criar janelas no .NET, vamos chamar esta classe de DoacaoPrincipal, veja o código abaixo:
namespace Doacao; interface uses System, System.Collections, System.Drawing, System.Globalization, System.IO, System.Windows.Forms; type DoacaoPrincipal = public class(Form) public constructor; class method Main; private btnDoar : Button; lblLogin : Label; lblSenha : Label; lblProduto : Label; lblQuantidade : Label; txtLogin : TextBox; txtSenha : TextBox; txtProduto : TextBox; txtQuantidade : TextBox; method btnDoar_Click(sender: System.Object; e: System.EventArgs); method InitializeComponent; end; implementation [STAThread] class method DoacaoPrincipal.Main; begin Application.Run(new DoacaoPrincipal()); end; constructor DoacaoPrincipal; begin InitializeComponent(); end; method DoacaoPrincipal.InitializeComponent; begin BackColor := Color.LightGray; Width := 300; Height := 200; Text := "doacao"; lblLogin := new Label(); lblLogin.Top := 10; lblLogin.BackColor := Color.LightGray; lblLogin.ForeColor := Color.Black; lblLogin.Left := 5; lblLogin.Text := "Login"; lblLogin.Height := 15; lblLogin.Width := 43; lblLogin.Font := new Font(FontFamily.GenericMonospace, 10); Controls.Add(lblLogin); txtLogin := new TextBox(); txtLogin.Top := 10; txtLogin.BorderStyle := BorderStyle.Fixed3D; txtLogin.ForeColor := Color.Black; txtLogin.BackColor := Color.White; txtLogin.Left := 85; txtLogin.Text := ""; txtLogin.Height := 5; txtLogin.Width := 125; txtLogin.Font := new Font(FontFamily.GenericMonospace, 11); Controls.Add(txtLogin); lblSenha := new Label(); lblSenha.Top := 40; lblSenha.BackColor := Color.LightGray; lblSenha.ForeColor := Color.Black; lblSenha.Left := 5; lblSenha.Text := "Senha"; lblSenha.Height := 15; lblSenha.Width := 43; lblSenha.Font := new Font(FontFamily.GenericMonospace, 10); Controls.Add(lblSenha); txtSenha := new TextBox(); txtSenha.Top := 40; txtSenha.BorderStyle := BorderStyle.Fixed3D; txtSenha.ForeColor := Color.Black; txtSenha.BackColor := Color.White; txtSenha.Left := 85; txtSenha.Text := ""; txtSenha.Height := 5; txtSenha.Font := new Font(FontFamily.GenericMonospace, 11); Controls.Add(txtSenha); lblProduto := new Label(); lblProduto.Top := 70; lblProduto.BackColor := Color.LightGray; lblProduto.ForeColor := Color.Black; lblProduto.Left := 5; lblProduto.Text := "Produto"; lblProduto.Height := 15; lblProduto.Width := 63; lblProduto.Font := new Font(FontFamily.GenericMonospace, 10); Controls.Add(lblProduto); txtProduto := new TextBox(); txtProduto.Top := 70; txtProduto.BorderStyle:= BorderStyle.Fixed3D; txtProduto.ForeColor := Color.Black; txtProduto.BackColor := Color.White; txtProduto.Left := 85; txtProduto.Text := ""; txtProduto.Height := 5; txtProduto.Width := 200; txtProduto.Font := new Font(FontFamily.GenericMonospace, 11); Controls.Add(txtProduto); lblQuantidade := new Label(); lblQuantidade.Top := 100; lblQuantidade.BackColor := Color.LightGray; lblQuantidade.ForeColor := Color.Black; lblQuantidade.Left := 5; lblQuantidade.Text := "Quantidade"; lblQuantidade.Height := 15; lblQuantidade.Width := 76; lblQuantidade.Font := new Font(FontFamily.GenericMonospace, 10); Controls.Add(lblQuantidade); txtQuantidade := new TextBox(); txtQuantidade.Top := 100; txtQuantidade.BorderStyle := BorderStyle.Fixed3D; txtQuantidade.ForeColor := Color.Black; txtQuantidade.BackColor := Color.White; txtQuantidade.Left := 85; txtQuantidade.Text := ""; txtQuantidade.Height := 5; txtQuantidade.Width := 50; txtQuantidade.Font := new Font(FontFamily.GenericMonospace, 11); Controls.Add(txtQuantidade); btnDoar := new Button(); btnDoar.Top := 170; btnDoar.Left := Width - (btnDoar.Width + 6); btnDoar.Text := "Doar"; btnDoar.ForeColor := Color.Black; btnDoar.Font := new Font(FontFamily.GenericMonospace, 10); btnDoar.Click += new EventHandler(@self.btnDoar_Click); Controls.Add(btnDoar); //Center the form self.StartPosition := FormStartPosition.CenterScreen; end; method DoacaoPrincipal.btnDoar_Click(sender: System.Object; e: System.EventArgs); var doacao: Doacao; begin doacao := new Doacao; doacao.login := txtLogin.Text; doacao.senha := txtSenha.Text; doacao.produto := txtProduto.Text; doacao.quantidade := Convert.ToInt32(txtQuantidade.Text); new DoarServiceService().doar(doacao); end; end.
Compilando a aplicação
Para compilar digite:
Chome.exe doacao.pas DoarServiceService.pas /ref:/usr/lib/mono/1.0/System.Windows.Forms.dll
/ref:/usr/lib/mono/1.0/System.Drawing.dll /ref:/usr/lib/mono/1.0/System.dll
/ref:/usr/lib/mono/1.0/System.Web.Services.dll /ref:/usr/lib/mono/1.0/System.Xml.dll
Distribuindo a aplicação
Para distribuir a aplicação basta pegar o arquivo doacao.exe e colocar na pasta desejada no seu desktop ou computador portátil com o .NET Compact Framework instalado, neste segundo caso você tem que compilar os fontes usando as assemblies próprias para Windows CE.
Conclusão
Com o Chrome você pode escrever aplicações .NET para rodar no desktop ou no seu dispositivo móvel que também podem acessar webservices .NET tornado-se em uma verdadeira opção para programação usando o Object Pascal.
- Verificando disponibilidade de um serviço WCF ou WebServiceC#
- Criando um WebService com ASP.NET Razor e WebMatrixWeb Services
- Construindo um List Suggest com ASP.NET Web Services e JQueryASP. NET
- Consumindo serviços REST com HttpClientWeb Services
- REST e o WSDLWeb Services