Archive for the ‘C#’ Category.

Visual Studio 2010 – Evento

Ola Pessoal,

No último dia 08 de março de 2010, tive o prazer de participar de mais um evento sobre tecnologia Microsoft. A F|Camara em parceira com a própria Microsoft, organizou o evento o qual tivemos foco e falamos muito sobre Gestão de Projetos e Qualidade com o Visual Studio 2010.

Sem dúvida um grande evento técnico e de grandes negócios. Parabéns a todos os participantes e organizadores, sem dúvida um grande evento.

Para que gosta vale a pena conferir algumas fotos abaixo.

Palestra Banner

Confira o album completo aqui.

Falhas no Intellisense do Visual Studio 2010

Pessoal

Em alguns computadores o intellisense do Visual Studio 2010 RC esta travando constantemente, isso foi detecado pela Microsoft a qual já providenciou um FIX para o problema.

Quem estiver com este problema acesse: http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=26662 , efetue o download do FIX e pronto!

Visual Studio 2010 RC

Ola Pessoal,

Gostaria de avisar aos interessados que a Microsoft lançou ontem (08/02/2010) a versão Release Candidate do Visual Studio 2010.

Para os assinantes MSDN, já podem iniciar os downloads… Já para os demais usuário teremos a liberação à partir do dia 10/02/2010.

Vamos efetuar o download e começar as discussões sobre as novidades da ferramenta.

Quem gostou acesse… Visual Studio 2010 RC http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx

Detalhe… antes de instalar a nova versão para que já tinha o Beta 2, é preciso removê-lo… então siga as instruções: http://support.microsoft.com/kb/312383/pt

Software Transactional Memory (STM.NET)

Ola pessoal

Em meus experimentos, encontrei um o STM.NET, ou Sofware Transactional Memory. Trata-se de um framework para desenvolvedores C# que efetua de maneira eficiente o isolamento de um determinado bloco de código em momentos de compartilhamento.

O recurso de memoria transacional, é umas das tecnologias com grandes considerações do mundo acadêmico, como um grande recurso para os novos modelos de aplicativos com multi-core de hardware.

Quem quiser conferir este projeto acesse: DevLabs (STM.NET)

Em breve mostrei alguns exemplos de utlização do framework.


Bookmark and Share

Treinamentos Microsoft

Ola pessoal

Sempre em busca do conhecimento… a Microsoft possui um site o Innovation Lab, trata-se de um site com diversos treinamentos on-line, sobre C#, Silverlght, Windows 7 entre outros!

Agora com novidades .. você pode rodar os treinamentos Off-line, tudo isso graças aos recursos do Silverlight 3.0… portanto que gosta de conhecimento vale a pena conferir! Acessem: Microsoft Innovation Lab.


Bookmark and Share

Super C#

Ola Pessoal,

Depois de alguns dias de trabalho, e claro estudos decidi criar uma comunidade exclusiva e com “super poderes” sobre C# e .NET.

A idéia é reunir os melhores e principais profissionais da tecnologia em um lugar aberto para que possamos discutir, debater, entender e estudar as melhores práticas.

Temos um logo e o melhor temos um “ícone”… agora só falta você.. Venha para o lado iluminado da força! Mostre seus super poderes, vamos fazer da comunidade Super C#, um verdadeiro super herói.!!

Site: www.supercsharp.com.br


Bookmark and Share

Visual Studio 2010 Beta 2

Ola Pessoal,

Hoje para quem tem assinatura da MSDN Subscribe, a partir do dia 21/10, a Microsoft disponibilizara o Visual Studio 2010 Beta 2.

Quem quiser ir vendo um pouco dele temos o vídeo do Brian Keller http://channel9.msdn.com/shows/10-4/10-4-Episode-33-Downloading-and-Installing-Visual-Studio-2010-Beta-2/ e também informações no link http://msdn.microsoft.com/pt-br/vstudio/dd582936(en-us).aspx

Estou baixando o meu agora! Aguardem mais novidades!


Bookmark and Share

Desenvolvimento de Aplicações para Windows 7

Bom Pessoal

Falta pouco, em breve teremos oficialmente o novo sistema operacional da Microsoft, o qual vem com recursos super inovadores e que promete movimentar o mundo de TI. Agora nós desenvolvedores, já estamos preparados para fazer com que nossas aplicações rodem no Windows 7? Melhor ainda, será que não seria possivel, fazer um interessão do novo sistema operacional com a minha aplicação? Usar seus poderosos recursos de maneira integrada aos nossos sistemas?

