<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>André Nobre</title><link>http://weblogs.asp.net/andrenobre/default.aspx</link><description>ASP.NET MVC, Architecture, Debugging, Commerce Server, WinDBG...</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Gerando arquivos PDF com .NET e iTextSharp</title><link>http://weblogs.asp.net/andrenobre/archive/2010/01/19/gerando-arquivos-pdf-com-net-e-itextsharp.aspx</link><pubDate>Tue, 19 Jan 2010 19:01:16 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7316194</guid><dc:creator>anobre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7316194</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7316194</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2010/01/19/gerando-arquivos-pdf-com-net-e-itextsharp.aspx#comments</comments><description>&lt;p&gt;Olá pessoal!&lt;/p&gt;  &lt;p&gt;Todos já tiveram alguma necessidade com PDF, seja para ler ou gerar arquivos através de aplicações C#.    &lt;br /&gt;Neste post vou demonstrar como gerar arquivos PDFs utilizando o famoso iTextSharp, além de uma exceção com a qual você pode se deparar. Não vou entrar muito em detalhes visto que a partir do código é possível obter uma idéia completa do que podemos fazer.&lt;/p&gt;  &lt;p&gt;A primeira coisa que você deve fazer é baixar o assembly &lt;a href="http://sourceforge.net/projects/itextsharp/" target="_blank"&gt;neste&lt;/a&gt; endereço e referenciá-lo no seu projeto. Alguns conceitos básicos são muito importantes para a geração de PDF:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. PdfWriter&lt;/strong&gt;    &lt;br /&gt;Todas as ações para gerar um PDF serão realizadas através de um objeto da classe PdfWriter.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. Open()&lt;/strong&gt;    &lt;br /&gt;Você deve abrir o documento para começar a editar.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;3.&lt;/em&gt; &lt;em&gt;writer.&lt;/em&gt;Add()&lt;/strong&gt;    &lt;br /&gt;E deve adicionar elementos através do método Add do objeto &lt;em&gt;PdfWriter.&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;Abaixo um exemplo direto em código para testes:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;var retangulo = &lt;span class="kwrd"&gt;new&lt;/span&gt; Rectangle(765, 765);&lt;br /&gt;var documento = &lt;span class="kwrd"&gt;new&lt;/span&gt; Document(retangulo);
&lt;span class="kwrd"&gt;string&lt;/span&gt; nomeDoArquivo = Guid.NewGuid().ToString();

var writer = PdfWriter.GetInstance(documento, &lt;span class="kwrd"&gt;new&lt;/span&gt; FileStream(“&lt;span class="str"&gt;&lt;/span&gt;…”, FileMode.Create));

documento.Open();

var rodape = &lt;span class="kwrd"&gt;new&lt;/span&gt; Rectangle(765, 85);
rodape.BackgroundColor = &lt;span class="kwrd"&gt;new&lt;/span&gt; BaseColor(242, 242, 242);

documento.Add(rodape);
            
var imagemDoTopo = Image.GetInstance(“&lt;span class="str"&gt;&lt;/span&gt;…”);
imagemDoTopo.SetAbsolutePosition(0, 653);
documento.Add(imagem);

&lt;span class="rem"&gt;&lt;/span&gt;// Leitura de uma imagem por Stream – Não tem ligação direta com o PDF
&lt;span class="kwrd"&gt;try&lt;/span&gt;
{
   FileStream imagemAmbiente = System.IO.File.Create(“&lt;span class="str"&gt;&lt;/span&gt;…”);

   &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buffer = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[8192];
   &lt;span class="kwrd"&gt;int&lt;/span&gt; read;
   
   &lt;span class="kwrd"&gt;while&lt;/span&gt; ((read = stream.Read(buffer, 0, buffer.Length)) &amp;gt; 0)
   {
      imagemAmbiente.Write(buffer, 0, read);
   }

   imagemAmbiente.Close();
   stream.Close();&lt;br /&gt;}
&lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)
{   &lt;br /&gt;   logger.Inserir(ex.Message, Nbr.Framework.Log.ValueObjects.TipoLog.Erro);   &lt;br /&gt;   &lt;span class="kwrd"&gt;throw&lt;/span&gt;;
}

var imagemSimulador = Image.GetInstance(“&lt;span class="str"&gt;&lt;/span&gt;…”);
imagemSimulador.SetAbsolutePosition(0, 130);
documento.Add(imagemSimulador);

var produto = &lt;span class="kwrd"&gt;new&lt;/span&gt; ProdutosRepository().ObterProdutoPeloGuid(codigoProduto);

PdfContentByte cb = writer.DirectContent;
BaseFont nomeProduto = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;);

cb.BeginText();
cb.SetFontAndSize(nomeProduto, 14);
cb.SetColorFill(&lt;span class="kwrd"&gt;new&lt;/span&gt; BaseColor(238, 42, 115));
cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, produto.Nome, 50, 50, 0);
cb.EndText();

BaseFont descricaoProduto = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;);

cb.BeginText();
cb.SetFontAndSize(descricaoProduto, 12);
cb.SetColorFill(&lt;span class="kwrd"&gt;new&lt;/span&gt; BaseColor(51, 51, 51));
cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, produto.Descricao, 50, 35, 0);
cb.EndText();            

documento.Close();&lt;/pre&gt;

&lt;h3&gt;Exceção possível&lt;/h3&gt;

&lt;p&gt;Em alguns casos você pode se deparar com a exceção “That assembly does not allow partially trusted callers”. Neste caso, basta baixar o código fonte do itextsharp no endereço já informado e recompilar o assembly com a instrução abaixo no AssemblyInfo.cs:&lt;/p&gt;

&lt;p&gt;[assembly: AllowPartiallyTrustedCallers]&lt;/p&gt;

