terça-feira, 29 de setembro de 2009

Criando Setup para Crystal Reports utilizando Merge Modules

Quando utilizamos os recursos do Crystal Reports no Visual Studio para desenhar nossos relatórios, precisamos ter a consciência de que haverá a necessidade da instalação dos componentes do Crystal no servidor onde a aplicação irá funcionar.

Nesta postagem eu explicarei como criar um Setup para Crystal utilizando Merge Modules.

Um Merge Module é um tipo especial de banco de dados Windows Installer que contém os componentes necessários para instalar um pacote de software pontual. Um Merge Module não pode ser instalado sozinho, mas deve ser fundido em uma instalação padrão do Windows Installer durante a criação da instalação. Normalmente, um Merge Module ou um conjunto de módulos de intercalação relacionados por dependências, instala um software ou parte de um produto durante a execução. O objetivo dos Merge Modules é permitir que você o adicione independente de módulos de software para múltiplas instalações.

Por exemplo, se há uma série de aplicações que requerem um componente especificamente configurada, seria possível criar um Merge Module que instala e configura o componente. Esse módulo de mesclagem poderia então ser adicionado aos pacotes de instalação de cada produto que exigia que determinado componente. Isso poupa o esforço de ter de adicionar individualmente os arquivos necessários, entradas do Registro, e outros componentes para cada instalação. Ele também poupa tempo se as atualizações são necessárias, pois em vez de atualizar as instalações para as cinco aplicações, apenas o Merge Module é atualizado, e o Setup só precisará ser recompilado.

Alguns Merge Modules podem ser configuráveis para mesclar módulos. Esses módulos de intercalação contém determinados valores que podem ser definidas para especificar como o módulo se comporta em sua instalação. Por exemplo, o autor do Merge Module pode permitir os atributos para serem definidos em componentes, habilitar ou desabilitar componentes isolados, especificar um bitmap para um diálogo, ou especificar como uma ação personalizada é executada. Os Merge Modules são suportados apenas pelo Windows Installer 2.0 ou superior.

Existem uma série de Merge Modules pré-criados para instalar pacotes de software Microsoft, como o MDAC, controles ActiveX MFC, SAPI, DCOM e o Crystal Reports que mostrarei agora.

Primeiro passo é baixar o Merge Module do Crystal Reports. Precisa ser verificada a versão do FrameWork que está sendo utilizada e fazer o download.

O Link a lista de Merge Modules disponíveis para Crystal Reports é:
http://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=56787567

No caso deste exemplo, eu estou utilizando o seguinte:
CR 10.2 (VS .NET 2005)
CRRedist2005_x86.msm
WIN XP, WIN 2000, WIN 2003, WIN 7


Após baixar o Merge Modules, vamos montar o Projeto de Setup para Distribuição

1) Inicie o Visual Studio.
2) No Menu File, Selecione New Project.
3) Na Caixa de Diálogo “New Project”, Selecione Projeto Windows Setup ou Projeto Web Setup.



4) No “Solution Explorer”, selecione seu projeto, clique com o botão direito, e selecione Add Merge Module no Menu:
 



5) Adicione CrystalReportsRedist2005_x86.msm ao seu projeto:




Observe que Microsoft_VC80_ATL_x86.msm e policy_8_0_Microsoft_VC80_ATL_x86.msm serão incluídos automaticamente quanto você adicionar CrystalReportsRedist2005_x86.msm ao seu projeto:



6) Faça o Build do seu projeto.
7) Execute o Setup no servidor que hospedará as aplicações.

Como acabamos de ver, é muito simples a preparação do Setup para o Crystal, basta aplicar as dicas acima e testar a aplicação no servidor.

Até a próxima.

domingo, 27 de setembro de 2009

Configurando SQL Server para utilizar funções de Login do ASP.NET

Uma funcionalidade muito bacana do ASP.NET é o conjunto de controles de Login disponibilizados na caixa de ferramentas abaixo:



