Evento de Tecnologia em Hortolândia

by Israel Aece 25. May 2010 21:36

No próximo dia 01 de junho (terça-feira) acontecerá um evento na UNASP Hortolândia (Centro Universitário Adventista de São Paulo), na cidade de Hortolândia. Para quem é de Campinas e região, este evento acontecerá na sede da universidade, localizada na Rua Pr. Hugo Gegembauer, 265, Parque Hortolândia, à partir das 19:45. Eu palestrarei sobre o Visual Studio 2010 e o .NET Framework 4.0. É importante dizer que a palestra será de nível 100, que além de abordar superficialmente algumas das principais funcionalidades desta nova versão, falaremos um pouco também sobre algumas tecnologias que já existem e estão à disposição desde as versões anteriores. Abaixo temos a descrição da palestra:

Título: Visual Studio 2010 e .NET Framework 4.0
Palestrante: Israel Aece
Descritivo: Esta palestra tem a finalidade de exibir um “tour” sobre a plataforma .NET, e a principal ferramenta que utilizamos para desenvolver aplicações para ela, que é o Visual Studio. A ideia é demonstrar rapidamente a história e a evolução do .NET Framework até a versão 4.0, incluindo assuntos como as linguagens de programação (C# e VB.NET), acesso à dados e aplicações para internet (WebForms, MVC e Silverlight). Logo após, vamos analisar de forma superficial as novidades que estão sendo incluídas na IDE do Visual Studio 2010 e que dão suporte ao desenvolvimento de qualquer tipo de aplicação sobre a plataforma .NET.

Tags: , , ,

C# | Data | General | WCF

Community Launch em Campinas

by Israel Aece 15. March 2010 22:38

No próximo dia 20 de março acontecerá um evento chamado de Community Launch. Esse evento será espalhado por todo o Brasil, onde cada região criará o evento e abordará os principais produtos da Microsoft que estarão sendo lançados neste ano de 2010, a saber: Visual Studio 2010, Windows Server 2008 R2SQL Server 2008 R2.

Para quem é de Campinas e região, este evento acontecerá na Universidade UNIP, localizada no bairro Swift, à partir das 09:00 da manhã. Caso você não saiba exatamente onde ela está localizada, consulte este endereço para saber como chegar até lá. Entre as várias palestras, eu sou o responsável por falar sobre Visual Studio 2010 e .NET Framework 4.0. É importante dizer que a palestra será de nível 100, que além de abordar superficialmente algumas das principais funcionalidades desta nova versão, falaremos um pouco também sobre algumas tecnologias que já existem e estão à disposição desde as versões anteriores. Abaixo temos a descrição da palestra:

Título: Visual Studio 2010 e .NET Framework 4.0
Palestrante: Israel Aece
Descritivo: Esta palestra tem a finalidade de exibir um “tour” sobre a plataforma .NET, e a principal ferramenta que utilizamos para desenvolver aplicações para ela, que é o Visual Studio. A ideia é demonstrar rapidamente a história e a evolução do .NET Framework até a versão 4.0, incluindo assuntos como as linguagens de programação (C# e VB.NET), acesso à dados e aplicações para internet (WebForms, MVC e Silverlight). Logo após, vamos analisar de forma superficial as novidades que estão sendo incluídas na IDE do Visual Studio 2010 e que dão suporte ao desenvolvimento de qualquer tipo de aplicação sobre a plataforma .NET.

IMPORTANTE: Apesar do evento ser gratuito, para poder participar é necessário efetuar o cadastro aqui.

Tags: , , ,

.NET Framework | C# | Data | General | VB.NET

Code Snippets para WCF

by Israel Aece 23. September 2008 10:55

Tenho escrito diversos hosts de serviços WCF para artigos que tenho escrito bem como para alguns testes que estamos fazendo na empresa onde trabalho. Como a idéia é apenas criar um projeto, na maioria das vezes, do tipo Console para servir de host, tenho que a todo momento instanciar a classe ServiceHost, especificar o tipo do serviço, o endereço, contrato, bindings, endpoints, description, etc.

Isso me levou a criar alguns code snippets (neste momento somente para C#) para automatizar essas tarefas mais comuns, evitando escrever o mesmo código toda vez que preciso criar um host. Neste momento tenho apenas nove snippets que estão me ajudando muito, poupando grande parte do trabalho que antes eu tinha para a criação um serviço/host dummy. Com isso, eu decidi compartilhar esses recursos. Abaixo estão listados cada um deles e suas respectivas utilidades e, entre paranteses, está o atalho que utilizamos dentro do Visual Studio:

  • asyncContract.snippet (asyncContract): estrutura para gerar um contrato assíncrono (BeginXXX/EndXXX).
  • basicServiceHost.snippet (bsh): estrutura do ServiceHost altamente customizável (endereço, bindings, etc.).
  • basicServiceImplementation.snippet (basicServiceImplementation): implementação padrão para uma classe que representa o serviço, podendo definir o contrato, gerenciamento de instancia e concorrencia.
  • callback.snippet (wcfCallback): estrutura para invocar um método de callback.
  • httpDuplexServiceHost.snippet (wsduplexsh): ServiceHost customizado para WSDuplexBinding.
  • httpServiceHost.snippet (httpsh): ServiceHost customizado para BasicHttpBinding.
  • tcpServiceHost.snippet (tcpsh): ServiceHost customizado para NetTcpBinding.
  • webServiceHost.snippet (websh): ServiceHost customizado para WebHttpBinding (Ajax).
  • wsServiceHost.snippet (wssh): ServiceHost customizado para WSHttpBinding.

Para utilizá-los, basta extrair e colocá-los no seguinte endereço: UsuarioCorrente\Documents\Visual Studio 2008\Code Snippets\Visual C#\My CodeSnippets\. Gostaria muito de utilizar os elementos Reference e Imports dentro dos arquivos de snippets para automatizar a referencia ao assembly System.ServiceMode.dll e adicinar a diretiva using para o namespace System.ServiceModel mas, infelizmente, isso é uma funcionalidade que está apenas disponível para snippets escritos para Visual Basic.

Tags: , ,

CSD | WCF

Chamadas assíncronas à Serviço via modelo de eventos

by Israel Aece 6. September 2008 11:06

O WCF fornece, não por padrão, a possibilidade de invocar as operações de um serviço de forma assíncrona. Quando efetuamos a referencia para um serviço via IDE do Visual Studio 2008 ou através do utilitário svcutil.exe (com a opção /async) automaticamente, além da versão síncrona do método, dois métodos chamados BeginXXX/EndXXX (onde XXX é o nome do método síncrono) são adicionados, permitindo que voce invoque assincronamente uma determinada operação.

Além do tradicional modelo de chamadas assíncronas (APM), temos a possibilidade da chamada assíncrona baseada em eventos. A idéia aqui é, antes de invocar a operação, voce poderá assinar à um evento que será disparado somente quando o processo assíncrono finalizar. Isso evitará de ter um trabalho manual para analisar se o processo finalizou ou não (poll, waiting, etc.). Internamente durante a geração do proxy, o código que é auto-gerado já inclui a implementação necessária para o modelo baseado em eventos.

Basicamente é criado mais uma versão do método, agora com o sufixo XXXAsync que, internamente, faz a chamada para os métodos BeginXXX/EndXXX que, como já sabemos, dispararam a operação de forma assíncrona. Além disso, um delegate do tipo EventHandler<T> também será criado para representar o callback que, quando disparado, invocará o evento do lado de quem está consumindo o serviço. Abaixo um exemplo de como efetuar a chamada assíncrona baseada em eventos:

using (ClienteClient p = new ClienteClient())
{
    p.CalcularComissaoCompleted += 
        new EventHandler<CalcularComissaoCompletedEventArgs>(p_CalcularComissaoCompleted);

    p.CalcularComissaoAsync("2");
    Console.ReadLine();
}

static void p_CalcularComissaoCompleted(object sender,
    CalcularComissaoCompletedEventArgs e)
{
    Console.WriteLine("Fim.");
}

Se notarmos a implementação interna do proxy, veremos que o método XXXAsync faz o uso do método InvokeAsync, da classe ClientBase<T>. Este método está disponível somente a partir do .NET Framework 3.5. Sendo assim, alguns detalhes durante a geração do proxy precisam ser analisados:

  • Via "Add Service Reference": se voce estiver fazendo a referencia em um projeto que esteja utilizando o .NET Framework 3.5 e voce opta pela geração dos métodos que dão suporte ao processamento assíncrono, ele também criará os tipos necessários para suportar o modelo de eventos.
  • Via svcutil.exe: neste caso voce precisará especificar através do parametro /async e, além disso, especificar a versão do .NET Framework através do parametro /targetClientVersion, apontando para Version30 ou, se quiser utilizar o modelo baseado em eventos, utilizar a opção Version35.

Tags: ,

Async | CSD | WCF

#error

by Israel Aece 5. September 2008 11:08

Em alguns momentos durante a escrita de um projeto para servir de exemplo para um artigo, eu gostaria de colocar uma diretiva no código para forçar o leitor a antes de executar o mesmo, configurar algo que seja necessário para que o projeto funcione como o esperado. Depois de algumas pesquisa no MSDN Library, a solução que encontrei foi a diretiva #error, que podemos aplicar ao código da seguinte forma:

#error Altere o valor da connectionstring apontando para uma base válida
private const string SQL_CONN_STRING = "Data Source=.;Initial Catalog=DBTest;Integrated Security=SSPI;";

Isso impedirá o usuário de compilar a aplicação sem antes alterar essa informação ou, ao menos, comentá-la. :P

Tags:

.NET Framework

WcfTestClient

by Israel Aece 28. August 2008 11:10

O utilitário WcfTestClient.exe que está integrado ao Visual Studio .NET não precisa ser necessariamente incializado a partir de um projeto do tipo WCF Service Library que, por sua vez, tem a finalidade de gerar uma DLL contendo o contrato e implementação do serviço e, o utilitário é utilizado para testá-los, sem a necessidade de criar um host, pois ele já faz isso.

É importante dizer que podemos iniciá-lo a partir do prompt de comando do Visual Studio, passando como parametro uma Url já existente para que possamos testá-lo, sem a necessidade de criar um projeto dummy para isso. Abaixo está o exemplo:

C:\>WcfTestClient http://IADevServer/ServicoDePublicacaoDeArquivos/

Tags: ,

CSD | WCF

Melhorias no WCF com SP1

by Israel Aece 14. August 2008 11:15

O Service Pack 1 do .NET Framework 3.5 e o Serviço Pack 1 do Visual Studio 2008 trouxeram algumas melhorias interessantes no WCF:

  • UriTemplate: agora podemos incluir um valor padrão para algum parametro que será invocado via REST. Algo como: [WebGet(UriTemplate = "RecuperarUsuarios/{quantidade=5}")].
  • Atributo DataContract/DataMember: a partir de agora não precisamos explicitamente definir quais são os objetos e propriedades que serão expostos para serviços quando estamos trabalhando com tipos complexos. Ele entende que tudo será exposto. Temos apenas que nos preocuparmos em marcar o que não queremos que seja serializado.
  • Partial Trust: possibilidade de fazer o uso do Event Log em ambiente parcialmente confiável.
  • Hosting Wizard: basicamente é a mesma funcionalidade do "Publish Web Site", mas para um serviço WCF.
  • WCF Options: quando tem um projeto do tipo Wcf Service Library na solução, nas propriedades deste projeto temos uma aba chamada WCF Options. Dentro da mesma, há uma opção chamada: Start WCF Service Host when debugging another project in the same solution. Ao marcá-la, ao rodar qualquer projeto em modo de depuração, o WCF Test Client irá iniciar para tornar o serviço disponível para que outras aplicações na mesma solução o utilizem.

Tags: , , ,

CSD | WCF

Depurando Host com Client

by Israel Aece 30. July 2008 12:17

Durante o desenvolvimento de serviços WCF ou qualquer outra coisa que envolva Host e Client, é comum utilizarmos o recurso de depuração de múltiplos projetos que o Visual Studio fornece. Assim, sempre quando um processo dá problemas (exceções), o outro continua rodando até que, explicitamente, voce o finalize.

Sara Ford dá aqui uma dica interessante para encerrar todos os processos, caso algum deles de problema durante a execução.

Tags: ,

CSD | WCF

Powered by BlogEngine.NET 1.5.0.0
Theme by Mads Kristensen

Sobre

Meu nome é Israel Aece e sou especialista em tecnologias de desenvolvimento Microsoft, atuando como desenvolvedor de aplicações para o mercado financeiro utilizando a plataforma .NET. [ Mais ]

Twitter

Indicações

Introdução ao ASP.NET Web API - e-Book