&lt;p&gt;Abraços!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7316194" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Curso de WinDBG</title><link>http://weblogs.asp.net/andrenobre/archive/2009/12/23/curso-de-windbg.aspx</link><pubDate>Wed, 23 Dec 2009 13:37:55 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7289146</guid><dc:creator>anobre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7289146</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7289146</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/12/23/curso-de-windbg.aspx#comments</comments><description>&lt;p&gt;Olá pessoal!&lt;/p&gt;  &lt;p&gt;Boa notícia: vou ministrar um curso de WinDBG em Janeiro, na cidade de São Paulo. Aos interessados entrem em contato e aproveitem, realmente vale a pena!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.nbrtecnologia.com.br/downloads/windbg.pdf" target="_blank"&gt;Clique aqui&lt;/a&gt; para ler o conteúdo do curso.&lt;/p&gt;  &lt;p&gt;Abraços!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7289146" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/WinDBG/default.aspx">WinDBG</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Treinamentos/default.aspx">Treinamentos</category></item><item><title>Prêmio APP – Melhor Hot-Site Promocional de 2009</title><link>http://weblogs.asp.net/andrenobre/archive/2009/11/05/pr-234-mio-app-melhor-hot-site-promocional-de-2009.aspx</link><pubDate>Fri, 06 Nov 2009 02:48:02 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7248111</guid><dc:creator>anobre</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7248111</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7248111</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/11/05/pr-234-mio-app-melhor-hot-site-promocional-de-2009.aspx#comments</comments><description>&lt;p&gt;Boa notícia!    &lt;br /&gt;Recebemos ontem o prêmio de melhor hot-site promocional, em evento realizado pela APP (Associação dos Profissionais de Propaganda). Para nós é uma imensa vitória, um projeto realmente inovador e desafiador pelo prazo e pelas idéias que tivemos.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.itamaraty.com/buscaaotesouro" target="_blank"&gt;Veja aqui o hot-site premiado.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Muito obrigado a todos que torceram!&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/OgAAAPf_qwZiylgqTX8BJp0YqPNTHtqHAW15OXtph0nN5rXE8W6oaxfKpKloaBOVBaIw5hF6UHIrqvcGAGcxriUveZEAm1T1UEJv_77175D30.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="OgAAAPf_qwZiylgqTX8BJp0YqPNTHtqHAW15OXtph0nN5rXE8W6oaxfKpKloaBOVBaIw5hF6UHIrqvcGAGcxriUveZEAm1T1UEJvj6dZ0vFwRR8QXT1jcmacL6cu" border="0" alt="OgAAAPf_qwZiylgqTX8BJp0YqPNTHtqHAW15OXtph0nN5rXE8W6oaxfKpKloaBOVBaIw5hF6UHIrqvcGAGcxriUveZEAm1T1UEJvj6dZ0vFwRR8QXT1jcmacL6cu" src="http://weblogs.asp.net/blogs/andrenobre/OgAAAPf_qwZiylgqTX8BJp0YqPNTHtqHAW15OXtph0nN5rXE8W6oaxfKpKloaBOVBaIw5hF6UHIrqvcGAGcxriUveZEAm1T1UEJv_011BD88F.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h6 align="center"&gt;&lt;em&gt;André Nobre e Renan Couto, as mentes por trás do projeto :)&lt;/em&gt;&lt;/h6&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/OgAAAFBqbfrA6SL79ovaabNrZMnlkOMnePE3x7yhRTUc8NEl9207FxY6Qne_IsI1RQW_5tWwNq2ZMNMYJAV8tbwBIAm1T1UArzWq_3F34F340.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="OgAAAFBqbfrA6SL79ovaabNrZMn-lkOMnePE3x7yhRTUc-8NEl9207FxY6Qne_IsI1RQW_5tWwNq2ZMNMYJAV8tbwBIAm1T1UArzWquwd9ln-jPJCmP6KRqbm2tZ" border="0" alt="OgAAAFBqbfrA6SL79ovaabNrZMn-lkOMnePE3x7yhRTUc-8NEl9207FxY6Qne_IsI1RQW_5tWwNq2ZMNMYJAV8tbwBIAm1T1UArzWquwd9ln-jPJCmP6KRqbm2tZ" src="http://weblogs.asp.net/blogs/andrenobre/OgAAAFBqbfrA6SL79ovaabNrZMnlkOMnePE3x7yhRTUc8NEl9207FxY6Qne_IsI1RQW_5tWwNq2ZMNMYJAV8tbwBIAm1T1UArzWq_3AFAF5AE.jpg" width="244" height="184" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Abraços!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7248111" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Marketing/default.aspx">Marketing</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/APP/default.aspx">APP</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Pr_EA00_mios/default.aspx">Prêmios</category></item><item><title>Microsoft Commerce Server 2009: Commerce Foundation</title><link>http://weblogs.asp.net/andrenobre/archive/2009/10/30/microsoft-commerce-server-2009-commerce-foundation.aspx</link><pubDate>Fri, 30 Oct 2009 16:52:21 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7243363</guid><dc:creator>anobre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7243363</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7243363</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/10/30/microsoft-commerce-server-2009-commerce-foundation.aspx#comments</comments><description>&lt;p&gt;Para entendermos completamente o que é o novo &lt;em&gt;Commerce Foundation&lt;/em&gt;, precisamos relembrar alguns conceitos.&lt;/p&gt;  &lt;p align="left"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/Dd452026_DetailedArchitectureenusMSDN_10_41253C07.gif"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" title="Dd452026_DetailedArchitecture(en-us,MSDN_10)" border="0" alt="Dd452026_DetailedArchitecture(en-us,MSDN_10)" align="right" src="http://weblogs.asp.net/blogs/andrenobre/Dd452026_DetailedArchitectureenusMSDN_10_thumb_45BB46C1.gif" width="118" height="240" /&gt;&lt;/a&gt; Como podemos observar na figura, a estrutura base do Commerce envolve o que chamamos de Commerce Server Core Systems, que pode ser subdivido em 5 sistemas:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="left"&gt;Orders System&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Marketing System&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Catalog System&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Inventory System&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Profiles System&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p align="left"&gt;Conforme explicado no post anterior, cada sistema representa uma parte importante no processo do comércio eletrônico, e em conjunto fornecem toda a estrutura necessário que criemos, através do Commerce Server, uma aplicação completa.&lt;/p&gt;  &lt;p align="left"&gt;A versão 2009 apresentou um novo conceito chamado &lt;em&gt;Commerce Foundation&lt;/em&gt;, que podemos definir basicamente como:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="left"&gt;&lt;strong&gt;Novo modelo de programação unificado&lt;/strong&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Exemplos de desenvolvimento&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Documentação&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="left"&gt;No cenário técnico, o Commerce Foundation é uma coleção de novas operações que podem ser realizadas nos &lt;em&gt;Core Systems&lt;/em&gt;, como segue:&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;p align="left"&gt;&lt;strong&gt;Catalog System&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="left"&gt;Recuperação de informações do site, catálogo, categorias, produtos, variantes e estoque;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Full-text search;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Integração com Sharepoint;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="left"&gt;&lt;strong&gt;Marketing System&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="left"&gt;Recuperação de conteúdo direcionado;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Recuperação dos descontos aplicados ao carrinho ou ao pedido;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Recuperação de descontos simples aplicados a produtos ou categorias;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Registros de eventos de campanhas;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Integração com Virtual Earth;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="left"&gt;&lt;strong&gt;Orders System&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;Existem algumas diferenças entre a versão 2009 e versão 2007 do &lt;em&gt;Orders System&lt;/em&gt;. Neste novo modelo, algumas alterações foram efetuadas em relação ao basket e principalmente nas formas de pagamento. Veremos os detalhes nos próximos posts da série.&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;Profiles System&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;Através deste sistema é possível administrar as informações dos usuários, através de Site Terms e Profiles, assuntos próximos da série de posts sobre Commerce.&lt;/p&gt;  &lt;h3&gt;Novo modelo de entidades&lt;/h3&gt;  &lt;p align="left"&gt;A versão 2009 do Commerce apresentou um novo modelo de entidades para representar a visão conceitual do produto através de todos os &lt;em&gt;Core Systems&lt;/em&gt;. A base para todo este novo modelo de entidade é a classe &lt;em&gt;CommerceEntity&lt;/em&gt;. &lt;/p&gt;  &lt;p align="left"&gt;Todas as operações realizadas no Commerce podem ser resumidas como operações de &lt;em&gt;request-response&lt;/em&gt;. Resumidamente, podemos enviar dados para a requisição e receber respostas de execução.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;var query = &lt;span class="kwrd"&gt;new&lt;/span&gt; CommerceQuery&amp;lt;CommerceEntity&amp;gt;(&lt;span class="str"&gt;&amp;quot;UserProfile&amp;quot;&lt;/span&gt;);
query.SearchCriteria.Model.Properties[&lt;span class="str"&gt;&amp;quot;Email&amp;quot;&lt;/span&gt;] = &lt;span class="str"&gt;&amp;quot;useremail@yourcompany.com&amp;quot;&lt;/span&gt;;
CommerceResponse response = OperationService.ProcessRequest(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetCurrentRequestContext(), query.ToRequest());&lt;/pre&gt;

&lt;p align="left"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/Dd451270_2a3ad16c16474e319326a73836cd14d0enusMSDN_10_4BE56442.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Dd451270_2a3ad16c-1647-4e31-9326-a73836cd14d0(en-us,MSDN_10)" border="0" alt="Dd451270_2a3ad16c-1647-4e31-9326-a73836cd14d0(en-us,MSDN_10)" src="http://weblogs.asp.net/blogs/andrenobre/Dd451270_2a3ad16c16474e319326a73836cd14d0enusMSDN_10_thumb_0926190A.gif" width="244" height="134" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;A figura acima representa a entidade base &lt;em&gt;CommerceEntity,&lt;/em&gt; apresentando a coleção Properties. Esta coleção representa um conjunto &lt;em&gt;nome/valor&lt;/em&gt; para as propriedades da entidade.&lt;/p&gt;

&lt;h5&gt;OperationService&lt;/h5&gt;

&lt;p&gt;O serviço de operações exemplificao acima tem o papel de receber uma requisição do Commerce e retornar uma &lt;em&gt;CommerceResponse&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/Dd464322_e6ba4fc51741492fa72dd9a6d494d738enusMSDN_10_4334E5E9.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Dd464322_e6ba4fc5-1741-492f-a72d-d9a6d494d738(en-us,MSDN_10)" border="0" alt="Dd464322_e6ba4fc5-1741-492f-a72d-d9a6d494d738(en-us,MSDN_10)" src="http://weblogs.asp.net/blogs/andrenobre/Dd464322_e6ba4fc51741492fa72dd9a6d494d738enusMSDN_10_thumb_5A7FEA5A.gif" width="244" height="76" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;CommerceRequest e CommerceResponse&lt;/h5&gt;

&lt;p&gt;O objetivo do &lt;em&gt;CommerceRequest&lt;/em&gt; é simplesmente identificar uma ou mais operações a serem realizadas, sendo que o CommerceResponse é a resposta para estas operações:&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/Dd464322_912e62ae2c4a4cd795832bd7c8f2f193enusMSDN_10_392044BE.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Dd464322_912e62ae-2c4a-4cd7-9583-2bd7c8f2f193(en-us,MSDN_10)" border="0" alt="Dd464322_912e62ae-2c4a-4cd7-9583-2bd7c8f2f193(en-us,MSDN_10)" src="http://weblogs.asp.net/blogs/andrenobre/Dd464322_912e62ae2c4a4cd795832bd7c8f2f193enusMSDN_10_thumb_40E83760.gif" width="244" height="95" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/Dd464322_9228885bafc84169ab3ef7ee4aa3f27benusMSDN_10_1F8891C4.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Dd464322_9228885b-afc8-4169-ab3e-f7ee4aa3f27b(en-us,MSDN_10)" border="0" alt="Dd464322_9228885b-afc8-4169-ab3e-f7ee4aa3f27b(en-us,MSDN_10)" src="http://weblogs.asp.net/blogs/andrenobre/Dd464322_9228885bafc84169ab3ef7ee4aa3f27benusMSDN_10_thumb_2BAA0BEB.gif" width="244" height="77" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;Pontos Positivos desta Abordagem&lt;/h3&gt;

