TechNet Wiki

Pessoal a TechNet Wiki finalmente está em português com conteúdos muito bons postados e revisados pelos MVP.
Apenas Brasil, Rússia e China possuem esta plataforma na língua local, todo o resto é inglês.

Para visualizar artigos relacionados as áreas de desenvolvimento, virtualização, segurança, entre outras, acesse a wiki aqui
Fica a dica! :)

Compartilhe!

Visual Studio 11 e .NET Framework 4.5 Developer Preview

Com o lançamento do Windows 8 Developer Previewbuild_logo ontem no evento //Build/ Windows a Microsoft mostrou porque é a número um em sistemas operacionais.

Mas um sistema operacional não é nada sem aplicativos e, diga-se de passagem, o Windows 8 já tem sua plataforma de desenvolvimento bem amparada.

É que junto com o lançamento a Microsoft também disponibilizou uma versão Preview do Visual Studio 11 e do .NET Framework 4.5.

Ainda é cedo para tirar conclusões e se tratando de uma versão Preview (pré beta) existem possibilidades de mudanças. A documentação da MSDN ainda não está 100% consistente, alguns links fazem referência a novidades do atual Framework 4 e é fácil se perder no que é novo ou não.

Mesmo assim acho que vale a pena dar um conferida. Então seguem os links interessantes:

Enjoy

Compartilhe!

WebClient com Timeout

Algum tempo atrás iniciei um projeto que precisava fazer requisições HTTP para páginas Web e tratar seu resultado. Dentre as alternativas para isso resolvi escolher o WebClient por ser bem simples e resolver o problema que eu tinha em mãos de forma bem prática.

WebClient client = new WebClient(); string reply = client.DownloadString("[Url]"); Console.WriteLine(reply);

Este classe conta também com vários métodos para tratamento de forma assíncrona bem como suporte a comandos menos comuns como STOR (utilizado em FTP).

Mas nem tudo deu tão certo. Durante o desenvolvimento acabei verificando que o site em questão podia demorar bastante tempo para responder e que esse era um comportamento padrão do mesmo. Ou seja, eu teria que tratar isto de alguma forma, esperando mais tempo pelo resultado da requisição HTTP.

Nesse momento praticamente me vi forçado a utilizar classes mais complexas como as derivadas de WebRequest e WebResponse por causa da falta de suporte a definição do tempo de Timeout na classe WebClient.

Resolvi dar mais uma espiada na 50355_154915967879761_4814825_ndocumentação do MSDN e vi que poderia resolver isso de forma bem fácil graças a orientação a objetos.

Bastou herdar a classe WebClient e fazer um override do método protected GetWebRequest. Ali mesmo pude definir o meu timeout. Basicamente assim:

protected override WebRequest GetWebRequest(Uri address) { var request = base.GetWebRequest(address); request.Timeout = 60;//Timeout que quiser. return request; }

Claro que esta é apenas uma amostra do que pode ser feito, mas num caso real é apropriado colocar este valor em uma propriedade ou até mesmo definir no construtor da sua classe. Minha implementação completa pode ser encontrada neste link: WebClientExtended.

Enjoy

Compartilhe!

TempData em MVC

Quem aqui já teve o problema com ViewData para ter que passar informações de uma action para outra atravéz de um RedirectToAction?
Aposto que muitos.
Pois bem, fazendo uma pesquisas descobri o TempData que  como na própria documentação (MSDN) define, diz:

A typical use for a TempDataDictionary object is to pass data from an action method when it redirects to another action method. For example, an action method might store information about an error in the controller’s TempData property (which returns a TempDataDictionary object) before it calls the RedirectToAction method. The next action method can then handle the error and render a view that displays an error message.

Não preciso dizer mais nada e o uso é muito simples, igual ao ViewData.

// Setando a TempData em uma action
TempData["msg"] = "Mensagem...";

// Usando a TempData em outra action
if (TempData["msg"] != null)
{
    var teste = TempData["msg"].ToString();
}
Compartilhe!

Diretivas de pré-processamento em C#

Olá pessoal, este é meu primeiro post, então espero que gostem e que seja útil para alguém, pois pra mim foi. :)
Este post é baseado no post do blog .Net Concepts e teve a autorização do autor (Conecido meu) para republicá-lo.

Ok, vamos lá então….
Vou falar de diretivas de pré-processamento utilizando a linguagem CSharp que poucos programadores conhecem e ou utilizam.

Mas o que são diretivas de pré-processamento?

São instruções que como o próprio nome diz, ocorrem durante o pré-processamento, fazem avaliações #if, #elif, #else, #endif apresentam mensagens de erro #error, adicionam mensagens de alerta #warning, outras tem como objetivo simplesmente separar o código, #region e #endregion, há algumas outras diretivas mas as principais e mais utilizadas são estas.

As diretivas de pré-processamento são instruções que começam com “#” e devem ser postas como uma única instrução por linha.

Um identificador deve aparecer logo após o “#”, e este conjunto (“#” + identificador) é conhecido com o nome da diretiva, por exemplo, “#region” é o nome da diretiva.

Abaixo segue as diretivas de pré-processamento suportadas pelo C#.

  • #if
  • #else
  • #elif
  • #endif
  • #define
  • #undef
  • #warning
  • #error
  • #line
  • #region
  • #endregion

Não vou entrar em detalhes do que cada uma faz para não estender muito o post, o objetivo é entender o quando e o porque usar e neste caso vamos ver em que situações pode-se usar as diretivas:

Compilação condicional. Nesta situação você pode, por exemplo, incluir ou excluir parte de um programa de acordo com situações diversas. Muito usado quando em conjunto com as diretivas #define/#undef.
Controle de Linha. Se você usa um programa para combinar ou rearranjar arquivos fonte dentro de um arquivo intermediário, que será então compilado, você pode usar controle de linha para informar o compilador de onde cada linha veio originariamente.
Relatório de Erro (Error) e avisos (Warning): A diretiva “#error” faz com que o pré-processamento reporte um erro fatal, já a diretiva “#warning” faz como que seja gerado um “aviso”, porém o pré-processado não é encerrado.

Conclusão
As diretivas podem ajudar a eliminar e incluir código em seu arquivo fonte, reportar erros e avisos em tempo de compilação e também delimitar trechos de códigos, em fim, tudo para facilitar a nossa vida de programador.

Compartilhe!