Utilizando este conjunto de controles é possível fazer login, exibir status do usuário, nome do usuário, criar usuário, mudar a senha, etc.



No ambiente de testes é possível fazer a configuração utilizando a ferramenta de configuração do ASP.NET (Menu Project -> ASP.NET Configuration).

Entretanto, para distribuir a aplicação é necessário alguns procedimentos para criação da base de dados e configuração da aplicação.

Primeiramente, o .Net Framework tem o seguinte comando para criação dos elementos da base de dados que deve ser executado no prompt de comando:

aspnet_regsql

Após execução do comando, abrirá um Wizard passo-a-passo conforme abaixo:






Este procedimento configura o conjunto de tabelas necessárias para armazenamento das informações de serviços de um aplicativo ASP.NET(associação, perfis, gerenciamento de funções, personalização e provendor de eventos da WEB do SQL). Esta configuração é válida apenas para SQL Server, uma vez que são criadas um conjunto de tabelas e procedures para prover toda a funcionalidade citada anteriormente.


Com esta configuração o banco de dados fica pronto para utilizar recursos muito valiosos do ASP.NET como Login, Gerenciamento de Usuários e Senhas, Roles, etc.
 
Abaixo um exemplo das tabelas e procedures que são criadas:
 





Com a base de dados configurada, basta configurar a aplicação para apontar para ela. Abaixo as modificações necessárias no arquivo Web.Config.


  



  
    
    
  
    


Com este recurso não é necessária a preocupação com controle de acessos, usuários, senhas, etc. O ASP.NET integra tudo no padrão muito fácil de ser utilizado pela aplicação.

Até a próxima.

quinta-feira, 24 de setembro de 2009

Coolite Toolkit, fazendo uma Web mais rica

Um dos maiores desafios da maioria dos programadores com certeza é a questão do designer da página. Como é difícil deixar a página com uma aparência agradável, sempre focamos mais para a funcionalidade e deixamos a outra parte para os Web Designers. Mas o que fazer quando não temos esse outro elemento na equipe?


Uma empresa chamada Coolite fez uma série de componentes para Visual Studio que são bastante interessantes tanto na aparência quanto na funcionalidade sendo 100% Ajax. Estes componentes deixam os Web Sites mais parecidos com o ambiente Desktop trazendo uma aparência e funcionalidade mais rica.

O Coolite instala todos os recursos disponíveis na barra de ferramentas:





Abaixo, alguns exemplos dos recursos disponíveis do Coolite:












São muitos recursos mesmo, vale a pena conferir. O link é http://examples.coolite.com/


O único problema do Coolite é que por ser uma ferramenta tão completa ela é paga, e não é barato.
O Site do Coolite é http://www.coolite.com/

Enfim, o CoolLite é mais uma ferramenta para nos ajudar no desenvolvimento de Web Sites com uma aparência mais rica e dependendo do projeto vale a pena pagar.

Gostaria de agradecer meu amigo Marcilio Rodrigues que me apresentou esta ferramenta.

quarta-feira, 23 de setembro de 2009

Controle para Gráficos em Asp.Net

Recentemente a Microsoft lançou um controle de Gráficos muito interessante para ser utilizado no Framework 3.5.

A partir de um simples controle com uma codificação muito fácil de implementar é possível criar gráficos que além de eficientes tem uma qualidade visual muito grande.







using System.Web.UI.DataVisualization.Charting;
...
private void Page_Load(object sender, System.EventArgs e)
{
    // Create new data series and set it's visual attributes
    Series series = new Series("Spline");
    series.ChartType = SeriesChartType.Spline;
    series.BorderWidth = 3;
    series.ShadowOffset = 2;

    // Populate new series with data
    series.Points.AddY(67);
    series.Points.AddY(57);
    series.Points.AddY(83);
    series.Points.AddY(23);
    series.Points.AddY(70);
    series.Points.AddY(60);
    series.Points.AddY(90);
    series.Points.AddY(20);

    // Add series into the chart's series collection
    Chart1.Series.Add(series);
}