&lt;p&gt;O que vem para agradar e muito é o novo modelo totalmente extensível, fornecendo entidades fortemente tipadas definidas de acordo com cada projeto, através da interface &lt;em&gt;ICommerceEntity&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/Dd451701_6f2a7784724b40869297b7f3c197c6e0enusMSDN_10_1169A2C7.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Dd451701_6f2a7784-724b-4086-9297-b7f3c197c6e0(en-us,MSDN_10)" border="0" alt="Dd451701_6f2a7784-724b-4086-9297-b7f3c197c6e0(en-us,MSDN_10)" src="http://weblogs.asp.net/blogs/andrenobre/Dd451701_6f2a7784724b40869297b7f3c197c6e0enusMSDN_10_thumb_41B0777D.gif" width="244" height="148" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;Veremos nos próximos posts a aplicação prática destes conceitos. Aguardem!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7243363" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Commerce+Server/default.aspx">Commerce Server</category></item><item><title>Microsoft Commerce Server 2009: Visão do Desenvolvedor</title><link>http://weblogs.asp.net/andrenobre/archive/2009/10/29/microsoft-commerce-server-2009-vis-227-o-do-desenvolvedor.aspx</link><pubDate>Thu, 29 Oct 2009 16:11:32 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7242569</guid><dc:creator>anobre</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7242569</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7242569</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/10/29/microsoft-commerce-server-2009-vis-227-o-do-desenvolvedor.aspx#comments</comments><description>&lt;p&gt;Para você que está chegando diretamente neste post, esta é uma série dedicada ao Commerce Server e detalhes da versão 2009 do produto. Outros posts já foram publicados:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://weblogs.asp.net/andrenobre/archive/2009/10/23/microsoft-commerce-server-o-que-233.aspx"&gt;Microsoft Commerce Server: O que é?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/andrenobre/archive/2009/10/26/microsoft-commerce-server-como-saber-que-233-uma-boa-decis-227-o.aspx"&gt;Microsoft Commerce Server: Como saber que é uma boa decisão?&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Nesta publicação vou falar um pouco sobre a estrutura que o desenvolvedor encontrará no Commerce Server 2009.&lt;/p&gt;  &lt;h3&gt;O que preciso saber antes de desenvolver para o Commerce?&lt;/h3&gt;  &lt;p&gt;Antes de iniciar a prazerosa tarefa de desenvolver para o Commerce, temos que conhecer as frentes disponíveis.&lt;/p&gt;  &lt;p&gt;Dentro do produto podemos agir através da criação da aplicação e de sua base, pipelines, integração com sistemas de pagamento, ou personalizando e extendendo a parte de pedidos. Se quisermos deixar ainda mais completa esta tarefa, podemos incluir a integração com Biztalk, que falaremos futuramente.&lt;/p&gt;  &lt;p&gt;Inicialmente vamos entender a visão da aplicação direta e de seus fundamentos, para então partir para outras frentes de desenvolvimento.&lt;/p&gt;  &lt;h4&gt;Estrutura Básica do Commerce&lt;/h4&gt;  &lt;p&gt;Pensando de uma forma extremamente simples, o nosso objetivo aqui é conseguir criar uma aplicação que disponibilize um catálogo de produtos e realize a venda para os consumidores. Analisando desta maneira, podemos identificar três módulos que estão presentes no Commerce: Catalog System, Orders System e Profile System. Como o próprio nome diz, são módulos responsáveis pelo catálogo de produtos, os pedidos realizados ou não, e todos os clientes (cadastrados ou anônimos) que interagem com a aplicação.   &lt;br /&gt;Além disso, o Commerce conta com um módulo específico de Marketing, criando oportunidades para promoções ou conteúdos direcionados.&lt;/p&gt;  &lt;p&gt;Em uma visão mais abstrata, podemos definir toda a estrutura do Commerce da seguinte maneira:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/Dd452198_High_level_CS2009_ArchitectureenusMSDN_10_7BC08775.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Dd452198_High_level_CS2009_Architecture(en-us,MSDN_10)" border="0" alt="Dd452198_High_level_CS2009_Architecture(en-us,MSDN_10)" src="http://weblogs.asp.net/blogs/andrenobre/Dd452198_High_level_CS2009_ArchitectureenusMSDN_10_thumb_1D5CB047.gif" width="650" height="540" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; onde nosso foco neste momento são os Commerce Server 2009 Core Systems.&lt;/p&gt;  &lt;p align="left"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/Dd452198_High_level_CS2009_ArchitectureenusMSDN_10_088AB7C7.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Dd452198_High_level_CS2009_Architecture(en-us,MSDN_10)" border="0" alt="Dd452198_High_level_CS2009_Architecture(en-us,MSDN_10)" src="http://weblogs.asp.net/blogs/andrenobre/Dd452198_High_level_CS2009_ArchitectureenusMSDN_10_thumb_4E2F41E5.gif" width="146" height="87" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;CS Core Systems: Arquitetura&lt;/h4&gt;  &lt;p&gt;A figura abaixo resume a arquitetura do que chamados de Core Systems do Commerce Server:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/Dd452026_DetailedArchitectureenusMSDN_10_261C92C6.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Dd452026_DetailedArchitecture(en-us,MSDN_10)" border="0" alt="Dd452026_DetailedArchitecture(en-us,MSDN_10)" src="http://weblogs.asp.net/blogs/andrenobre/Dd452026_DetailedArchitectureenusMSDN_10_thumb_0378544B.gif" width="133" height="244" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://weblogs.asp.net/blogs/andrenobre/Dd452026_DetailedArchitectureenusMSDN_10_41253C07.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Dd452026_DetailedArchitecture(en-us,MSDN_10)" border="0" alt="Dd452026_DetailedArchitecture(en-us,MSDN_10)" src="http://weblogs.asp.net/blogs/andrenobre/Dd452026_DetailedArchitectureenusMSDN_10_thumb_45BB46C1.gif" width="234" height="474" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Nosso foco aqui é para a visão do desenvolvedor, portanto vamos entender a parte em destaque acima.&lt;/p&gt;  &lt;p&gt;Primeiro conceito que podemos concluir é que o Commerce é baseado em 5 e não 4 sistemas como dito anteriormente, a seguir:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Orders: &lt;/strong&gt;responsável por tudo que é relativo a pedidos, concretizados corretamente ou não.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Marketing:&lt;/strong&gt; módulo específico para criação de campanhas, como descontos, leve 2 pague 1, etc.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Catalog: &lt;/strong&gt;responsável por todas as informações dos produtos e suas variantes.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Inventory: &lt;/strong&gt;responsável pelo estoque.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Profiles:&lt;/strong&gt; responsável pelas informações dos usuários.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;O &lt;em&gt;Inventory System&lt;/em&gt; é responsável por todo o estoque, seu estado atual e histórico, e em conjunto com o &lt;em&gt;Catalog System&lt;/em&gt; completa todas as nossas necessidades para o e-commerce. &lt;/p&gt;  &lt;p&gt;Com estes 5 sistemas definidos, podemos utilizar o &lt;em&gt;Commerce Server .NET API&lt;/em&gt; para, através da nossa aplicação ASP.NET, tornar nossa aplicação “utilizável”. &lt;/p&gt;  &lt;h6&gt;Observem que é possível utilizar o Biztalk Server para integrações com LoB, como ERP e CRM, com adaptadores nativos para o Commerce. Mas isto é um assunto dedicado ao final da série de posts :)&lt;/h6&gt;  &lt;p&gt;Uma primeira observação &lt;strong&gt;importante&lt;/strong&gt; aqui é que ao desenvolver para o Commerce devemos esquecer daquele velho companheiro chamado Banco de Dados (pelo menos inicialmente). Na nossa aplicação o Commerce é o responsável pelo acesso aos dados. O nosso trabalho como desenvolvedor é manipular apenas os objetos, deixando os detalhes da persistência para o Commerce Server Manager.&lt;/p&gt;  &lt;p&gt;--&lt;/p&gt;  &lt;p&gt;No próximo post vamos analisar como é desenvolver para o Commerce na prática ;)&lt;/p&gt;  &lt;p&gt;Até lá!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7242569" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Commerce+Server/default.aspx">Commerce Server</category></item><item><title>Microsoft Commerce Server: Como saber que é uma boa decisão?</title><link>http://weblogs.asp.net/andrenobre/archive/2009/10/26/microsoft-commerce-server-como-saber-que-233-uma-boa-decis-227-o.aspx</link><pubDate>Mon, 26 Oct 2009 11:48:34 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7239583</guid><dc:creator>anobre</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7239583</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7239583</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/10/26/microsoft-commerce-server-como-saber-que-233-uma-boa-decis-227-o.aspx#comments</comments><description>&lt;p&gt;Uma das grandes dificuldades do Commerce é conseguir avaliar em quais situações este produto é uma boa decisão para utilização. Este post irá apresentar algumas diretrizes para verificar se adotar o Commerce Server irá trazer benefícios ou não, e a qual custo.&lt;/p&gt;  &lt;h3&gt;A Primeira Impressão&lt;/h3&gt;  &lt;p&gt;Se você iniciou uma pesquisa para saber se o Commerce Server é bom ou não, com certeza você passou pelo site &lt;a href="http://www.microsoft.com/commerceserver"&gt;http://www.microsoft.com/commerceserver&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/image_3430120B.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/andrenobre/image_thumb_2D00AFC6.png" width="244" height="148" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ao acessar a página, você logo clicou no lado direito, onde diz “Product Overview: Learn how Commerce Server 2009..”. Estou certo?&lt;/p&gt;  &lt;p&gt;A primeira impressão que o produto passa pela sua descrição&amp;#160; é que é uma loja pronta que exige pouca implementação. É aí que mora o perigo: não se engane, a vida não é assim tão fácil.&lt;/p&gt;  &lt;p&gt;O Commerce Server nos fornece a base de desenvolvimento para projetos de comércio eletrônico. Isso não quer dizer, de maneira nenhuma, que é so pegar o projeto padrão e colocar no ar, criar os produtos e sair vendendo. São raros os casos em que isso é possível.&lt;/p&gt;  &lt;h4&gt;Frases e comentários do Overview do produto&lt;/h4&gt;  &lt;h5&gt;&lt;em&gt;“it comes with a new, production-ready, out-of-the-box, contemporary Web site that allows businesses to get their stores live and merchandise moving more quickly”&lt;/em&gt;&lt;/h5&gt;  &lt;p&gt;Não leve isto em consideração ao decidir utilizar o produto. Os casos destas frases são aqueles raros em que seu comércio eletrônico não precisa ser integrado com nada, não exige regras de negócio específicas e não expõem uma série de serviços. Normalmente você precisará customizar o projeto, ou então criar um novo para que adapte aos padrões de desenvolvimento da empresa.&lt;/p&gt;  &lt;p&gt;Outro ponto importante sobre o Commerce é sua instalação, que exige inúmeros detalhes e leva uma certo tempo para finalizá-la.&lt;/p&gt;  &lt;p&gt;É importante ressaltar que se o seu comércio eletrônico é simples e não exigirá customizações, o site padrão servirá corretamente, sem dificuldades alguma. Porém, isto é muito raro de acontecer.&lt;/p&gt;  &lt;h5&gt;&lt;em&gt;“Commerce Server 2009 enables fast and easy information-editing and smooth content management with workflow approvals with Microsoft SharePoint Commerce Services”&lt;/em&gt;&lt;/h5&gt;  &lt;p&gt;A versão 2009 do produto conseguiu unir o poder do Sharepoint com a base do Commerce Server. Se você conhece Sharepoint sabe que este é um ponto que traz inúmeros benefícios e facilidades.&lt;/p&gt;  &lt;h5&gt;&lt;em&gt;“Using the new Default Site and skinning features of Commerce Server 2009 helps you get your site up and running promptly, so you can start selling right away”&lt;/em&gt;&lt;/h5&gt;  &lt;p&gt;Caimos novamente naquele primeiro caso.&lt;/p&gt;  &lt;h5&gt;&lt;em&gt;“Reduced Costs in Site Development and Deployment”&lt;/em&gt;&lt;/h5&gt;  &lt;p&gt;Sim, esta frase é correta. Apesar de não conseguirmos utilizar o template padrão (95% dos casos) para colocar um projeto no ar, o Commerce reduz e muito os custos de desenvolvimento e publicação, além de fornecer a segurança de um produto Server da Microsoft.&lt;/p&gt;  &lt;p&gt;Ao fornecer um imenso framework para catálogo de produtos, marketing, clientes e pedidos, o Commerce Server permite que a empresa foque nos detalhes essenciais do projeto, como regras de negócios, integrações e segurança. Não precisamos nos preocupar em criar a base de comércios eletrônicos visto que isto já está preparado (e muito bem preparado).&lt;/p&gt;  &lt;p&gt;Sobre a publicação, o Commerce Server permite que realizemos esta tarefa através de recursos simples e direto. Criar um pacote para levar até o servidor, ou então replicar este pacote pelo seu Web Farm é muito simples.&lt;/p&gt;  &lt;h3&gt;Equipe Especializada na Ferramenta&lt;/h3&gt;  &lt;p&gt;Outro ponto importante ao adotar a ferramente é saber se o mercado fornece os profissionais técnicos especializados.&lt;/p&gt;  &lt;p&gt;Como os projetos no Brasil ainda são poucos (em relação ao total de projetos grandes de e-commerce), existem poucos profissionais disponíveis para os projetos, o que podemos concluir:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Os que existem são caros;&lt;/li&gt;    &lt;li&gt;Os projetos existentes absorvem os profissionais do mercado;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Tomando a decisão…&lt;/h3&gt;  &lt;p&gt;Este post tem o objetivo de ajudar na decisão pelo Commerce, sem se iludir com os textos do site. As observações colocadas permitem que o tomador de decisão saiba o que irá enfrentar, positivamente ou não, antes de iniciar o projeto. &lt;/p&gt;  &lt;p&gt;Perguntas básicas:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Pra qual tipo de projeto o Commerce é ideal?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Na minha opinião, o Commrece Server é adequado para qualquer tipo de projeto, de qualquer tamanho. Não existe uma questão técnica clara de que o Commerce serve apenas para grandes ou pequenos projetos. Existe apenas a questão do investimento e do retorno ao analisar o custo dos profissionais, o custo da licenças, infra-estrutura, etc.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Qual é o preço por hora (em média) de um desenvolvedor especialista em Commerce?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Um desenvolvedor especialista em Commerce recebe em média R$40,00 ~ R$50,00 por hora.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Em diversas regiões no mundo as regras padrões de comércio eletrônico são diferentes. O template padrão é voltado para qual região do país?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O template padrão do Commerce foi desenvolvido para os Estados Unidos. Isso quer dizer que alguns detalhes de pagamentos, entregas, parcelamento e juros não estão implementadas por padrão.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Existe documentação na internet?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Existe e é bem completa. Este endereço &lt;a title="http://www.microsoft.com/commerceserver/en/us/Pricing-Licensing-FAQ.aspx" href="http://www.microsoft.com/commerceserver/en/us/Pricing-Licensing-FAQ.aspx"&gt;http://www.microsoft.com/commerceserver/en/us/Pricing-Licensing-FAQ.aspx&lt;/a&gt; apresenta uma série de perguntas e respostas que ajudarão na tomada de decisão.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7239583" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Commerce+Server/default.aspx">Commerce Server</category></item><item><title>Microsoft Commerce Server: O que é?</title><link>http://weblogs.asp.net/andrenobre/archive/2009/10/23/microsoft-commerce-server-o-que-233.aspx</link><pubDate>Fri, 23 Oct 2009 14:16:54 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7237200</guid><dc:creator>anobre</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7237200</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7237200</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/10/23/microsoft-commerce-server-o-que-233.aspx#comments</comments><description>&lt;h3&gt;História&lt;/h3&gt;  &lt;p&gt;Assim como outras empresas grandes do setor, a Microsoft investiu (e continua investindo) esforços na área de comércio eletrônico, fornecendo produtos exclusivos para este ramo.&lt;/p&gt;  &lt;p&gt;Em outubro de 1996 a Microsoft liberou o Merchant Server, uma solução para o então ainda recente mercado de B2C. Inicialmente este produto pertencia a uma empresa chamada eShop, sendo baseado em Python e C++.   &lt;br /&gt;Com o lançamento do ASP (Active Server Pages) em Dezembro de 1996, o processamento principal do Merchant foi migrado para objetos COM.&lt;a href="http://weblogs.asp.net/blogs/andrenobre/20339054_7DF80038.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="20339054" border="0" alt="20339054" align="right" src="http://weblogs.asp.net/blogs/andrenobre/20339054_thumb_0E8FFB27.jpg" width="181" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Mas a promissora vida do Merchant Server foi encerrada logo na primeira versão, quando a partir daí começou a ser incorporado na versão “Commerce Edition” de um produto chamado Site Server versão 2.0. Na sua versão seguinte 3.0, algumas funcionalidades de administração dos conteúdos do e-commerce e também outros conteúdos comuns foram adicionadas. &lt;/p&gt;  &lt;p&gt;Ao descontinuar o Site Server, a Microsoft criou duas novas linhas de produtos: Commerce Server, com toda sua linha voltada para o e-commerce; e o Sharepoint, com a administração do conteúdo.&lt;/p&gt;  &lt;h3&gt;O Caminho do Commerce Server&lt;a href="http://weblogs.asp.net/blogs/andrenobre/commerce_server_big_4D1548CD.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="commerce_server_big" border="0" alt="commerce_server_big" align="right" src="http://weblogs.asp.net/blogs/andrenobre/commerce_server_big_thumb_67753BE4.jpg" width="114" height="136" /&gt;&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;A versão inicial do Commerce Server surgiu em 2000, quando o Site Server deixou de existir. Algumas mudanças ocorream e em 2002 foi lançada uma nova versão, seguinda de alguns Services Pack em 2003, 2004 e 2006, quando a versão 2007 do produto já estava em desenvolvimento. &lt;/p&gt;  &lt;p&gt;A penúltima versão do produto, Commerce Server 2007, trouxe muito benefícios, tornando-o mais competitivo e utilizado no mercado.&lt;/p&gt;  &lt;p&gt;Em março de 2009 foi lançada a versão mais atual (no período de publicação deste post). Inicialmente conhecida como “Mojave”, a versão 2009 adicionou recursos sobre a base do 2007, como múltiplos canais de publicação, utilização do Sharepoint para gerenciamento, mais de 30 web parts por padrão, o &lt;em&gt;Commerce Server Foundation&lt;/em&gt;, etc.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Fontes de Informações&lt;/h3&gt;  &lt;p&gt;A versão 2000 e 2002 do Commerce contaram com a publicação de alguns livros, o que na época era fundamental pelo dificil acesso à informação.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/51Hu7J9eEHL__BO2204203200_PIsitbstickerarrowclickTopRight3576_AA240_SH20_OU01__5F11668D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="51Hu7J9eEHL__BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_" border="0" alt="51Hu7J9eEHL__BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_" src="http://weblogs.asp.net/blogs/andrenobre/51Hu7J9eEHL__BO2204203200_PIsitbstickerarrowclickTopRight3576_AA240_SH20_OU01__thumb_688A2503.jpg" width="127" height="127" /&gt;&lt;/a&gt; &lt;a href="http://weblogs.asp.net/blogs/andrenobre/518MVBPW04L__BO2204203200_PIsitbstickerarrowclickTopRight3576_AA240_SH20_OU01__5C1C01DA.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="518MVBPW04L__BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_" border="0" alt="518MVBPW04L__BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_" src="http://weblogs.asp.net/blogs/andrenobre/518MVBPW04L__BO2204203200_PIsitbstickerarrowclickTopRight3576_AA240_SH20_OU01__thumb_3330ECD1.jpg" width="132" height="132" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A versão 2007 não conta com nenhuma publicação, tornando os blogs e acesso online a base para a disseminação do conhecimento. A partir desta versão foram criados fóruns no MSDN, que podem ajudar na resolução de problemas.&lt;/p&gt;  &lt;p&gt;Mesmo assim, o Commerce continua sendo um mito para muitas empresas, que pela dificuldade de encontrar pessoal especializado deixa de adquirir o produto.&lt;/p&gt;  &lt;h3&gt;O Commerce Server no Brasil&lt;/h3&gt;  &lt;p&gt;No Brasil o Commerce começou a ser largamente utilizado a partir de 2007. Antes disso, poucos projetos utilizaram o produto. &lt;/p&gt;  &lt;p&gt;Atualmente temos empresas como Grupo Pão de Açucar e BM&amp;amp;F Bovespa que adotaram esta base para seus negócios em comércio eletrônico.&lt;/p&gt;  &lt;p&gt;Existe um grupo de usuários chamado &lt;a href="http://www.commerceserver.com.br" target="_blank"&gt;Commerce Server Brasil&lt;/a&gt; que reúne um grupo de profissionais especializados na ferramente, onde é possível trocar idéias, soluções, vagas de emprego, etc.&lt;/p&gt;  &lt;h3&gt;E agora?&lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Nos próximos posts vou escrever mais detalhes sobre a versão 2009, além de questões como migração, problemas encontrados ao tentar vender e aplicar o Commerce, entre outros pontos interessantes.&lt;/p&gt;  &lt;p&gt;Abraços!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7237200" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Commerce+Server/default.aspx">Commerce Server</category></item><item><title>Locaweb x UOL Host (Comparação)</title><link>http://weblogs.asp.net/andrenobre/archive/2009/10/21/locaweb-x-uol-host-compara-231-227-o.aspx</link><pubDate>Wed, 21 Oct 2009 16:27:21 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7235117</guid><dc:creator>anobre</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7235117</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7235117</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/10/21/locaweb-x-uol-host-compara-231-227-o.aspx#comments</comments><description>&lt;p&gt;Quem me acompanha pelo &lt;a href="http://twitter.com/nbrtec" target="_blank"&gt;twitter&lt;/a&gt; sabe do meu descontentamento com a Locaweb. Nos últimos meses tenho enfrentado &lt;a href="http://twitter.com/nbrtec/status/4710239019" target="_blank"&gt;problemas no serviço de e-mail&lt;/a&gt;, quedas temporárias no SQL Server e inúmeras inconsistências nos servidores Windows 2008 com aplicação ASP.NET MVC. &lt;/p&gt;  &lt;p&gt;O mais interessante de tudo é ainda ter um &lt;a href="http://statusblog.locaweb.com.br/" target="_blank"&gt;blog&lt;/a&gt; para acompanharmos os problemas, o que – dependendo do caso – passa a ser uma declaração de incompetência do que um serviço ao cliente, justamente por causa do volume de problemas.&lt;/p&gt;  &lt;p&gt;Por esses motivos resolvi entrar em uma árdua luta a favor daquela famosa premissa que os serviços de hospedagem prometem quando os contratamos: 99,8% do tempo funcionando.    &lt;br /&gt;Pesquisando rapidamente encontrei o UOL Host, um host que disponibiliza as principais características de meus clientes – Windows Server 2008, SQL Server 2008, ASP.NET MVC, etc, etc.&lt;/p&gt;  &lt;h3&gt;Análise do UOL Host&lt;/h3&gt;  &lt;p&gt;Rapidamente resolvi criar uma conta para efetuar alguns testes. Em menos de 5 minutos estava com tudo criado, e em menos de 15 com tudo funcionando (sem replicação de DNS, apenas pelos endereços temporários). Logo após comecei a efetuar os testes nas bases, FTP, e-mail, web e painel de controle.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;FTP&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O FTP funcionou corretamente, e com uma performance maior que o meu serviço na Locaweb (média de 13% mais rápido, tanto para Upload quando para Download). Até aí tudo bem, este valor não pode ser levado em consideração. &lt;/p&gt;  &lt;p&gt;Mas o que eu mais fiquei impressionado é que em vários momentos a Locaweb pecou no funcionamento, alternando muitas vezes entre um funcionamento 100% e performance ruim.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;E-mail&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Este era meu maior problema da Locaweb. Inúmeras vezes ao dia o serviço de e-mail parava de funcionar, o que chegou a impactar várias horas de trabalho. Isto não acontecia uma vez ao mês, mas sim várias vezes por semana, tanto para e-mails enviados como recebidos.&lt;/p&gt;  &lt;p&gt;O serviço do UOL, em 2 semanas de utilização não parou nenhum momento.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Web&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A performance das duas opções funcionou bem. Porém, em uma determinada área da aplicação, o mesmo código ASP.NET MVC + jQuery não funcionou na Locaweb e no UOL sim, ambos em servidores Windows 2008.&lt;/p&gt;  &lt;p&gt;Mas no geral este item pode ser declarado como empate :)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Painel de Controle&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O painel de controle de ambos é muito produtivo, com todas as funcionalidades ok.&lt;/p&gt;  &lt;p&gt;Um ponto positivo do painel de controle do UOL é que tanto o gerenciamento da web/banco como do e-mail fazem parte do mesmo sistema, já na Locaweb são sistemas diferentes.&lt;/p&gt;  &lt;p&gt;Um ponto positivo da Locaweb é a criação de subdominios diretamente no painel, o que no UOL ainda depende de help desk. Meus pedidos para criação de subdominio foram atendidos em menos de 1 hora, mas ainda sim isto é um problema.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Relatórios de Acessos&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Um item muito importante a analisar são os relatórios de acesso dos sites. Neste quesito a Locaweb ganha em disparada, com seu Urchin. &lt;/p&gt;  &lt;p&gt;O relatório do UOL Host apresenta os dados corretamente, mas a interface e a interação não são tão produtivos quanto da Locaweb.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SQL Server&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Neste item a UOL Host ganha novamente, somente por causa da performance. Todos os outros itens (recursos, acesso, gerenciamento, segurança) são iguais.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Atendimento&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Tão importante quanto o funcionamento correto é atendimento de suporte. Simulei alguns problemas básicos na minha hospedagem e entrei em contato, tanto pelo Help Desk como pelo Chat, em ambos os hosts. Todos os atendimento foram realizados corretamente, em um tempo relativamente bom. &lt;/p&gt;  &lt;h3&gt;Conclusão&lt;/h3&gt;  &lt;p&gt;Esta análise é apenas o resultado de uma experiência rápida, que não leva em consideração a estrutura dos data centers, segurança das informações, backup diário, etc. &lt;/p&gt;  &lt;p&gt;Este post resume as funcionalidades básicas de quem utiliza a hospedagem de terceiros para clientes, e precisa de segurança na hora escolher o fornecedor.&lt;/p&gt;  &lt;p&gt;Vou continuar fazendo estas comparações, visto que tenho aplicações nos dois servidores.    &lt;br /&gt;Publicarei as novidades :)&lt;/p&gt;  &lt;p&gt;Abraços.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Update 1 21/10 17:10:&amp;#160; Acabei de receber uma ligação do UOL Host para saber o que estou achando do serviço, quais são as minhas percepções até agora, sugestões, críticas, etc. Muito legal!&lt;/em&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7235117" width="1" height="1"&gt;</description></item><item><title>ASP.NET MVC com jQuery + JSON</title><link>http://weblogs.asp.net/andrenobre/archive/2009/10/21/asp-net-mvc-com-jquery-json.aspx</link><pubDate>Wed, 21 Oct 2009 12:27:47 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7234932</guid><dc:creator>anobre</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7234932</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7234932</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/10/21/asp-net-mvc-com-jquery-json.aspx#comments</comments><description>&lt;h4&gt;Sobre o jQuery&lt;/h4&gt;  &lt;p&gt;Apesar de ser um dos mais comentados “lançamentos” dos últimos anos, muita gente ainda não sabe e não tem prática com jQuery. Mas o mais legal disso é que o jQuery não tem nada de novidade por baixo dos panos.    &lt;br /&gt;Basicamente, jQuery é um projeto resultante da soma do CSS, com seus seletores, e das possibilidade do Java Script, tudo isto escrito em uma nova linguagem, um novo idioma.&lt;/p&gt;  &lt;p&gt;Para exemplificar, em um passado não muito distante, desenvolver a comunicação Ajax era algo complicado.&amp;#160; Exigia-se muitas linhas de código, enfrentava-se dificuldade com testes, com retornos, etc. Hoje, com jQuery, é possível utilizar seus recursos “prontos” mantendo a preocupação nas regras do negócio ao invés da estrutura técnica para realizá-las.&lt;/p&gt;  &lt;p&gt;A única questão diferente (diferente.. não dificil) é que exige uma sintaxe um pouco fora da usual tanto para desenvolvedores quanto para designer, pois mistura um pouco dos dois mundos ao utilizar seletores CSS com sintaxe baseada no ECMA 262. Fora isso não tem segredo, não é difícil e facilita muito a nossa vida.&lt;/p&gt;  &lt;h6&gt;Como o foco deste post não é o jQuery, recomendo que acesse o &lt;a href="http://jquery.com"&gt;http://jquery.com&lt;/a&gt; para obter mais informações.&lt;/h6&gt;  &lt;h4&gt;Sobre o JSON&lt;/h4&gt;  &lt;p&gt;Com o foco dado ao à comunicação assíncrona na web nestes últimos tempos, surgiu a necessidade de utilizarmos um formato prático para troca de informações entre as bibliotecas baseadas no ECMA 262 e códigos server-side. Neste cenário entra o JSON – JavaScript Object Notation.&lt;/p&gt;  &lt;p&gt;O JSON nada mais é do que uma definição de nome/valor para representação de informações. Os “objetos” são representados através da estrutura abaixo:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/object_5BC7973A.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="object" border="0" alt="object" src="http://weblogs.asp.net/blogs/andrenobre/object_thumb_6F7480CE.gif" width="598" height="113" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Como é possível imaginar, a iteração nestes objetos deve ocorrer facilmente, visto que não há tipagem, regras ou qualquer outro detalhe que aumente a complexidade no acesso às informações.&lt;/p&gt;  &lt;p align="left"&gt;O benefício ocorre quando unimos a facilidade do JSON com a produtividade do jQuery, como no exemplo abaixo:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;$.getJSON(&amp;quot;/Graficos/Obter&lt;span class="str"&gt;&amp;quot;&lt;/span&gt;,
                    &lt;span class="kwrd"&gt;function&lt;/span&gt;(data) {
                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (data == &lt;span class="str"&gt;''&lt;/span&gt; || data == &lt;span class="kwrd"&gt;null&lt;/span&gt;) {
                            jAlert(&lt;span class="str"&gt;&amp;quot;Não foi possível obter os dados para visualização da tabela.&amp;quot;&lt;/span&gt;);
                            &lt;span class="kwrd"&gt;return&lt;/span&gt;;
                        }
                        &lt;span class="kwrd"&gt;else&lt;/span&gt; {

                            $(eval(data)).each(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                                // Execução&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;                            });

                            $(&lt;span class="str"&gt;&amp;quot;#planilha&amp;quot;&lt;/span&gt;).dataTable({});


                        }
                    });&lt;/pre&gt;

&lt;h6&gt;Se algo parece estranho, com certeza você não está habituado ao jQuery. &lt;/h6&gt;

&lt;p&gt;Como podemos perceber pelo exemplo, a sintaxe é extremamente simples. No exemplo acima, a instrução getJSON retorna de uma URL uma série de informações no formato JSON explicado acima. Através das informações retornadas (data), é possível criar uma laço (.each) onde podemos percorrer cada elemento e efetuar uma execução. &lt;/p&gt;

&lt;p&gt;Na prática, um código em JSON tem o seguinte formato:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;{&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;:1,&lt;span class="str"&gt;&amp;quot;nome&amp;quot;&lt;/span&gt;:&lt;span class="str"&gt;&amp;quot;Nobre&amp;quot;&lt;/span&gt;}&lt;/pre&gt;

&lt;p&gt;Uma coleção de objetos apresenta colchetes para delimetar os itens pertencentes à coleção:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;[{&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;:1,&lt;span class="str"&gt;&amp;quot;nome&amp;quot;&lt;/span&gt;:&lt;span class="str"&gt;&amp;quot;Nobre&amp;quot;&lt;/span&gt;},{&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;:2,&lt;span class="str"&gt;&amp;quot;nome&amp;quot;&lt;/span&gt;:&lt;span class="str"&gt;&amp;quot;André&amp;quot;&lt;/span&gt;}] &lt;/pre&gt;

&lt;h3&gt;E como isto se encaixa do ASP.NET MVC?&lt;/h3&gt;

&lt;p&gt;No ASP.NET MVC não existe requisições mapeadas a arquivos físicos, mas sim a métodos que retornam algum tipo de informação para o usuário, que utilizam como base a classe ActionResult. Em alguns casos, este retorno pode ser uma ViewResult (telas aspx, por ex), um JavaScript, ou então um Json.&lt;/p&gt;

&lt;p&gt;O ActionResult Json permite que objetos sejam “automaticamente” transformados para o padrão JSON, e esta transformação seja retornada para o autor da requisição. &lt;/p&gt;

&lt;p&gt;O exemplo abaixo demonstra o resultado da transformação de um objeto extremamente simples:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; ActionResult Index()
{
    var teste = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;[]{ &lt;span class="kwrd"&gt;new&lt;/span&gt; { id = 1, nome = &lt;span class="str"&gt;&amp;quot;Nobre&amp;quot;&lt;/span&gt;}, &lt;span class="kwrd"&gt;new&lt;/span&gt; { id = 2, nome = &lt;span class="str"&gt;&amp;quot;André&amp;quot;&lt;/span&gt; }};
    &lt;span class="kwrd"&gt;return&lt;/span&gt; Json(teste);
}&lt;/pre&gt;

&lt;h3&gt;Tá… e tem algum exemplo mais prático?&lt;/h3&gt;

&lt;p&gt;Em uma cenário mais real, esta abordagem poderia ser utilizada em uma interface com comunicação assíncrona, visando a troca de dados entre o código jQuery e o servidor. É possível executar o getJSON diretamente em um Controller, usufruindo ainda da possibilidade de retornar uma ActionResult Json ou ViewResult dependendo do tipo de requisição:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No Controller:&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; GraficoController : Controller
    {

        &lt;span class="kwrd"&gt;public&lt;/span&gt; ActionResult Padrao(&lt;span class="kwrd"&gt;string&lt;/span&gt; contexto, &lt;span class="kwrd"&gt;string&lt;/span&gt; tipo, &lt;span class="kwrd"&gt;string&lt;/span&gt; formato)
        {
            IList&amp;lt;IItemGrafico&amp;gt; dados = &lt;span class="kwrd"&gt;new&lt;/span&gt; GraficosPadraoRepository().ObterDadosParaGraficoPadrao(contexto);

            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="str"&gt;&amp;quot;json&amp;quot;&lt;/span&gt;.Equals(formato, StringComparison.CurrentCultureIgnoreCase))
            {
                   &lt;span class="kwrd"&gt;return&lt;/span&gt; Json(dados);
            }

            ...&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; FileStreamResult(builder.Exportar(), &lt;span class="str"&gt;&amp;quot;image/png&amp;quot;&lt;/span&gt;); 
        }&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;No ASPX:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;$.getJSON(&lt;span class="str"&gt;&amp;quot;/Grafico/Padrao?formato=json&amp;quot;&lt;/span&gt;,
                    &lt;span class="kwrd"&gt;function&lt;/span&gt;(data) {
                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (data == &lt;span class="str"&gt;''&lt;/span&gt; || data == &lt;span class="kwrd"&gt;null&lt;/span&gt;) {
                            jAlert(&lt;span class="str"&gt;&amp;quot;Não foi possível obter os dados para visualização da tabela.&amp;quot;&lt;/span&gt;);
                            &lt;span class="kwrd"&gt;return&lt;/span&gt;;
                        }
                        &lt;span class="kwrd"&gt;else&lt;/span&gt; {

                            $(&lt;span class="str"&gt;&amp;quot;#planilha tbody&amp;quot;&lt;/span&gt;).html(&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);
                            $(eval(data)).&lt;strong&gt;each&lt;/strong&gt;(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                                $(&lt;span class="str"&gt;&amp;quot;#planilha tbody&amp;quot;&lt;/span&gt;).append(&lt;span class="str"&gt;&amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;quot;&lt;/span&gt; + (&lt;span class="kwrd"&gt;this&lt;/span&gt;.Empresa != &lt;span class="kwrd"&gt;null&lt;/span&gt; ? &lt;span class="kwrd"&gt;this&lt;/span&gt;.Empresa : &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;) + &lt;span class="str"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;quot;&lt;/span&gt; + &lt;span class="kwrd"&gt;this&lt;/span&gt;.Item + &lt;span class="str"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;quot;&lt;/span&gt; + (&lt;span class="kwrd"&gt;this&lt;/span&gt;.Item2 != &lt;span class="kwrd"&gt;null&lt;/span&gt; ? &lt;span class="kwrd"&gt;this&lt;/span&gt;.Item2 : &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;) + &lt;span class="str"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;lt;td class=\&amp;quot;center\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; + &lt;span class="kwrd"&gt;this&lt;/span&gt;.Valor + &lt;span class="str"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;&lt;/span&gt;);
                            });

                            $(&lt;span class="str"&gt;&amp;quot;#planilha&amp;quot;&lt;/span&gt;).dataTable({});


                        }
                    });&lt;/pre&gt;

&lt;p&gt;Lembrando que “data” (parametro da function callback) armazena o resultado da requisição a /Grafico/Padrao em formato JSON. Observem a iteração através da função “each” do jQuery.&lt;/p&gt;

&lt;h3&gt;Conclusão&lt;/h3&gt;

&lt;p&gt;Apesar de muito rápido, este post demonstra a utilização conceitual e prática do jQuery e JSON, dentro do ASP.NET MVC. &lt;/p&gt;

&lt;p&gt;Espero que tenham gostado!&lt;/p&gt;

&lt;p&gt;Abraços!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7234932" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/JSON/default.aspx">JSON</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/jQuery/default.aspx">jQuery</category></item><item><title>Londrina TechDay #2 – Segundo Dia</title><link>http://weblogs.asp.net/andrenobre/archive/2009/10/08/londrina-techday-2-segundo-dia.aspx</link><pubDate>Thu, 08 Oct 2009 14:26:13 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7225529</guid><dc:creator>anobre</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7225529</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7225529</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/10/08/londrina-techday-2-segundo-dia.aspx#comments</comments><description>&lt;p&gt;No dia 05/10 (segunda-feira) fizemos o segundo dia do Londrina TechDay #2, com as palestras sobre Silverlight 3 (Márcio Fábio Althmann) e .NET 4.0 / Visual Studio 2010 (Carlos dos Santos).&lt;/p&gt;  &lt;p&gt;O evento foi muito interessante no geral. No primeiro dia, realizado no campus da PUC em Londrina, os participantes puderam participar das palestras de ADO.NET Data Services, Azure e a palestra Microsoft e a Inovação, por Alexsandro Salmazo (Microsoft).   &lt;br /&gt;O segundo dia, com média de publico de 250 pessoas, apresentou as novidades da plataforma .NET e do Silverlight, com ótimos exemplos.&lt;/p&gt;  &lt;p&gt;Em breve a equipe do Londrina TechDay fará uma onde de palestras sobre Windows 7, apenas para empresas.&lt;/p&gt;  &lt;p&gt;Obrigado a todos pela presença e até o próximo!&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/LondrinaTechDay116_2C0D7FB4.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="LondrinaTechDay 116" border="0" alt="LondrinaTechDay 116" src="http://weblogs.asp.net/blogs/andrenobre/LondrinaTechDay116_thumb_61569219.jpg" width="244" height="184" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;Márcio Fábio sobre Silverlight 3&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/LondrinaTechDay145_463DC30B.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="LondrinaTechDay 145" border="0" alt="LondrinaTechDay 145" src="http://weblogs.asp.net/blogs/andrenobre/LondrinaTechDay145_thumb_09C54E61.jpg" width="244" height="184" /&gt;&lt;/a&gt;     &lt;br /&gt;Carlos dos Santos sobre VS2K10 e .C# 4.0&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/LondrinaTechDay181_19F1165A.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="LondrinaTechDay 181" border="0" alt="LondrinaTechDay 181" src="http://weblogs.asp.net/blogs/andrenobre/LondrinaTechDay181_thumb_0446B7F0.jpg" width="244" height="184" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;Eduardo Spoky e André Nobre&lt;/p&gt;  &lt;p align="center"&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/LondrinaTechDay182_2244C5E4.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="LondrinaTechDay 182" border="0" alt="LondrinaTechDay 182" src="http://weblogs.asp.net/blogs/andrenobre/LondrinaTechDay182_thumb_6C7F5ABC.jpg" width="244" height="184" /&gt;&lt;/a&gt;     &lt;br /&gt;André Nobre e Márcio Fábio&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/LondrinaTechDay191_5C9015F8.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="LondrinaTechDay 191" border="0" alt="LondrinaTechDay 191" src="http://weblogs.asp.net/blogs/andrenobre/LondrinaTechDay191_thumb_196497CB.jpg" width="244" height="184" /&gt;&lt;/a&gt;     &lt;br /&gt;A equipe indo embora do evento… :)&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7225529" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Treinamentos/default.aspx">Treinamentos</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Palestras/default.aspx">Palestras</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Grupos/default.aspx">Grupos</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Londrina TechDay – Primeiro Dia</title><link>http://weblogs.asp.net/andrenobre/archive/2009/10/05/londrina-techday-primeiro-dia.aspx</link><pubDate>Mon, 05 Oct 2009 15:03:42 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7223674</guid><dc:creator>anobre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7223674</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7223674</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/10/05/londrina-techday-primeiro-dia.aspx#comments</comments><description>&lt;p&gt;Quarta-feira (30/09) tivemos o primeiro dia do &lt;a href="http://www.londrinatechday.com.br" target="_blank"&gt;Londrina TechDay&lt;/a&gt;, na PUC em Londrina.     &lt;br /&gt;Nesta primeira sequencia de palestras, Michel Banagouro falou sobre o ADO.NET Data Services e eu falei sobre Windows Azure. &lt;/p&gt;  &lt;p&gt;Apesar do público reduzido em comparação com a primeira edição, as apresentações foram muito interessantes, e em certos momentos com bastante participação do público. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/30092009017_051A60E8.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="30092009017" border="0" alt="30092009017" align="right" src="http://weblogs.asp.net/blogs/andrenobre/30092009017_thumb_28F31275.jpg" width="175" height="132" /&gt;&lt;/a&gt;    &lt;br /&gt;Pelos feedbacks positivos, o primeiro dia foi muito bom!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Aqui está minha apresentação:&lt;/p&gt;  &lt;div style="text-align: left; width: 425px" id="__ss_2131165"&gt;&lt;a style="margin: 12px 0px 3px; display: block; font: 14px helvetica,arial,sans-serif; text-decoration: underline" title="Londrina Tech Day   Windows Azure" href="http://www.slideshare.net/nbrtec/londrina-tech-day-windows-azure"&gt;Londrina Tech Day Windows Azure&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=londrinatechday-windowsazure-091005100139-phpapp02&amp;amp;stripped_title=londrina-tech-day-windows-azure" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=londrinatechday-windowsazure-091005100139-phpapp02&amp;amp;stripped_title=londrina-tech-day-windows-azure" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;    &lt;div style="font-family: tahoma,arial; height: 26px; font-size: 11px; padding-top: 2px"&gt;View more &lt;a style="text-decoration: underline" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline" href="http://www.slideshare.net/nbrtec"&gt;NBR Tecnologia&lt;/a&gt;.&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Agradeço a presença de todos e não se esqueçam que hoje tem o segundo dia, na UNifil, com Carlos dos Santos (MVP) e Márcio Fábio (vencedor do WinThe7 – Desenvolvedores). &lt;/p&gt;  &lt;p&gt;Abraços! &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7223674" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Treinamentos/default.aspx">Treinamentos</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Palestras/default.aspx">Palestras</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Azure/default.aspx">Azure</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Eventos/default.aspx">Eventos</category></item><item><title>ASP.NET MVC + ASP.NET Charting Controls</title><link>http://weblogs.asp.net/andrenobre/archive/2009/09/28/asp-net-mvc-asp-net-charting-controls.aspx</link><pubDate>Mon, 28 Sep 2009 19:35:37 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7219483</guid><dc:creator>anobre</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7219483</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7219483</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/09/28/asp-net-mvc-asp-net-charting-controls.aspx#comments</comments><description>&lt;p&gt;Fico surpreso quando percebo que muitas pessoas ainda não sabem que a Microsoft disponibilizou, há alguns meses, um controle para geração dinâmica de gráficos, utilizando a plataforma .NET, o chamado &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx" target="_blank"&gt;ASP.NET Charting Controls&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Estou finalizando um projeto que faz uso massivo de gráficos, e resolvi utilizar esta biblioteca extremamente útil. A documentação de como utilizar os controles com C# não&lt;a href="http://weblogs.asp.net/blogs/andrenobre/image_5E687488.png"&gt;&lt;img style="border-right-width: 0px; margin: 15px 0px 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="http://weblogs.asp.net/blogs/andrenobre/image_thumb_61B9E663.png" width="244" height="146" /&gt;&lt;/a&gt; é muito clara, mas existe uma aplicação Web (ASP.NET Web Forms) e Windows Forms com mais de 200 exemplos, onde é possível, tranquilamente, aprender a utilizar os recursos disponiveis.&lt;/p&gt;  &lt;p&gt;Como utilizamos ASP.NET MVC na maioria dos projetos, a primeira observação que fiz foi que o ASP.NET Charting Controls era dedicado a ASP.NET Web Forms, com seu controle na velha forma “runat=’server’”. Como todos já devem saber, o ASP.NET MVC não faz uso¹ de controles server-side, o que teoricamente impossibilitaria o uso dos Charting Controls.&lt;/p&gt;  &lt;p&gt;Em uma rápida análise na estrutura da solução dos controles, pude comprovar um pecado no seu desenvolvimento (realmente não sei se o código foi do zero ou herdado da Dundas): a solução para Web Forms e a solução para Windows Forms são totalmente dependentes da interface, o que impossibilita a reutilização do código de uma forma &lt;em&gt;arquiteturalmente&lt;/em&gt; correta no ASP.NET MVC.&lt;/p&gt;  &lt;p&gt;Porém, existe uma solução simples que resolveu nosso problema.    &lt;br /&gt;Ao configurar todo o objeto Chart, com nosso dados, eixos, e etc, é possível gerar um FileStreamResult – dentro do ASP.NET MVC – passando o &lt;em&gt;contentType “&lt;/em&gt;image/png”. &lt;/p&gt;  &lt;p&gt;Desta maneira é possível gerar o gráfico, e unido de Ajax, apresentá-lo sem maiores problemas aos usuários.&lt;/p&gt;  &lt;p&gt;Ex.: &lt;/p&gt;  &lt;pre class="csharpcode"&gt;            var chart = new Chart();&lt;br /&gt;            chart.BackColor = Color.Transparent;
            chart.Width = Unit.Pixel(500);
            chart.Height = Unit.Pixel(400);

            Series series1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; Series(&lt;span class="str"&gt;&amp;quot;Series1&amp;quot;&lt;/span&gt;);
            series1.ChartArea = &lt;span class="str"&gt;&amp;quot;ca1&amp;quot;&lt;/span&gt;;
            series1.ChartType = SeriesChartType.Bar;
            series1.Font = &lt;span class="kwrd"&gt;new&lt;/span&gt; Font(&lt;span class="str"&gt;&amp;quot;Calibri&amp;quot;&lt;/span&gt;, 8f, FontStyle.Regular);

            series1.Points.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; DataPoint
            {
                AxisLabel = &lt;span class="str"&gt;&amp;quot;Value1&amp;quot;&lt;/span&gt;,
                YValues = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt;[] { 2 }
            });

            series1.Points.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; DataPoint
            {
                AxisLabel = &lt;span class="str"&gt;&amp;quot;Value2&amp;quot;&lt;/span&gt;,
                YValues = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt;[] { 1 }
            });

            series1.Points.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; DataPoint
            {
                AxisLabel = &lt;span class="str"&gt;&amp;quot;Value3&amp;quot;&lt;/span&gt;,
                YValues = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt;[] { 1, 5 }
            });

            chart.Series.Add(series1);

            ChartArea ca1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; ChartArea(&lt;span class="str"&gt;&amp;quot;ca1&amp;quot;&lt;/span&gt;);
            ca1.BackColor = Color.Transparent;
            ca1.Area3DStyle.Enable3D = &lt;span class="kwrd"&gt;true&lt;/span&gt;;

            chart.ChartAreas.Add(ca1);&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;            MemoryStream ms = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream();
            chart.SaveImage(ms, ChartImageFormat.Png);
            ms.Seek(0, SeekOrigin.Begin);

            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; FileStreamResult(ms, &lt;span class="str"&gt;&amp;quot;image/png&amp;quot;&lt;/span&gt;);  &lt;/pre&gt;

