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.
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 R2 e SQL 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.
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.
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.
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
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/
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.
-
-
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.
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.