Alguns exemplos dos tipos de gráfico que é possível gerar:




















E tem muito mais tipos de gráficos disponíveis, vale a pena conferir. O produto é muito bom e é oficial da Microsoft totalmente gratuito.


Isto deve prover uma útil adição para a sua caixa de ferramentas de funcionalidades da ASP.NET, permitindo que você facilmente adicione cenários de visualização e fluxo de dados mais elaborados em suas aplicações ASP.NET.


Para quem ficou interessado e quer instalar, seguem abaixo os links:


Nota: Sempre que for distribuir uma aplicação que utiliza os gráficos no ambiente de produção, deve ser instalado o Controle de Gráfico Microsoft neste servidor.

Aproveito para agradecer meu amigo Rodrigo Silva Souza que me sugeriu este Post.

terça-feira, 22 de setembro de 2009

Como enviar e-mails com C# de maneira síncrona e assíncrona

O e-mail é o mais popular mecanismo de comunicação onde aplicações modernas devem estar preparadas para poder trabalhar com este tipo de recurso.
O .Net Framework possui um conjunto de bibliotecas que facilitam muito nosso trabalho quando precisamos enviar mensagens desde as mais simples até as mais elaboradas contendo arquivos, relatórios, etc.

Agora vou mostrar como é fácil montar uma aplicação de envio de e-mails utilizando as bibliotecas System.NetSystem.Net.Mail.
 
O processo de criar e enviar um e-mail é o seguinte:
1. O primeiro passo é criar um objeto MailMessage que é o responsável por todos os atributos da mensagem que será enviada, como remetente, destinatário, cópias, anexos, assuntos, corpo, etc.
2. Para cada remetente, destinatário ou cópias podem ser criados objetos MailAddress ou simplesmente atribuir ao objeto MailMessage uma string contendo o e-mail diretamente.
3. Caso seja necessário anexar algum arquivo, este deverá ser atribuído ao objeto MailMessage através do método Attachments.Add.
4. Logo Após, criar o objeto SmtpClient que será responsável pela comunicação com o Servidor SMTP.
5. Se o servidor SMTP do remetente requer autenticação, deve-se criar as credenciais de acesso.
6. E por fim, basta passar o objeto MailMessage ao método Send do objeto SmtpClient.
 
Agora, vamos ver isso na prática

Criar o objeto MailMessage
MailMessage _mensagem = new MailMessage();

Atribuir o Remetente
_mensagem.From = new MailAddress("seuemail@dominio.com", "Nome Remetente");

Atribuir os destinatários
_mensagem.To.Add(new MailAddress("emaildestinatario@dominio.com"));

Pode atribuir também cópia e cópia oculta
_mensagem.CC.Add(new MailAddress("emaildestinatario@dominio.com"));
_mensagem.Bcc.Add(new MailAddress("emaildestinatario@dominio.com"));

Atribuir o assunto ao e-mail
_mensagem.Subject = "E-mail de Teste";

Definir se o corpo da mensagem será HTML. O padrão é falso.
_mensagem.IsBodyHtml = true;

Definir o corpo da mensagem
_mensagem.Body = "E-mail Teste";

Se houver anexos, pode atribuir também
_mensagem.Attachments.Add(new Attachment(@"C:\Boot.ini"));

Criar o objeto SmtpClient e atribuir as credenciais do remetente
SmtpClient _cliente = new SmtpClient("smtp.gmail.com");
_cliente.Credentials = new NetworkCredential("sua conta", "sua senha");

Habilitar criptografia HTTP utilizando SSL (Verificar se é requerido pelo provedor)
_cliente.EnableSsl = true;

E finalmente envia a mensagem
_cliente.Send(_mensagem);


O envio do e-mail é um processo que leva alguns segundos e dependendo do tamanho do anexo esse tempo aumenta. Dependendo da aplicação este tempo de espera pode comprometer o resultado. Para estes casos, a classe SmtpClient disponibiliza um método assíncrono para envio do e-mail.

