





Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Manipulando XML via VFP.
Tipologia: Notas de estudo
1 / 9
Esta página não é visível na pré-visualização
Não perca as partes importantes!






Nilton Paulino Segunda-feira, 05 de janeiro de 2004
Oi Pessoal!
Estamos de volta com mais uma edição dessa coluna! Espero que todos estejam gostando. Estivemos afastados neste final de ano por causa das comemorações mas estamos de volta! Foram muitas festas, confraternização entre os amigos e familiares.
Quero desejar a todos um ótimo 2004. Que seja um ano cheio de realizações em todas as áreas.
Festas à parte, vamos ao que realmente interessa... como prometi na coluna passada, estaremos mostrando como produzir XML Web Services a partir do Visual FoxPro.
Produzindo XML Web Services
Se você já trabalha com programação orientada a objetos (OOP) não terá dificuldades em assimilar os conceitos utilizados na criação de classes de componentes para Web Services. Se você já programou componentes para serem executados no COM+ ou MTS terá então tudo nas mãos.
Um XML Web Service é um componente de uma classe pública (OLEPUBLIC) do Visual FoxPro rodando sob o SOAP Server (para maiores detalhes consulte http:// msdn.microsoft.com/soap/) e naturalmente também poderá (e até recomenda-se que seja) ser adicionada ao COM+ para melhor gerenciamento das Threads do componente pelo sistema operacional.
A produção de um XML Web Service se dá em duas etapas: 1) a construção do componente COM; b) publicação do componente COM como XML Web Service.
Criando o Componente COM
Como a primeira etapa da criação do XML Web Service consiste em criar o componente, é isso que vamos fazer. O componente COM deverá ser compilado como uma MTDLL (Multi-threaded DLL). Logo mais adiante veremos como compilar o componente com esta opção.
Para início, vamos criar um novo projeto e chamá-lo de consulta_ws. A este novo projeto vamos adicionar um novo PRG e chamá-lo de main.prg (poderia ser qualquer outro nome). Veja como ficará o projeto na figura 1 logo a seguir.
Figura 1 - Janela do Projetct Manager
O conteúdo do nosso programa main.prg será o exibido na listagem a seguir. Logo abaixo da listagem, estaremos comentando os pontos importantes.
Listagem 1 - Código da Classe CPF, utilizada para consulta à situação cadastral de pessoa física do nosso exemplo.
O código acima é todo o código necessário para o funcionamento do nosso Web Service conforme visto na coluna anterior.
Para o funcionamento do código acima precisamos criar um banco de dados com duas tabelas, conforme figura a seguir.
Figura 2 - Estrutura de dados do projeto
O banco de dados deve se chamar db.dbc.
As tabelas são cliente e ocorrência e suas estruturas são exibidas a seguir.
Tabela: Cliente
Campo Tipo Tamanho
id_cliente Character 4
nome Character 40
cpf Character 14
Tabela: Ocorrencias
Campo Tipo Tamanho
id_ocorrencia Character 6
id_cliente Character 4
fornecedor Character 40
tipodoc Character (^10)
dataocorrencia Date 8
valor Numeric 7,
numdoc Character 10
Conforme pôde ser visto na figura 2, há também uma Stored Procedure no banco de dados. Para não nos prolongarmos muito quanto ao banco de dados e nos centrarmos nos procedimentos da produção e publicação do Web Service, o código do projeto estará disponível no final da coluna para download.
Detalhes da Classe COM
O código da Listagem 1 inicia-se com o comando
Pronto! DLL criada e fase de codificação da classe COM terminada. Como a DLL criada é um servidor COM, ela já está registrada na máquina do desenvolvedor com o ProdID Consulta_ws.cpf (o nome do ProgID é sempre formado pelo nome do projeto mais o nome da classe OLEPUBLIC principal do projeto) e já pode ser instanciada com este nome. Caso você deseje testar a funcionalidade da classe antes de publicá-la como XML Web Service faça como na figura 5 para instanciar o objeto.
Testando o Componente COM antes de publicá-lo
Figura 5 - Instanciando a classe gerada para testá-la
É sempre bom fazer o maior número de testes possíveis antes da publicação do Web Service, sendo assim, caso seja necessário recompilar a DLL não haverá problema algum. Quando você publica o Componente (DLL) como Web Service e faz qualquer alteração na estrutura da classe como por exemplo a inclusão, remoção ou alteração de um método ou de seus parâmetros, você precisa fazer uma nova publicação do componente. Não há nada de errado em publicá-lo novamente, mas você poupará um bocado de trabalho de fizer os testes antes de publicá-lo.
Publicando o Componente COM como WSDL
Após finalizados os testes e tudo estiver OK, então é hora de partirmos para a publicação do nosso componente COM como XML Web Service gerando então o WSDL que descreverá sua estrutura e tipo de dados.
A geração do WSDL pode ser realizada por no mínimo duas formas diferentes, no entanto, vamos fazê-la através do WSDL Generator que vem junto com o SOAP Toolkit
Nota: Se você ainda não possui o SOAP Toolkit 3 instalado, deverá fazê-lo antes de prosseguir. Você poderá baixá-lo a partir de http://msdn.microsoft.com/soap/.
Vamos então à publicação do nosso componente como Web Service nas seguintes etapas:
Procure o grupo de programas Microsoft SOAP Toolkit Version 3 e clique no icone do WSDL Generator. Aparecerá a janela exibida na figura 6:
Figura 6
Clique no botão Next e na etapa seguinte você também poderá clicar em Next, uma vez que você não publicou seu componente nenhuma vez e ainda não possui nenhum arquivo de configuração gravado. Caso contrário, poderia especificar o arquivo de configuração e os dados das etapas seguintes já estariam preenchidos automaticamente. Passadas essas etapas, virá a etapa que você deverá informar o nome do XML Web Service e qual o componente COM será utilizado conforme figura 7:
Figura 7
Nota: Em se tratando da máquina do cliente, não se esqueça de registrar o componente primeiramente com regsvr32 ou no COM+, caso contrário uma mensagem de erro será retornada informando que o componente não possui métodos.
Após preenchidas as informações, clique em Next. Na etapa seguinte você deve selecionar quais são os métodos do Web Service estarão disponíveis para acesso. Em nosso caso, todos estarão. Confira:
Figura 8
Clique em Next. A próxima etapa é muito importante e você deve tomar o cuidado de preencher corretamente o endereço do Listener URI. Caso este endereço fique errado o funcionamento remoto do Web Service estará comprometido. É importante também que uma pasta virtual seja criada no IIS (no meu caso criei uma chamada CPF, dentro do site http://foxweb.foxtotal.com.br/) apontando para o local onde os arquivos .wsdl/wsml serão criados. Essa pasta necessariamente não precisa ser a pasta onde o componente COM está, mas nada o impede que seja também.
Figura 9