&lt;div align="center"&gt;
  &lt;pre class="csharpcode"&gt;&lt;a href="http://weblogs.asp.net/blogs/andrenobre/image_38CED15A.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/andrenobre/image_thumb_551C137A.png" width="369" height="225" /&gt;&lt;/a&gt; &lt;/pre&gt;
&lt;/div&gt;

&lt;div align="left"&gt;
  &lt;p&gt;Abraços!&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7219483" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/ASP.NET+Charting+Controls/default.aspx">ASP.NET Charting Controls</category></item><item><title>Londrina TechDay #2</title><link>http://weblogs.asp.net/andrenobre/archive/2009/09/17/londrina-techday-2.aspx</link><pubDate>Thu, 17 Sep 2009 12:05:07 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7209213</guid><dc:creator>anobre</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7209213</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7209213</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/09/17/londrina-techday-2.aspx#comments</comments><description>&lt;p&gt;Olá pessoal,&lt;/p&gt;  &lt;p&gt;hoje estamos lançando mais uma edição do Londrina TechDay. Se você estiver na região nas datas das palestras, participe!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.londrinatechday.com.br"&gt;http://www.londrinatechday.com.br&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Abraços!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7209213" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Palestras/default.aspx">Palestras</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Grupos/default.aspx">Grupos</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Azure/default.aspx">Azure</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Eventos/default.aspx">Eventos</category></item><item><title>Treinamento ASP.NET MVC</title><link>http://weblogs.asp.net/andrenobre/archive/2009/07/09/treinamento-asp-net-mvc.aspx</link><pubDate>Thu, 09 Jul 2009 12:31:31 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7143868</guid><dc:creator>anobre</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7143868</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7143868</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/07/09/treinamento-asp-net-mvc.aspx#comments</comments><description>&lt;p&gt;Neste final de semana ministrei o primeiro treinamento de ASP.NET MVC em Londrina, PR. O treinamento para introdução foi interessante, o pessoal participou e acredito que tenha sido bom para todos.    &lt;br /&gt;Conseguimos entrar em alguns tópicos mais avançados e adaptar alguns cenários para a realidade dos profissionais.&lt;/p&gt;  &lt;p&gt;Muito obrigado a todos que compareceram, até a próxima!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7143868" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Treinamentos/default.aspx">Treinamentos</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category></item><item><title>Commerce Server News: Webcasts e Downloads</title><link>http://weblogs.asp.net/andrenobre/archive/2009/07/09/commerce-server-news-webcasts-e-downloads.aspx</link><pubDate>Thu, 09 Jul 2009 12:29:23 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7143867</guid><dc:creator>anobre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/rsscomments.aspx?PostID=7143867</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/andrenobre/commentapi.aspx?PostID=7143867</wfw:comment><comments>http://weblogs.asp.net/andrenobre/archive/2009/07/09/commerce-server-news-webcasts-e-downloads.aspx#comments</comments><description>&lt;p&gt;Olá a todos,&lt;/p&gt;  &lt;p&gt;estou publicando um resumo do Commerce Server News, contendo alguns webcasts interessantes sobre a nova versão e o download do R2 CTP de Julho.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Commerce Server 2009 Codename &amp;quot;R2&amp;quot; July CTP is Now Available for Download     &lt;br /&gt;&lt;/b&gt;The Microsoft Commerce Server 2009 codename &amp;quot;R2&amp;quot; July Community Technology Preview (CTP) is now available on the &lt;a href="http://rs6.net/tn.jsp?et=1102632013874&amp;amp;s=1108&amp;amp;e=001gHWUWmekB5GHzVGrbc2x187rmAaKnKcIZInm5MV7BaucrrH2DQUaP4TG7Ay0kHHjdT2VABxL2FR82PcvR52fP8a1-krS40znOmJ2ZUPmWTH62FvXPKIYfS1RXl_cnITOBiJz2ppGGIeiaK_Ef7b6DtdN9DAckPkY4ogfe40R9kmiUoVozuy3vMlYRoYgmw8an1jQ3mvtIQXtatx-yljOPg=="&gt;Download Center&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;--&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Session: WCS05PAL- Positioning Commerce Server 2009 to Key Business Decision Makers&lt;/b&gt;    &lt;br /&gt;&lt;b&gt;Presented by:&lt;/b&gt; Steven Bergman    &lt;br /&gt;&lt;b&gt;Date: &lt;/b&gt;Tuesday, July 21, 2009     &lt;br /&gt;&lt;b&gt;Time: &lt;/b&gt;8:00-9:00am Pacific Time (UTC - 8)    &lt;br /&gt;&lt;b&gt;Level:&lt;/b&gt;&amp;#160; 100    &lt;br /&gt;&lt;b&gt;Description: &lt;/b&gt;Even in these challenging economic times, leading enterprises are continuing to make investments in e-commerce.&amp;#160; This session will offer insight into positioning Commerce Server to various Business Decision Makers (BDM's), such as those in Sales, Marketing, and Merchandizing.&amp;#160; We will highlight key Commerce Server 2009 value propositions that address your customer BDM's e-commerce objectives in today's economic climate     &lt;br /&gt;&lt;a href="http://rs6.net/tn.jsp?et=1102632013874&amp;amp;s=1108&amp;amp;e=001gHWUWmekB5F9WfA7nbSz_uPa8uCL2o93PCXKWb6V_QRHcMeBGKwFQ6qZK9eWfvvrxVvLO7okoMWgtJ36nm8tAXjwtZ7Am34yR30NJ9WqirFRCN6WD75W2Md9cJU4wN6GwmSPm_bKGOUPwQtMsfrrm8Q5xG2WR4UFPeqrgkqequ5PiyIOhohGO8H4on6dtT-I3qx3HALkXZ8TdGXVeLJwfA=="&gt;Register&lt;/a&gt; Today!&amp;#160; &lt;i&gt;Note: you must 'Sign In' with your Microsoft Partner ID account.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;--&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Session: WCS06PAL-&amp;quot;Example From Zero&amp;quot; Working With the Commerce Server 2009 Template Pack (Contemporary Site)&lt;/b&gt;    &lt;br /&gt;&lt;b&gt;Presented by:&lt;/b&gt; Scott Cairney    &lt;br /&gt;&lt;b&gt;Date:&lt;/b&gt; Thursday, July 23, 2009     &lt;br /&gt;&lt;b&gt;Time:&lt;/b&gt; 8:00-9:00am Pacific Time (UTC - 8)    &lt;br /&gt;&lt;b&gt;Level: &lt;/b&gt; 300    &lt;br /&gt;&lt;b&gt;Description: &lt;/b&gt;Commerce Server 2009 helps set a new benchmark for simplicity - it comes with a new, production-ready, out-of-the-box, contemporary Web site that allows businesses to get their stores live and merchandise moving more quickly. Learn how you can use Commerce Server's next-generation e-commerce solution to deploy and configure an e-commerce website.&amp;#160; &lt;br /&gt; You will learn how to:    &lt;br /&gt;-&amp;#160;&amp;#160; Deploy the Contemporary site using SharePoint Commerce Services     &lt;br /&gt;-&amp;#160;&amp;#160; Customize the Contemporary Site    &lt;br /&gt;-&amp;#160;&amp;#160; Use the Inline Product Property Editor (IPPE)    &lt;br /&gt;-&amp;#160;&amp;#160; BizTalk integration with Excel    &lt;br /&gt;&lt;a href="http://rs6.net/tn.jsp?et=1102632013874&amp;amp;s=1108&amp;amp;e=001gHWUWmekB5Ej666jciYWpEyfu0Nac1jh-Q47HA_kDrXb8IXDN94s32fbU3wZsrbh-Twb6o5AzBJ_lcW_2CgpXot1IhNtWMY3SUM4BOJO00ebyxkcXM-B603qZ9NXHrrywJKfqLyWUy0FMCMcKZ4tlxLZSM_NtNdDOX7g_e9czUohWQbkyoMG1GRjbzhbVo7uAV_7_Tkpa7EGUMFJlGQEEg=="&gt;Register &lt;/a&gt;Today!&amp;#160; &lt;i&gt;Note: you must 'Sign In' with your Microsoft Partner ID account. &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Abraços!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7143867" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/andrenobre/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Commerce+Server/default.aspx">Commerce Server</category><category domain="http://weblogs.asp.net/andrenobre/archive/tags/Treinamentos/default.aspx">Treinamentos</category></item></channel></rss>