Thursday, July 28, 2005

Excel e listas offline no WSS

Em conversa de café com algumas pessoas da Microsoft, fiquei a saber de uma feature interessante do WSS + Excel, nomeadamente da possibilidade de ter listas criadas e editadas no Excel sincronizadas com listas WSS, e em funcionamento offline.


Melhor ilustrar:


O primeiro passo é criar uma tabela no Excel 2003, como esta. A seguir cria-se uma lista no Excel, e escolhem-se os dados e indica-se que a lista tem cabeçalho. Depois de criada, é preciso publicar para o SharePoint, em Data > List > Publish List. Introduzem-se os dados de publicação, faz-se Next, confirmam-se os campos e depois Finish. Nesta altura o Excel vai criar a lista no WSS, e copiar para lá os dados do Excel, apresentando no final uma confirmação.


Depois disto, podemos ir verificar que no site/lista está tudo o que estava no Excel. Desligamos a rede, e vamos para o cliente recolher requisitos, bug reports, notas, apontamentos, etc. Voltamos ao escritório, e ou publicamos as nossas alterações, ou descartamos as alterações e actualizamos o Excel com o conteúdo da lista.


Voilá! Listas offline. :-)


jota

Tuesday, July 26, 2005

BizTalk 2006 CTP - Nota rápida

Um micro-post: na semana passada instalei numa VM o CTP do BizTalk 2006 que deram no TechEd EMEA, sobre uma versão do Bts2004 Sp1. A primeira coisa que se nota é que a instalação se fez num instante, com o instalador a ir buscar de forma automática todas as actualizações necessárias. Uma limpeza.


Depois de instalado, fiz alguma experiências muito simples, do tipo ler-de-pasta/escrever-para-pasta, e a melhoria das funcionalidades de gestão saltaram à vista: o novo conceito de aplicação, que agrupa vários artefactos BizTalk; o deployment (e redeploy) de soluções apenas com (Botão direito rato)->Deploy, e a nova consola de gestão.


Pode ser uma versão evolutiva, mas não deixa de ser muito interessante.

Friday, July 22, 2005

TechEd EMEA 2005 e Excepções

Uma das apresentações interessantes a que assisti foi do conhecido David Platt, "Exception Handling Best Practices". A sessão podia ter sido melhor, mas uma vez que o tratamento correcto de excepções é sempre um desafio, acabou por ser uma boa escolha  (numa outra sessão sobre transacções,  Jubal Löwy chegou a comentar que "nunca ninguém fez tratamento de erros a sério" - e depois provou-o).


Vou referir apenas duas curioridades de entre os temas que ele abordou, o "overthrowing" de excepções, e um possível problema de segurança relacionado com a forma como são tratadas.


Em relação ao Overthrowing, a apresentação foi ilustrada com um exemplo muito simples, o Int32.Parse. Mostrou uma pequena aplicação WinForms que comparava o desempenho do Int32.Parse com o do Int32.TryParse. O TryParse é uma novidade do .Net 2.0, e caso a string recebida não seja um valor numérico, devolve false em vez de gerar uma excepção. Comparando o desempenho de 100 execuções sequenciais de ambos os métodos, o Int32.Parse é ligeiramente mais rápido, como esperado.
Adicione-se 2% de erros, e o Int32.Parse passa a ter um desempenho muito inferior. E com 50% de erros, o teste passava a demorar muitos segundos. Muito ilustrativo, o exemplo. Ter muita atenção a isto, e em situações que - em termos relativos - sejam frequentemente geradas excepções, deve equacionar-se fortemente a realização de testes que as evitem.


A segunda curiosidade é um problema de segurança relacionado com uma funcionalidade do VB.NET apenas, os "Exception Filters", funções devolvem bool e são invocadas para o runtime determinar se um determinado handler deve realmente tratar uma excepção. Sabendo-se isto, veja-se o seguinte exemplo (que retirei daqui):