A resposta é sim o Windows 7 possui uma enorme biblioteca .NET para intereção com os recursos nativos do sistema operacional.

Nos próximos dias vamos dar uma mergulhada, no mundo do Windows 7 para desenvolvedores, vamos aprender a manipular seus recursos e tirar proveito dos seus recursos para uso de nossa aplicações. Aguardem!!!

Para quem já tem o Windows 7 RC instalado e não quer perder tempo, pode ir usando o Training Kit do Windows 7 for Developers. Material completo com exemplos de como trabalhar com as novas APIs do Windows 7 em nossa aplicação.

Até a próxima.


Bookmark and Share

DICA: Invertendo strings em .NET (C#)

Ola Pessoal

Diversas pessoas enviam-me alguns emails pedindo uma série de dicas de C#, portanto resolvi coloca-las todas aqui para quem precisar.

Para iniciarmos vou demostrar como podemos inverter um string por completo, dica que foi solicitada diversas vezes. Bom vamos ao que interessa.

Para demostrar vamos criar uma pequena aplicação Windows Forms como demostrado na figura abaixo:

clip_image001

Aplicação servira para invertermos a ordem do texto informado no primeiro TextBox denominado “Texto”. Para efetuarmos a inversão foi chamado uma função chamada “Inverter” através do click do botão. Descrevo o código utilizado logo abaixo:

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = Inverter(txtTexto.Text);
}

static public string Inverter(string Texto)
{
    //Cria a partir do texto original um array de char
    char[] ArrayChar = Texto.ToCharArray();
    //Com o array criado invertemos a ordem do mesmo
    Array.Reverse(ArrayChar);
    //Agora basta criarmos uma nova String, ja com o array invertido.
    return new string(ArrayChar);
}

Reparem que para inverter o texto usamos poucas linhas de codificação excutando os seguintes passos:

  1. Dividir o texto informado em um Array de Char
  2. Inverter o Array criado
  3. Criar um objeto String com o conteúdo do Array, ja criado e invertido.

O resultado deve ser: 

clip_image001[4]

 

Bom pessoal espero que esta dica ajude.

Se você também precisa de alguma dica, e esta com alguma dúvida, entre em contato. Vou esclarecendo elas por aqui.

Até a próxima.


Bookmark and Share

Autenticação ASP.NET Personalizada – Usando Rules

Ola Pessoal

Muita gente pergunta como criarmos um sistema de autenticação eficiente em ASP.NET, sem utilizar Profile e a estrutura de tabelas própria do ASP.NET. Pois bem vou mostrar aqui uma maneira bem simples de criar este sistema de forma personalizada utilizando também regras de acesso.

Bom para efetuar nossa exmplicação vamos partir de um exemplo real. Imaginando que criamos uma estrutura de tabelas em nosso banco capaz de armazenar as informações dos usuários, como dados básicos e perfis de acesso, esta estrutura pode ser modelada da maneira que preferir. Abaixo vou citar um exemplo:

image

Neste exemplo simples criamos uma tabela de usuários, uma tabela de perfil que irá armazenar as regras de acesso, e uma tabela UsuarioxPerfil que vamos relacionar as regras de acesso de cada usuário para o sistema.

Agora precisamos criar nossa código para autenticação. Primeiro criamos algumas procedures de consulta as informações, seguindo nosso exemplo criamos uma procedure exemplo para o retorno des dados do usuário:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        Adriano Bertucci
-- Create date: 02 de janeiro de 2009
-- Description:    Busca Informações para login no sistema
-- =============================================
ALTER PROCEDURE [dbo].[CPBB_Logar]
    @Login as varchar(20),
    @Senha as varchar(50)
AS
BEGIN
    SET NOCOUNT ON;

    --Retorna as Regras(Perfil) caso o usuário e senha sejam válidos
    SELECT P.PerfilId,P.Nome FROM Usuario U
    LEFT JOIN UsuarioxPerfil UP
    ON U.UsuarioId = UP.UsuarioId
    LEFT JOIN  Perfil P
    ON UP.PerfilId = P.PerfilId
    WHERE U.Login = @Login and U.Senha = @Senha

END

Acima temos o código de uma simples procedure que ira retornar as regras de acesso do usuário de acordo com a validação de usuário e senha.