Para esta implementação, a primeira coisa que deve ser feita é um tratamento para o evento SmtpClient.SendCompleted. Para poder responder a este evento basta implementar o método estabelecido no delegate. Este método só será chamado ao final do envio, liberando todos os recursos da aplicação enquanto executa a tarefa.

_cliente.SendCompleted += new SendCompletedEventHandler(sc_SendCompleted);
void sc_SendCompleted(object sender, AsyncCompletedEventArgs e)
{
    if (e.Cancelled)
        Console.WriteLine("Mensagem cancelada");
    else if (e.Error != null)
        Console.WriteLine("Erro: " + e.Error.ToString());
    else
        Console.WriteLine("Mensagem enviada");
}

Agora basta finalizar o envio
_cliente.SendAsync(_mensagem, null);

Basicamente a diferença entre o envio síncrono e assíncrono é que no síncrono durante a execução da tarefa o sistema prende os recursos até que termine o envio, no assíncrono ele faz a solicitação, libera os recursos para continuar trabalhando e quando a tarefa terminar o sistema ativa o evento SendCompleted dando a opção de notificação para o usuário.
É realmente muito fácil trabalhar com envio de e-mails no .Net.

Abaixo o Link para Download do Exemplo utilizado para facilitar a compreensão.

Download do Exemplo

segunda-feira, 21 de setembro de 2009

A Importância da Certificação

Na área de informática há muitos profissionais com excelentes conhecimentos trabalhando com desenvolvimento de aplicações, infra, banco de dados, etc. Diferentemente de outras profissões como Advogado, Médico ou Engenheiro, na área de informática não há nenhuma entidade dedicada à fiscalização do exercício de nossa profissão. Isso é muito bom no primeiro momento quando ingressamos no mercado de trabalho, pois temos essa oportunidade de grande aprendizado e exercício da função antes mesmo de terminar o ensino superior. Realmente este tipo de regulamentação é algo tanto complicado dada a quantidade de cursos capacitadores que sempre estão surgindo. Vários profissionais já atuam no mercado de trabalho, destes uma grande parte atuam como consultores. Todos estes fatores aliados à enorme demanda de profissionais altamente dinâmicos que estejam constantemente atualizados com a tecnologia tornam esse mercado muito competitivo.

Nós desenvolvedores devemos nos conscientizar de um diferencial bastante interessante além da faculdade e pós-graduação que é a certificação. Para obter um destaque entre tantos profissionais, é muito importante que aproveitemos os conhecimentos e experiências adquiridos realizando exames que nos certificam através de uma entidade que reconhece toda a capacidade e especialidade na utilização de determinada ferramenta ou plataforma. No caso de desenvolvedores .Net, a Microsoft disponibiliza um conjunto de certificações organizadas em carreiras que é muito interessante e vale a pena correr atrás.

Quem quiser saber mais consulte o link:
http://www.microsoft.com/brasil/certifique/

Para o profissional que trabalha com desenvolvimento C#, a primeira certificação e base para todas as outras é a 70-536(.NET FRAMEWORK 2.0 APPLICATION DEVELOPEMENT FOUNDATION).

Esta prova aborda os aspectos gerais do .NET Framework 2.0 separados nos seguintes assuntos:
Framework Fundamentals
Input/Output (I/O)
Searching, Modifying, and Encoding Text
Collections and Generics
Serialization
Graphics
Threading
Application Domains and Services
Installing and Configuring Applications
Instrumentation
Application Security
User and Data Security
Interoperation
Reflection
Mail
Globalization

Esta prova é um pouco puxada dada a quantidade de assuntos, mas com uma boa experiência e uma boa dedicação nos estudos dá pra passar. É composta de 45 questões, o percentual que cai de cada assunto também pode ser obtido no link acima.

Quem estiver interessado, entre em contato comigo que eu tenho um material bacana para estudos.