WindowsImpersonationContext ctx = identity.Impersonate();
try { DoWork(); } finally { ctx.Undo(); }

Se tivermos este código numa biblioteca de classes, e for gerada uma excepção em "DoWork()", o runtime vai percorrer o call stack à procura de um Exception Handler. Alguém que esteja a utilizar a nossa biblioteca, em VB.NET, e desenvolva um Exception Filter, nesse Exception filter vai estar a executar código no contexto do utilizador "impersonado"... o que pode não ser o pretendido se este tiver permissões elevadas. E como esta, existem outras situações em que se podem gerar problemas de segurança.
Recorde-se que o finally só vai ser executado na segunda vez que o runtime percorre o call stack...


Não sei se isto é novidade para vocês, era para mim. :-)


jota


Ps: a propósito de segurança, foi publicada a primeira versão do "Web Services Security Patterns", um novo conjunto de recomendações. Inclui cenários de Intranet e Intranet, formas de autenticação e brokering, etc. Muito interessante, e disponível em Word e CHM. Está no workspace de Service Orientation Patterns.

Tuesday, July 12, 2005

Service Orientation - Reading list

O passar dos meses tem permitido materializar mais concretamente o que significa afinal Service Oriented Architectures ou Service Orientation (ou ainda, na variante Microsoft, Connected Systems).


Seleccionei abaixo as referências que achei mais interessantes no que respeita a este tema. Notar que estas são essencialmente práticas, que sei ter deixado muito de fora, e que me estou a focar na visão Microsoft. Seja como for, enjoy.


Architecture Insights from Tech-Ed 2005
Scott Bellware
Resumo interessante de várias apresentações do TechEd 2005 nos EUA.


Autonomous Services and the New Information Architecture
Stu Charlton


Dealing with the "Melted Cheese Effect"
Maarten Mullender, Microsoft
Esta série promete...


Contract-First Service Development e Techniques for Contract-First Development
Aaron Skonnard (Service Station, MSDN)
Muito concreto e com exemplos, foca no Contract-First, a produção do contrato como primeira fase de desenho, em alternativa ao Code-First.


Note on Distributed Computing
Samuel C. Kendall, Jim Waldo, Ann Wollrath e Geoff Wyant, Sun
Excelente artigo, mostra como é que se podem fazer mal Web Services (por voltas e voltas).


"SOA" doesn't really exist, does it?
Clemens Vasters
Desenhar arquitecturas SOA é o mesmo que desenhar outras arquitecturas. Por isso o A em SOA está a mais. Falemos de Service Orientation. Agrada-me a visão dele.


To Couple of not to Couple
Gregor Hohpe
O Hohpe resumiu, no TechEd, SOA como Loose Coupling e  Composição de Serviços.


Web Services Competency Workshop (in a Box)
Beat Schwegler
Deu uma Workshop em Lisboa muito interessante sobre este assunto, mesmo se focada apenas em Web Services, e nos seus problemas de versionamento, extensibilidade, e mapeamento para uma camada O.O.


Web Services Contrat First (WSCF)
Christian Weyer
O WSCF traz ao desenvolvimento em .Net o que já tinha quem desenvolve em BizTalk. Infelizmente, o VS.Net 2005 não vai tornar a tool obsoleta.


Hidden SOA Challenges (adicionado a 02-08-2005)
Paul Clarke
Artigo que levanta alguns pontos muito interessantes sobre SOA implementados sobre Web Services, nomeadamente sobre a facilidade com que se desenvolvem e invocam WS's, o que facilita a proliferação (descontrolada) de ligações entre sistemas. A solução sugerida passa pela necessidade de ter service governance, mas não resolve tudo. Uma questão sem respostas triviais.


E a terminar, é claro, os 4 tenets do Don Box, que apesar de interessantes e de ainda aparecerem nos slides da MS sobre o tema, não são a bíblia (afinal, ele mesmo diz que "The term SOA will have been beaten to death and the software industry will invent or recycle some equally vague term to replace it.")