Agora vamos ao código .NET, com nosso projeto ASP.NET criado usaremos os métodos de autenticação do próprio ASP.NET. Como primeiro passo criei um componente de login que o qual colocarei o código de autenticação conforme descrito abaixo:

protected void btnLogar_Click(object sender, ImageClickEventArgs e)
{
    //Busca os controles com o usuário e senha digitados pelo usuário
    string Login = ((TextBox)LoginView.FindControl("txtLogin")).Text;
    string Senha = ((TextBox)LoginView.FindControl("txtSenha")).Text;

    //Executa a função logar a qual dispara a procedure e retorna
    //o perfil de acesso
    string Perfil = CPBB.Servico.Usuario.Logar(Login, Senha);

    //Verifica o retorno do login
    if (!String.IsNullOrEmpty(Perfil))
    {
        #region " === Autenticação === "
        //Inicializamos o processo de autenticação
        FormsAuthentication.Initialize();

        //Criamos um ticket com os dados do usuário
        //reparem que passamos inclusive os perfis carregados
        //o ticket será a base da nossa autenticação
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, Login, DateTime.Now, 
        DateTime.Now.AddMinutes(Convert.ToInt32(ConfigurationManager.AppSettings["CookieTimeOut"])), 
        false, Perfil, FormsAuthentication.FormsCookiePath);

        //Criptografamos o ticket por questão se segurança
        string hash = FormsAuthentication.Encrypt(ticket);
        //Criamos um cookie(será usado para validação do asp.net)
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
        //Setamos a persistencia do cookie
        if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;

        //Em fim adicionamos o cookie a nossa aplicação.
        Response.Cookies.Add(cookie);
        //Retornamos para a página que foi solicitada
        string returnUrl = Request.QueryString["ReturnUrl"];
        if (returnUrl == null) returnUrl = "/";
        Response.Redirect(returnUrl);
        #endregion
    }
    else
    {
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Login", "alert('" + 
                                         Resources.MensagensAlertas.LoginInvalido + "');", true);
    }
}

Apenas como demonstração segue abaixo a função de login a qual é utilizada para a consulta ao banco de dados em nosso exemplo representada por CPBB.Servico.Usuario.Logar(Login, Senha);

public static string Logar(string Login, string Senha)
{
    string Perfil = string.Empty;
    //Consultamos o banco de dados para validar o usuário
    SubSonic.StoredProcedure SP = CPBB.DAL.SPs.CpbbLogar(Login, FormsAuthentication.HashPasswordForStoringInConfigFile(Senha,"sha1"));

    System.Data.DataSet ds = SP.GetDataSet();

    CPBB.DAL.PerfilCollection cperfil = new CPBB.DAL.PerfilCollection();
    cperfil.Load(ds.Tables[0]);

    //Carregamos o(s) perfil(s)
    foreach (CPBB.DAL.Perfil perfil in cperfil)
    {
        Perfil += perfil.Nome + ",";
    }

    cperfil = null;
    SP = null;
    ds.Dispose();
    return Perfil;
}

Bom pessoal, feito isso agora temos que configurar nosso Global.asax, ele será o responsável por carregar os perfis do usuário para que o ASP.NET o reconheça. Vamos ao código:

protected void Application_AuthenticateRequest(Object sender,EventArgs e)
{
    //Verificamos a existencia de um usuário na aplicação
    if (HttpContext.Current.User != null)
    {
        //Se o usuário esta autenticado( passou pelo login inicial )
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {
            //Usando as classes de Identidade do ASP.NET vamos pegar as regras
            // e carregar para a aplicação
            if (HttpContext.Current.User.Identity is FormsIdentity)
            {
                FormsIdentity id =(FormsIdentity)HttpContext.Current.User.Identity;
                FormsAuthenticationTicket ticket = id.Ticket;

                string userData = ticket.UserData;
                string[] roles = userData.Split(',');
                HttpContext.Current.User = new GenericPrincipal(id, roles);
            }
        }
    }
}

Repare que utilizamos o método Application_AuthenticateRequest do Global.asax, ele é usado sempre que um usuário se autentica na aplicação.

Feito isso agora basta usar as configurações no web.Config para setar o acesso as páginas, como por exemplo:

<location path="admin">
  <system.web>
    <authorization>
      <allow roles="Administrador"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>

Bom pessoal tentei demonstrar de maneira rápida de fazer uma autenticação via asp.net usando roles, caso tenha alguma dúvida é só avisar!

Bom divertimento!


Bookmark and Share