Pesquisar este blog

segunda-feira, 27 de fevereiro de 2012

Armazenando configurações nos Gadgets / Side bar Gadgets Windows Vista/Windows 7


O que acho interessante nas tecnologias, é o como elas se cruzam e muitas vezes se completam. Os tão aclamados gadgets, foram uma das grandes novidades da Microsoft em aplicações, pois estes nada mais são do que páginas da web. Porém, em muitos sites na internet, como fórums e grupos de discussão, em diversas línguas, reside uma única dúvida.



Como armazenar as configurações parametrizadas pelo usuário em um Gadget, ou, side bar gadgets como descobri recentemente? 

Despois de árduas horas de pesquisa, encontrei em apenas um site uma solução definitiva. Portanto, o conteúdo deste post, nada mais é do que a multiplicação do conhecimento, pois, quanto mais conteúdo de um determinado assunto ou tecnologia fica disponível na internet, mais fácil a solução para determinados problemas será encontrada.
Nativamente, os Gadgets recorrem aos métodos  System.Gadget.Settings.read("parametroChave") e System.Gadget.Settings.readString("parametroChave") para ler valores de configurações relacionados à chave informada e os métodos System.Gadget.Settings.write("parametroChave", "valor") e System.Gadget.Settings.writeString("parametroChave", "valor").
E aí me veio a seguinte pergunta, e esta pode ser a sua neste momento. Qual a diferença entre writeString e write? A resposta é bem simples, ao chamar o writeString, o valor será armazenado no formato string. E qual a utilidade? Em caso de números com maior precisão, é recomendável armazená-los em String para evitar um arredondadmento, visto que usando write, deixamos a cargo do sistema, a interpretação do tipo de dados a ser gravado (o que em alguns casos, resulta em um truncamento ou perca de precisão). E feito a gravação, aonde encontro as informações gravadas?
As informação dos Gadgets em execução, geralmente podem ser encontradas no seguinte caminho:

C:\Users\Nome_de_Usuário\AppData\Local\Microsoft\Windows Sidebar

Nesta pasta, encontramos geralmente, um arquivo chamado Settings e uma pasta chamada Gadgets. No arquivo Settings.ini, ficam armazenadas todas as informações referentes as instâncias dos Gadgets em execução no Windows, como sua localização na tela entre outros. Ou seja, toda e qualquer alteração em um Gadget, resulta na atualização deste arquivo.

Partindo deste conhecimento, uma biblioteca JavaScript muito útil é o SettingsManager. Importando esta biblioteca, temos acesso aos seguintes métodos:

SettingsManager.loadFile() e SettingsManager.saveFile().

Segue abaixo um exemplo do uso desta biblioteca:

O método SettingsManager.loadFile(), carrega todas as configurações do arquivo Settings.ini localizado na pasta raíz do Gadget em memória.
Com o método SettingsManager.setValue("nome_grupo_config","chave", "valor"),  armazenamos em memória um valor associado a uma chave, pertencente a um grupo de configurações (o nome do grupo não faz muita diferença). É importante ressaltar que até o momento, nada foi escrito no arquivo
SettingsManager.getValue("nome_grupo_config","chave", valorPadrão), obtem da memória, um valor associado a uma chave, pertencente a um grupo de configurações, caso não seja possível obter este valor, será retornado o valor padrão.
O método SettingsManager.saveFile(), armazena todas as informações carregadas em memória em um arquivo Settings.ini (nome definido por padrão). Caso o arquivo não exista, ele é automaticamente criado.
E assim, independente de o computador ser reiniciado, desligado, ou o gadget fechado, todas as configurações permanecem salvas. Para maiores informações, segue o link original

Fonte: Settings Manager for Windows Vista Sidebar Gadgets

terça-feira, 21 de fevereiro de 2012

Criando, Hospedando e Consumindo um WCF Service

Neste tutorial, utilizei o Visual Studio 2010, IIS 7.0 e um navegador para vizualisar o conteúdo hospedado.


O projeto é um exemplo muito simples de uma calculadora, onde os métodos são expostos pelo serviço e consumidos por um client.

Iniciamos criando o projeto WCF que será o portador dos métodos do serviço a serem consumidos:

File>New Project>WCF>WCF Service Application

Neste projeto iremos editar  os arquivos Service1.svc.cs e o IService.cs (A interface (Service Contract), responsável por definir quais os métodos(Operation Contracts) a serem expostos pelo serviço.



Após editar os arquivos, é interessante compilarmos a solução para garantir que a mesma está funcionando corretamente.

Feito isso, clique com o botão direito no projeto WCF>Build Deployment Package. Com isto, o Visual Studio irá gerar um pacote na pasta obj>package pronto para ser publicado no IIS.


Agora, para que o serviço seja acessível, é necessário que ele rode em algum lugar. Neste post, usaremos o IIS para hospedar o serviço.


Com o IIS aberto, clique com o botão direito no site que hospedará a aplicação>Implantar>Importar Aplicativo. Em algumas versões dependendo do idioma, o termo implantar, pode aparecer como deploy.

Será exibida a seguinte janela onde apontaremos para nosso pacote gerado anteriormente na pasta obj>package.

Clique em avançar. Serão exibidos os conteúdo que o pacote contém e que serão implantados.


Em seguida, será exibida uma tela onde podemos personalizar o "alias", ou nome da aplicação no site.


Após definir um nome, clique em avançar e em seguida, concluir. Após isso, nossa aplicação teoricamente, deveria estar no ar. Para confirmar, basta abrir um navegador e digitar o endereço da máquina que hospedou a aplicação /(barra)nome da aplicação.


Se você obtiver um resultado igual a este, ou, parecido com este, sua aplicação está no ar.

Agora, criaremos uma aplicação do tipo Console, apenas para consumir o serviço e trazer o resultado.

Abrimos um novo projeto no Visual Studio: File>New>Project>Windows>Console Application

Para consumirmos um serviço, é necessário adicinar uma referência ao mesmo. Portanto, clicamos com o botão direito no projeto>Add Service Reference. Será exibida a seguinte janela:



Caso seu projeto WCF, Esteja na mesma solução do projeto Console, basta clicar no botão Discover e o serviço aparecerá na relação Services. Seguindo a idéia do post, inserimos o mesmo endereço utilizado no browser, apontando para o arquivo ".svc" e ao clicarmos em GO, será encontrado o serviço hospedado no IIS. Ainda na mesma janela, acessando a interface, vemos os métodos expostos pelo serviço. No campo inferior "Namespace" podemos definir o nome para identificação do serviço.
Após editarmos estas informações, basta clicar em OK.



Com isto já possuímos a referência de serviço em nosso projeto console para consumirmos o serviço própriamente dito.
Para consumirmos o serviço, basta instanciarmos um objeto client e a partir dele, efetuar a chamada dos métodos. Em meu teste, chamo a função Calculate passando dois valores decimais e a operação soma.
É uma boa prática, fecharmos a conexão com o serviço após as operações. Ao rodar o código acima, obtive o seguinte resultado:


Simples não? Nos vemos nos próximos posts! =)
Qualquer dúvida, crítica ou sugestão, sintam-se livres em comentar!

sexta-feira, 17 de fevereiro de 2012

Apresentação

Meu nome é Bruno, atuo na área de desenvolvimento em .NET com ênfase em C# e ASP.NET entre outros a quase um ano. No momento estou cursando a graduação em Desenvolvimento de Jogos Digitais na FATEC de Carapicuíba. Este blog tem a simples e única finalidade de contribuir na disseminação de conhecimentos das tecnologias de desenvolvimento Microsoft. Todos os comentários e sugestões são bem vindos.