<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>Monique Monteiro</title><link>http://thespoke.net/blogs/moniquelouise/default.aspx</link><description>Divagações sobre Engenharia de Software, design patterns, best practices, .NET, Gerência de Projetos em TI e tecnologia em geral...</description><dc:language>en-US</dc:language><generator>CommunityServer 1.1 (Build: 1.1.0.50602)</generator><item><title>Aumentando a produtividade e automatizando o desenvolvimento com Software Factories: Web Client Software Factory </title><link>http://thespoke.net/blogs/moniquelouise/archive/2007/07/09/989061.aspx</link><pubDate>Mon, 09 Jul 2007 06:59:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:989061</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>0</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/989061.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=989061</wfw:commentRss><description>&lt;P&gt;(Aproveitando para tirar a poeira :) )&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Para quem quiser saber um pouco sobre software factories, foi publicado um artigo meu no Linha de Código.&amp;nbsp; O link é &lt;A href="http://www.linhadecodigo.com.br/artigos.asp?id_ac=1360&amp;amp;pag=1"&gt;http://www.linhadecodigo.com.br/artigos.asp?id_ac=1360&amp;amp;pag=1&lt;/A&gt;&amp;nbsp;.&lt;/P&gt;
&lt;P&gt;Neste artigo, é feita uma breve introdução ao conceito e é mostrada uma fábrica real: a Web Client Software Factory - voltada para desenvolvimento Web.&amp;nbsp; Ao final, há uma lista de&amp;nbsp;referências para quem tiver maior interesse no assunto.&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=989061" width="1" height="1"&gt;</description></item><item><title>Software factories</title><link>http://thespoke.net/blogs/moniquelouise/archive/2007/03/27/982251.aspx</link><pubDate>Tue, 27 Mar 2007 09:33:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:982251</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>1</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/982251.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=982251</wfw:commentRss><description>Estou me aprofundando no conceito de software factories, muito difundido pelas novas ferramentas da Microsoft, a saber o DSL toolkit e algumas software factories que já foram lançadas: para smart clients, aplicações móveis, serviços, jogos, etc.&amp;nbsp; Até inclui no meu hub uma enquete para ter uma idéia da utilização desse conceito em aplicações de médio ou grande porte.&amp;nbsp; Quem estiver utilizando, fique à vontade para postar comentários, mensagens, etc.&lt;img src="http://thespoke.net/aggbug.aspx?PostID=982251" width="1" height="1"&gt;</description></item><item><title>Logoff no ASP.NET (complementando)</title><link>http://thespoke.net/blogs/moniquelouise/archive/2007/03/08/980970.aspx</link><pubDate>Thu, 08 Mar 2007 14:15:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:980970</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>0</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/980970.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=980970</wfw:commentRss><description>Ainda com relação a logoff no ASP.NET, um complemento ao post anterior: antes de qualquer redirecionamento, esqueci de citar que deve ser chamado o método FormsAuthentication.SignOut().&amp;nbsp; Esse sim remove o ticket de autenticação do usuário.&amp;nbsp; Recomendo ainda para quem for usar esse método que dê uma olhada em &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.signout.aspx"&gt;http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.signout.aspx&lt;/A&gt;.&amp;nbsp; Tem algumas questões de segurança que devem ser tratadas, para prevenir ataques de replay, como por exemplo salver o status do usuário em storage persistente.&lt;img src="http://thespoke.net/aggbug.aspx?PostID=980970" width="1" height="1"&gt;</description></item><item><title>Campos desabilitados no ASP.NET e AJAX</title><link>http://thespoke.net/blogs/moniquelouise/archive/2007/03/07/980938.aspx</link><pubDate>Wed, 07 Mar 2007 17:47:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:980938</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>1</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/980938.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=980938</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Eis algumas dicas bem interessantes de um colega (Cleviton Monteiro) sobre ASP.NET e AJAX:&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;O&amp;nbsp;IE não seta para cinza a cor de um campo que está desabilitado (enable = false). Portanto, para garantir que o usuário não vai ter problemas com usabilidade, devemos utilizar um estilo css para deixar o campo cinza.&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;Isto é feito da seguinte forma:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;- Criação de um estilo css no arquivo .css do projeto (ou verificar se já existe um);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;- Quando desejar deixar o campo desabilitado, setar a propriedade "CssClass" do TextBox com&amp;nbsp;uma string&amp;nbsp;com o nome do&amp;nbsp;estilo.&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Por exemplo: &lt;/SPAN&gt;&lt;SPAN&gt;textBox1.CssClass = "disabled"; (onde disabled é o nome do estilo css).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Agora sobre AJAX:&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;- Problemas com componentes validators quando utilizados com ajax&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Os componented de validação do ASP.NET 2.0 não funcionam com o&amp;nbsp;AJAX RC. Segundo [1]:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;"Microsoft is a bit behind in releasing a patch, via Windows Update, for ASP.NET 2.0.&amp;nbsp; This patch would solve the UpdatePanel/Validator control issues that have cropped up in previous versions of ASP.NET AJAX (b1, b2, RC1)."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Para resolver o problema sem ser pelo windows update, os passos seguines devem ser seguidos:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;- Copiar uma&amp;nbsp;Validators.dll contida&amp;nbsp;no bin do arquivo&amp;nbsp;baixado em&amp;nbsp;[3]&amp;nbsp;para o bin do viewer;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;- Colocar esse mapeamento no web.config:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &amp;lt;tagMapping&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add tagType="System.Web.UI.WebControls.CompareValidator"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mappedTagType="Sample.Web.UI.Compatibility.CompareValidator, Validators, Version=1.0.0.0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add tagType="System.Web.UI.WebControls.CustomValidator"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mappedTagType="Sample.Web.UI.Compatibility.CustomValidator, Validators, Version=1.0.0.0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add tagType="System.Web.UI.WebControls.RangeValidator"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mappedTagType="Sample.Web.UI.Compatibility.RangeValidator, Validators, Version=1.0.0.0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add tagType="System.Web.UI.WebControls.RegularExpressionValidator" mappedTagType="Sample.Web.UI.Compatibility.RegularExpressionValidator, Validators, Version=1.0.0.0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add tagType="System.Web.UI.WebControls.RequiredFieldValidator"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mappedTagType="Sample.Web.UI.Compatibility.RequiredFieldValidator, Validators, Version=1.0.0.0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add tagType="System.Web.UI.WebControls.ValidationSummary"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mappedTagType="Sample.Web.UI.Compatibility.ValidationSummary, Validators, Version=1.0.0.0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tagMapping&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Referencias interessantes sobre AJAX.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;[1] http://209.85.165.104/search?q=cache:1IEMd4dhsssJ:devjunky.wordpress.com/2007/01/25/aspnet-ajax-rtm-validator-problems-anyone/+asp.net+ajax+validator&amp;amp;hl=pt-BR&amp;amp;ct=clnk&amp;amp;cd=9&amp;amp;gl=br&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;[2] http://weblogs.asp.net/scottgu/archive/2007/01/25/links-to-asp-net-ajax-1-0-resources-and-answers-to-some-common-questions.aspx&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;[3] http://blogs.msdn.com/mattgi/attachment/1516974.ashx&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;[4] http://blogs.msdn.com/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=980938" width="1" height="1"&gt;</description></item><item><title>Logoff no ASP.NET</title><link>http://thespoke.net/blogs/moniquelouise/archive/2007/03/07/980937.aspx</link><pubDate>Wed, 07 Mar 2007 17:43:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:980937</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>0</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/980937.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=980937</wfw:commentRss><description>&lt;SPAN&gt;&lt;o:p&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Ao utilizar o método FormsAuthentication.RedirectToLoginPage() após uma operação de logoff, ao logar novamente é retornada a página em que o usuário estava anteriormente à ação de logoff, e não a página principal da aplicação, como é o comportamento esperado.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Isso ocorre porque esse método inclui um parâmetro ReturnUrl na &lt;I&gt;query string&lt;/I&gt;, que contém o endereço da página em que foi feito o logoff. Para corrigir esse problema, deve-se utilizar ao invés o método Response.Redirect(FormsAuthentication.LoginUrl), que se limita a redirecionar para a tela de login configurada, sem incluir parâmetros adicionais na &lt;I&gt;query string&lt;/I&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=980937" width="1" height="1"&gt;</description></item><item><title>Datasets e table adapters</title><link>http://thespoke.net/blogs/moniquelouise/archive/2007/03/07/980936.aspx</link><pubDate>Wed, 07 Mar 2007 17:36:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:980936</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>0</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/980936.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=980936</wfw:commentRss><description>&lt;P&gt;Lá vão algumas descobertas com relação aos table adapters, uma novidade do ADO.NET 2.0 que permite utilizar adapters fortemente tipados:&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;- Ao criar queries em table adapters, percebi que sempre era necessário retornar sempre todas as colunas da query.&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;Quando&amp;nbsp;isso não era&amp;nbsp;feito,&amp;nbsp;era lançada uma exceção de integridade do banco.&amp;nbsp; Vi isso em algum fórum, mas não encontrei uma explicação lógica.&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;- O Query Builder do Visual Studio pelo jeito não permite que se utilize a construção “in” do SQL.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;&lt;SPAN&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;- Ao fazer qualquer alteração no banco (criação de colunas, modificação do tamanho máxima das colunas), é necessário refeti-la no dataset tipado correspondente, ou recriar o dataset.&amp;nbsp; Isso vale mesmo em situações onde o tamanho das colunas aparentemente não é relevante.&amp;nbsp; Deve ser devido a checagens de integridade que são feitas pelo dataset.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Devido aos problemas citadaos acima, pessoalmente cheguei à conclusão que muitas vezes é mais produtivo usar ADO .NET diretamente, ao invés dos table adapters.&amp;nbsp; Vamos aguardar o LINQ pra ver se será lançada uma solução adequada para mapeamento objeto-relacional.&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=980936" width="1" height="1"&gt;</description></item><item><title>Dicas de WCF</title><link>http://thespoke.net/blogs/moniquelouise/archive/2007/03/07/980935.aspx</link><pubDate>Wed, 07 Mar 2007 17:27:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:980935</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>0</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/980935.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=980935</wfw:commentRss><description>&lt;P&gt;Estou tirando a poeira do blog com algumas dicas resultantes de experiências que tive após o contato com o WCF em um projeto real (mais precisamente uma prova de conceito que deve evoluir para um&amp;nbsp;sistema real).&amp;nbsp; Foi um trabalho interessante, que envolvia um sistema amplamente distribuído, onde um requisito importante era justamente a independência de protocolo de comunicação.&lt;/P&gt;
&lt;P&gt;Com relação às dicas, ou melhor, lições aprendidas, aí vão elas:&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;- Ao criar no Visual Studio um projeto que exponha serviços WCF que devam ser hospedados no IIS, utilizar o template Website &lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;à&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; WCF Service.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Esse template, por tratar-se de um projeto Web, evita problemas tais como criação de strings de conexão no próprio código compilado da aplicação, uma vez que o arquivo Web.config passa a ser usado para armazenar strings de conexão.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Além disso, referências para outros serviços WCF também são acrescentadas ao Web.config, sempre que o proxy para algum serviço WCF seja criado/atualizado.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Caso seja utilizado um template não-Web, essas referências são acrescentadas ao arquivo app.config, que não é reconhecido pelo IIS.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;- Essa é bem útil: s&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;empre que um serviço WCF retornar uma instância de ICollection, esta será representada no proxy para o serviço como um array.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Sendo assim, no cliente, esse array deve ser tratado como array, e não como ICollection.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Se continuar sendo tratada como ICollection, será gerado um erro de serialização.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;Ao lançar exceções em serviços WCF, não utilizar objetos que herdem de Exception, uma vez que o WCF não é capaz de serializar corretamente esses objetos.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Ao invés disso, utilizar classes comuns para encapsular os dados do erro e lançar FaultException&amp;lt;classe do erro&amp;gt;, onde &amp;lt;classe do erro&amp;gt; é a classe criada.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;O construtor de FaultException recebe como parâmetro uma instância dessa classe.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;O serviço, por sua vez, deve declarar que lança tal erro através do atributo [FaultContract(typeof(&amp;lt;classe do erro&amp;gt;)]&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;- Existem situações em que se deseja gerar um proxy dinamicamente para um dado serviço, cujo contrato não é conhecido em tempo de desenvolvimento.&amp;nbsp; Nesse caso, ao invés de usar o svcutil para gerar o proxy, pode-se usar uma ferramenta que a MS desenvolveu para esse cenário: o WCF Dynamic Proxy (&lt;A href="http://wcf.netfx3.com/files/folders/development_tools/entry6148.aspx"&gt;http://wcf.netfx3.com/files/folders/development_tools/entry6148.aspx&lt;/A&gt;).&amp;nbsp; Avaliei essa ferramenta e ela atende perfeitamente esse requisito, porém com algumas limitações: não é suportada chamada assíncrona ao serviço, e é gerada uma exceção ao invocar operações que recebam como parâmetro um array.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;Por enquanto, é isso.&amp;nbsp; Devo continuar me aprofundando em WCF e .NET 3.0 em geral e, qualquer descoberta interessante, vou postando por aqui :)&lt;/SPAN&gt;&lt;/P&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=980935" width="1" height="1"&gt;</description></item><item><title>Feliz Ano Novo!</title><link>http://thespoke.net/blogs/moniquelouise/archive/2007/01/08/978345.aspx</link><pubDate>Mon, 08 Jan 2007 05:58:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:978345</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>0</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/978345.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=978345</wfw:commentRss><description>&lt;P&gt;Ainda que com um pouco de atraso (afinal, faz um certo tempo que eu não posto...), desejo a todos um feliz 2007!&amp;nbsp; Esse ano que entra, pretendo me aprofundar em mais algumas tecnologias Microsoft (.NET 3.0, em especial WCF e WPF) e, sempre que possível, estarei postando descobertas técnicas e outras novidades!&lt;/P&gt;
&lt;P&gt;Abraços a todos!&lt;/P&gt;
&lt;P&gt;Monique&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=978345" width="1" height="1"&gt;</description></item><item><title>Gerenciamento de Projetos &amp;#193;geis</title><link>http://thespoke.net/blogs/moniquelouise/archive/2006/12/05/974673.aspx</link><pubDate>Wed, 06 Dec 2006 03:48:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:974673</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>0</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/974673.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=974673</wfw:commentRss><description>Há quase dois meses tive a oportunidade de assistir a uma palestra sobre gerenciamento de projetos ágeis, com o Márcio Tierno, da Compuware. Um dos aspectos mais interessantes da metodologia diz respeito a estabelecer prazo e custo fixo, e ir priorizando as funcionalidades do projeto de acordo com as preferências do cliente.&amp;nbsp; Ou seja, a cada nova interação (detalhe: cada interação deve durar no máximo 2 semanas), é gerado um release funcional, para que o próprio cliente possa avaliá-lo (e se for o caso, propor mudanças) e decidir quais são as features a serem entregues na próxima iteração.&amp;nbsp; Obviamente, se houver mudanças, features de menor prioridade serão substituídas pelas mudanças.&amp;nbsp; O que ocorre de fato é que a lista original de funcionalidades projetada no início do projeto dificilmente é implementada, uma vez que várias funcionalidades foram sendo substituídas à medida que o cliente ia amadurecendo o entendimento do escopo.&amp;nbsp; Resultado: projeto entregue no prazo, no custo combuinado e com o escopo o mais próximo possível do desejado pelo cliente.&lt;br&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=974673" width="1" height="1"&gt;</description></item><item><title>Web Services Enhancements 3.0</title><link>http://thespoke.net/blogs/moniquelouise/archive/2006/12/05/974543.aspx</link><pubDate>Tue, 05 Dec 2006 10:35:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:974543</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>1</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/974543.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=974543</wfw:commentRss><description>&lt;P&gt;Eu estava validando a arquitetura para uma prova de conceito que envolve o uso de Web Services utilizando um canal seguro de comunicação.&amp;nbsp; Existem soluções antigas para esse problema, como a habilitação do uso de SSL na configuração do serviço no IIS, além de soluções in-house para criptografia de mensagens e passagem de tokens de autenticação (ex.: login/senha) no cabeçalho das mensagens SOAP.&amp;nbsp; Essas soluções, apesar de funcionarem, apresentam algumas limitações:&lt;/P&gt;
&lt;P&gt;- SSL é um protocolo que atua ponto a ponto, e não fim a fim. Isso significa que, havendo intermediários na comunicação cliente-servidor, a mensagem criptografada tem que ser descriptografada no intermediário, uma vez que uma nova seção SSL deve ser aberta a cada par de máquinas que se comuniquem.&amp;nbsp; Essa nova seção exigirá uma nova criptografia da mensagem, todo um processo de handshaking, etc.&amp;nbsp; Chamamos essa abordagem de "segurança a nível de transporte".&amp;nbsp; Nela, a segurança é totalmente delegada para o sistema operacional, havendo aí uma dependência de plataforma (apesar de que várias plataformas hoje em dia suportam SSL)&lt;/P&gt;
&lt;P&gt;- o uso de soluções in-house claramente apresenta problemas de interoperabilidade, uma vez que cada organização estará adicionando seus próprios headers, implementando suas próprias políticas "from scratch".&lt;/P&gt;
&lt;P&gt;Para solucionar os problemas acima, foi definido um conjunto de padrões: WS-*.&amp;nbsp; São vários padrões que se unem aos padrões já existentes para web services (SOAP, UDDI, etc.) para solucionar não apenas questões de segurança (autenticação, autorização, confidencialidade e integridade) mas também transações distribuídas, roteamento, envio de anexos binários, entre outros.&amp;nbsp; O WS-Security trata especificamente da parte de segurança, e implementa a chamada "segurança a nível de mensagem", o que significa que mensagem XML original é criptografada, com a flexibilidade de apenas partes dela poderem ser criptografadas, e tokens de autenticação são automaticamente anexados e criptografados, de forma transparente para o desenvolvedor.&amp;nbsp; Com isso não há nenhuma dependência em relação a plataforma.&lt;/P&gt;
&lt;P&gt;A implementação MS para esses padrões é o Web Services Enhancements, ou WSE, que já está na sua versão 3.0. Esse não é um produto novo, mas só agora tive a oportunidade de avaliá-lo em um cenário real.&amp;nbsp; O legal é que ele interopera com o Windows Communication Foundation.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;A explicação abaixo&amp;nbsp;está&amp;nbsp;desatualizada em relação às maiores facilidades que o&amp;nbsp;Windows Communication Foundation (WCF)&amp;nbsp;fornece para segurança de Web Services, mas são úteis caso você precise rapidamente implementar segurança em seus web services e ainda não tiver um domínio a cerca das novas features do .NET 3.0, ou mesmo se não estiver planejando migrar código já existente para usar o WCF.&lt;/P&gt;
&lt;P&gt;A título de exemplo da implementação de uma política de segurança para um web service, em geral são necessários poucos passos:&lt;/P&gt;
&lt;P&gt;Após instalar o WSE 3.0, automaticamente o plug-in para o Visual Studio é instalado. Dessa forma, para habilitar o WSE em um web service, basta selecionar com o botão direito do mouse o projeto onde está o web service e clicar em WSE 3.0 Settings.&amp;nbsp; A seguinte janela aparecerá:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.cin.ufpe.br/~mlbm/wse/ss1.JPG"&gt;&lt;/P&gt;
&lt;P&gt;Os check boxes exibidos devem ser marcados para que o WSE seja habilitado no projeto em questão.&lt;/P&gt;
&lt;P&gt;Vamos passar agora à definição de uma política de segurança.&amp;nbsp; Embora seja possível implementar políticas customizadas, o WSE já vem com um suporte pré-configurado a cenários comuns, a saber: autenticação com login/senha, certificado X.509, segurança integrada do Windows (autenticação via Kerberos), etc.&amp;nbsp; Vamor ver, por exemplo, o passo-a-passo para definir uma política com autenticação baseada em login/senha, com criptografia e assinatura digital das mensagens trafegadas.&lt;/P&gt;
&lt;P&gt;Na aba Security, escolha as opções "Enable Policy" e "Add" em "Edit Application Policy":&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.cin.ufpe.br/~mlbm/wse/ss2.JPG"&gt;&lt;/P&gt;
&lt;P&gt;O wizard de definição de política entra em cena, após ser solicitado que se digite um nome para a política.&amp;nbsp; Na primeira tela de configuração, é possível escolher se a política que está sendo definida é para um serviço ou para um cliente.&amp;nbsp; No nosso exemplo, estamos configurando a segurança de um serviço.&amp;nbsp; Ao mesmo tempo, podemos escolher o modo de autenticação desejado.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.cin.ufpe.br/~mlbm/wse/ss3.JPG"&gt;&lt;/P&gt;
&lt;P&gt;Também é possível definir já as políticas de autorização.&amp;nbsp; Basicamente, nomes de papéis e usuários são gerados no arquivo de polítca que será criado ao fim da execução do wizard (embora essa não seja uma opção muito segura - o ideal é que a sua aplicação faça uso de uma base de usuários e papéis).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.cin.ufpe.br/~mlbm/wse/ss4.JPG"&gt;&lt;/P&gt;
&lt;P&gt;Um passo bem importante é a definição do nível de proteção que se deseja.&amp;nbsp; Particularmente, quando estamos trabalhando com autenticação do tipo UsernameToken (login/senha), ao escolhermos&amp;nbsp; a opção None, o WSE assume que a mensagem será protegida por SSL.&amp;nbsp; Observação: o uso do SSL não é forçado pelo WSE.&amp;nbsp; Nesse caso, você precisa configurar seu web service para usar a segurança a nível de transporte.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.cin.ufpe.br/~mlbm/wse/ss5.JPG"&gt;&lt;/P&gt;
&lt;P&gt;Finalmente, é solicitado que se especifique qual certificado será utilizado para a parte de criptografia e assinatura digital.&amp;nbsp; Certificados digitais em geral contém duas chaves: uma pública, usada para criptografar a chave simétrica que será utilizada na criptografia e descriptografia das mensagens, e uma chave privada, conhecida apenas por aquele que receberá a mesagem, e que será responsável por descriptografar a chave simétrica.&amp;nbsp; Essa é a base de funcionamento dos certiciados X.509, por exemplo.&amp;nbsp; Essa é na realidade uma descrição auto-nível: a criptografia e assinatura digital de mensagens envolve um processo um pouco mais complicado de intercâmbio de chaves derivadas, quando utilizamos autenticação com login/senha. Chaves derivadas são, como o próprio nome diz, "derivadas" a partir da senha do cliente, e são elas as chaves simétricas a serem utilizadas nos mecanismos de criptografia e assinatura digital (no caso de assinaturas digitais, o hash da mensagem é que é criptografado).&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.cin.ufpe.br/~mlbm/wse/ss6.JPG"&gt;&lt;/P&gt;Ao fim do processo, uma tela de confirmação é exibida com as opçoes que você escolheu, e o wizard pode ser finalizado. Para usar a política, base usar o atributo [Policy("nome da política")] na classe do web service, depois de adicionar a referência à DLL Microsoft.Web.Services3. Caso os seus clientes também estejam utilizando WSE, eles também em geral seguirão um processo análogo para a habilitação do WSE (quando um proxy WSE será gerado) e definição da política de segurança. Para usar a política, é só chamar SetPolicy("nome da política") no proxy. Adicionalmente, pode ser necessário chamar métodos para anexar tokens de autenticação, dependendo de como a política foi configurada. Todo esse processo está bem documentado nos manuais e demos que vêm com o WSE. No caso dos clientes, é necessário que eles adquiram previamente uma cópia da parte pública do certificado do servidor. O WSE não suporta a obtenção dinâmica do certificado, tal qual ocorre no SSL. Um detalhe importante: o WSE vem com certificados digitais de teste, cujas instruções de instalação são incluídas na própria documentação. Mas para que esses certificados possam ser usados, é necessário que a opção "Allow test roots" tanto no servidor como no cliente. Também é importante lembrar que esses certificados não devem ser usados em ambiente de produção, tanto por questões de segurança como de performance. 
&lt;P&gt;&lt;IMG src="http://www.cin.ufpe.br/~mlbm/wse/ss7.JPG"&gt;&lt;/P&gt;Antes de finalizar este post, uma dica: o guia que está disponível para download em http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/wssp.asp.&lt;img src="http://thespoke.net/aggbug.aspx?PostID=974543" width="1" height="1"&gt;</description></item><item><title>Treinamento gratuito em .NET 3.0</title><link>http://thespoke.net/blogs/moniquelouise/archive/2006/11/13/972944.aspx</link><pubDate>Mon, 13 Nov 2006 18:10:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:972944</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>0</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/972944.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=972944</wfw:commentRss><description>Para que quiser conferir: https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=109340&lt;br&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=972944" width="1" height="1"&gt;</description></item><item><title>Centro XML transforma-se em Centro de Inova&amp;#231;&amp;#227;o Microsoft </title><link>http://thespoke.net/blogs/moniquelouise/archive/2006/11/07/972596.aspx</link><pubDate>Tue, 07 Nov 2006 16:05:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:972596</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>0</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/972596.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=972596</wfw:commentRss><description>&lt;P&gt;Segue uma notícia importante sobre o Centro de Inovação MS Recife...&lt;/P&gt;
&lt;P&gt;Fonte: &lt;A href="http://www2.portodigital.org/portodigital/imprensa/ultimasnoticias/38966;42313;0805;1653;8463.asp"&gt;http://www2.portodigital.org/portodigital/imprensa/ultimasnoticias/38966;42313;0805;1653;8463.asp&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=txt-esq-10-cinza&gt;&lt;FONT color=#556969&gt;Centro XML transforma-se em Centro de Inovação Microsoft&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;Os Centros de Inovação Microsot foram criados em 2001 - na época, ainda sob a denominação "Centros de Tecnologia XML" - para atuarem como elo de integração entre as instituições educacionais, governo, mercado privado e empresas de desenvolvimento e integração de tecnologia, com o objetivo de acelerar a adoção das novas tecnologias Microsoft.&lt;/P&gt;
&lt;P&gt;O Centro de Inovação Microsoft de Recife é a ramificação pernambucana desta iniciativa. Localizado noPorto Digital, ele conta com profissionais certificados e infra-estrutura composta de laboratórios, salas de reunião, salas de treinamento, servidores e estações de trabalho para atividades de capacitação profissional e transferência de tecnologia.&lt;/P&gt;
&lt;P&gt;O Centro de Inovação Microsoft de Recife é um centro de excelência em Tecnologia Microsoft. Seu propósito é difundir tecnologias Microsoft, como a Plataforma .NET, e orientar empresas, instituições acadêmicas e desenvolvedores em geral na adoção e melhor utilização dessas tecnologias com:&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; · &lt;STRONG&gt;Provas de Conceito (PoCs):&lt;/STRONG&gt;&amp;nbsp;projetos de software de menor escopo e duração, com média cinco semanas. O cliente, juntamente com o Centro de Inovação, define o problema a ser resolvido, que tipicamente consiste na validação de uma ou mais tecnologias Microsoft em um contexto específico. Uma semana para o treinamento desses colaboradores nas tecnologias a serem utilizadas também está incluida.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; · &lt;STRONG&gt;Adoption Labs:&lt;/STRONG&gt; treinamento prático sobre a migração de certas plataformas para tecnologias Microsoft, como por exemplo, VB 6.0 para VB .NET, PHP para ASP.NET, Java para C#, Delphi para C#, Oracle para SQL 2005, etc.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; · &lt;STRONG&gt;Palestras e Workshops:&lt;/STRONG&gt; eventos que visam promover a capacitação em tecnologias Microsoft.&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; · &lt;STRONG&gt;Acordos de Cooperação:&lt;/STRONG&gt; representam parcerias entre o Centro de Inovação com instituições acadêmicas ou ISVs (Independent Software Vendors). Através desses acordos, parceiros usufruem do apoio do Centro de Inovação Recife para a aplicação de tecnologias e ferramentas Microsoft a suas necessidades.&lt;/P&gt;
&lt;P&gt;O&amp;nbsp;Centro de Inovação Microsoft de Recife utiliza e incentiva o uso de metodologia Pro.NET, que reúne as melhores práticas de RUP, Microsoft Solutions Framework e metodologia ágeis, a exemplo do XP.&lt;/P&gt;
&lt;P&gt;O Centro de Inovação Microsoft de Recife já desenvolveu projetos de prova de conceito com as seguintes instituições:&amp;nbsp; Banco BGN, WHITec, Qualiti Software Processes, Centro de Informática - UFPE, MidiaVox, Ação Informática, WPD, CIEE, Inteligência Informática, ATI e Strive.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Centro de Inovação Microsoft de Recife.&lt;BR&gt;&lt;/STRONG&gt;Endereço: Rua do Apolo, 181, 1º. andar.&lt;BR&gt;Fones: 81 34198137/8134.&lt;BR&gt;Contato: Monique Monteiro - Gerente de Projetos.&amp;nbsp; &lt;BR&gt;E-mail: &lt;A href="mailto:monique@qualiti.com.br"&gt;&lt;FONT color=#993333&gt;monique@qualiti.com.br&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=972596" width="1" height="1"&gt;</description></item><item><title>Nova fam&amp;#237;lia de certifica&amp;#231;&amp;#245;es Microsoft</title><link>http://thespoke.net/blogs/moniquelouise/archive/2006/11/07/972570.aspx</link><pubDate>Tue, 07 Nov 2006 08:36:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:972570</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>1</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/972570.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=972570</wfw:commentRss><description>&lt;P&gt;Apesar de não ter havido a divulgação esperada, foi lançada em março deste ano a nova família de certificações Microsoft, que consiste basicamente em três níveis:&lt;/P&gt;
&lt;P&gt;1- Microsoft Certified Technology Specialist: certificação voltada para tecnologias específicas&lt;/P&gt;
&lt;P&gt;2- Microsoft Certified IT Professional OU Microsoft Certified Professional Developer: certifica o candidato em uma "profissão", ou seja, avalia um conjunto de habilidades.&amp;nbsp; As duas certificações estão no mesmo nível: a primeira é mais pra quem tem perfil de infra, e a segunda para nós desenvolvedores.&amp;nbsp; Exige como pré-requisito o Certified Technology Specialist e requer renovação periódica.&lt;/P&gt;
&lt;P&gt;3- Microsoft Certified Architect: envolve um processo rigoroso de avaliação por parte de outros arquitetos, e em geral são exigidos 10 anos de experiência&lt;/P&gt;
&lt;P&gt;Como a MS Certified Technology Specialist é obrigatória para quem quer seguir para os outros níveis, vamos a mais alguns detalhes sobre ela:&lt;/P&gt;
&lt;P&gt;- Em primeiro lugar, vocês escolhe em qual tecnologia pretende se tornar especialista.&amp;nbsp; As tecnologias disponíveis atualmente são:&lt;/P&gt;
&lt;P&gt;.NET 2.0 Web Applications: Envolve&amp;nbsp;2 provas:&amp;nbsp;Application Development Foundation, que visa a avaliar o seu conhecimento a respeito do framework .NET 2.0, APIs, etc.&amp;nbsp; Vários aspectos como coleções, Generics, segurança, threads, interface gráfica, I/O, entre outros, são focados.&amp;nbsp; A segunda prova é a Web-Based Client Development, que foca basicamente em desenvolvimento em ASP.NET (Web forms).&lt;/P&gt;
&lt;P&gt;.NET 2.0 Windows Applications: Também exige 2 provas: Application Development Foundation, que já citei no item anterior, e a Windows-Based Client Development. Como o próprio nome dá a entender, é voltada pra quem pretende se especializar em Windows Forms.&lt;/P&gt;
&lt;P&gt;.NET 2.0 Distributed Applications: Exige os exames Application Development Foundation e Distributed Application Development.&amp;nbsp; Essa cerficação é bem interessante, pois envolve Web Services, Remoting, Enterprise Services e Message Queuing.&lt;/P&gt;
&lt;P&gt;As outras certificações do nível MCTS são: SQL Server 2005, BizzTalk 2006, MS Office Live Communications Server 2005 e MS Windows Mobile 5.0 Applications.&amp;nbsp; A boa notícia é que, para cada uma delas, basta fazer uma prova.&lt;/P&gt;
&lt;P&gt;Os exames do&amp;nbsp;nível Professional avaliam escolhas, decisões de projeto, de forma a focar mais na maturidade profissional em relação a tecnologias Microsoft.&amp;nbsp;Para obter a certificação Professional, apenas um exame adicional é necessário, além do pré-requisito de ser MCTS.&amp;nbsp;&amp;nbsp; Na categoria Developer,&amp;nbsp;mais uma vez&amp;nbsp;existem três perfis:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Web Developer: tem como pré-requisito o MCTS em Web.&lt;/P&gt;
&lt;P&gt;Windows Developer: tem como pré-requisito o MCTS em Windows.&lt;/P&gt;
&lt;P&gt;Enterprise Developer: esse exigie que você seja MCTS em Web, Windows e Distributed Applications.&amp;nbsp; Certamente é o caminho mais longo, mas também agrego muita conhecimento.&lt;/P&gt;
&lt;P&gt;Maiores informações sobre o novo programa de certificações pode ser encontrado em: &lt;A href="http://www.microsoft.com/learning/mcp/newgen/default.mspx"&gt;http://www.microsoft.com/learning/mcp/newgen/default.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=972570" width="1" height="1"&gt;</description></item><item><title>Primeiro post</title><link>http://thespoke.net/blogs/moniquelouise/archive/2006/11/06/972552.aspx</link><pubDate>Tue, 07 Nov 2006 04:20:00 GMT</pubDate><guid isPermaLink="false">b2b995b1-9c1d-4d25-9f9c-28d53840b74c:972552</guid><dc:creator>MoniqueLouise</dc:creator><slash:comments>5</slash:comments><comments>http://thespoke.net/blogs/moniquelouise/comments/972552.aspx</comments><wfw:commentRss>http://thespoke.net/blogs/moniquelouise/commentrss.aspx?PostID=972552</wfw:commentRss><description>Olá,&lt;br&gt;&lt;br&gt;&amp;nbsp; criei este blog hoje para compartilhar com a comunidade descobertas, idéias e notícias sobre Engenharia de Software, .NET, Arquitetura de Soluções, Linguagens de Progrmaação/Compiladores&amp;nbsp; e tecnologia em geral!&amp;nbsp; Vamos às apresentações: trabalho no Centro de Inovação Microsoft Recife como Gerente de Projetos e Arquiteta de Software (nas horas vagas :), já que a equipe é pequena...).&amp;nbsp; Terminei este ano o mestrado em Linguagens de Programação com foco na Plataforma .NET, em um projeto bem legal, que envolvia implementar a linguagem Haskell no .NET.&amp;nbsp; Maiores detalhes em: www.cin.ufpe.br/~haskell/haskelldotnet.&lt;br&gt;&lt;br&gt;&amp;nbsp; Bem, para quem quiser me conhecer um pouco mais, eis minha página pessoal: www.cin.ufpe.br/~mlbm.&lt;br&gt;&lt;br&gt;Até breve,&lt;br&gt;&lt;br&gt;Monique&lt;br&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=972552" width="1" height="1"&gt;</description></item></channel></rss>