jota

Sunday, July 10, 2005

TechEd EMEA 2005 e BizTalk Patterns Wizard

Acabadinho de chegar do TechEd em Amsterdão, com muitas coisas na bagagem para estudar e investigar (incluindo o primeiro build público do BizTalk 2006), de que postarei mais tarde, deixo por agora um link para um wizard de alguns patterns para BizTalk publicado por Jon Flanders (de quem vi duas apresentações, a primeira estes patterns, a segunda sobre "advanced orchestration design").


O setup instala 4 tipos de projectos no VS2003, numa pasta chamada "Pattern Templates". Os 4 templates são os seguintes:



  • FIFO - processar mensagens na ordem em que chegam;

  • Asynchronous Agregator - envio de várias mensagens, e processamento de respostas à medida que vão chegando, assíncronamente;

  • Interrupter - solicitar interrupção de uma orquestração em execução;

  • Component Retry - extenção do mecanismo de retry existente para adapters à invocação de  componentes .Net.

jota

Saturday, July 2, 2005

Breaking Down the Software Development Roles

developer.com publicou, entre Março e Junho, uma série de artigos a descrever vários papeis intervenientes no processo de desenvolvimento de software, sumarizados nesta imagem. Sem entrar em discussões sobre metodologias, deixo os links para a série, que me pareceu interessante. O autor chama-se Robert Bogue.


Cracking the Code: Breaking Down the Software Development Roles
http://www.developer.com/mgmt/print.php/3490871


 Anatomy of a Software Development Role: Subject Matter Expert
http://www.developer.com/mgmt/print.php/3496316


Anatomy of a Software Development Role: Functional Analyst
http://www.developer.com/mgmt/print.php/3500171


Anatomy of a Software Development Role: Solution Architect
http://www.developer.com/mgmt/print.php/3504496



Anatomy of a Software Development Role: Development Lead
http://www.developer.com/mgmt/print.php/3507886


Anatomy of a Software Development Role: Developer
http://www.developer.com/mgmt/print.php/3511566 


Anatomy of a Software Development Role: Quality Assurance
http://www.developer.com/mgmt/print.php/3515426


Anatomy of a Software Development Role: Deployment
http://www.developer.com/mgmt/print.php/3519186


Nota: apesar de serem links para as versões de impressão, alguns artigos têm o texto dividido em duas páginas.


jota

Developing Integration Solutions with BizTalk Server 2004

Este whitepaper já foi publicado em Março, mas não deixa de me surpreender pela quantidade de informação valiosa que contém, especialmente para quem inicia um projecto de raiz. A saber, inclui aspectos como regras de nomenclatura, organização de pastas, ambientes de desenvolvimento, divisão de projects/solutions por elementos da equipa (suponho que o conceito de Aplicação do BizTalk 2006 venha tornar isto mais natural), interação com source safe, deployments (apesar de não referirem a solução de Charles Young...), debug (até o System.Diagnostics.Debug.WriteLine é mencionado!). A abrir há uma abordagem possível ao planeamento de desenvolvimentos com BizTalk que é simultaneamente simples e interessante. Recomendo vivamente, porque as lições que aqui estão poupam muitos dores de cabeça.


Descarregar aqui.


Ps: Para quem tem interesse e segue a área de Integração, uma pequena chamada de atenção para a aquisição da SeeBeyond pela Sun Microsystems. A SeeBeyond tem uma solução de integração (EAI) baseada em messaging, em vários aspectos semelhante ao BizTalk, com cerca de 2000 instalações no mundo todo (o BizTalk terá cerca de 4000, em todas as versões), mas mais próxima do mundo Java e constituindo-se agora na solução de integração que faltava à Sun. Mais informações.


Vemo-nos em Amsterdão :-)


jota