
I’ve written this demo for a presentation two weeks ago, but I didn’t have a change to show it. I’ll show you how to dynamically generate a Silverlight application. Well, it is just a still image, but this way it is simple enough to show you the main idea.
Here is the look of the application. Each time you load the page it generates some random squares with random colors and positions.
From a common Silverlight application, here is the list of changes you have to do to get it working.
1. Create XAML generator (Page.xaml.php)
Create an PHP file which outputs XAML code. Take a look at this one. It has a function that generates a random RGB color with an Alpha value. It has also a function that generates a rectangle in XAML code based on some parameters. Using these functions the PHP script creates 150 squares with random position, size and color.
2. Change the XAML file reference (CreateSilverlight.js)
In the javascript file where the Silverlight Control is created you have to change the XAML reference to Page.xaml.php.It this CreateSilverlight.js file you can see how it looks.
3. Have some fun (Page.xaml.js)
I added some behavior to this application. When you click somewhere it changes between full-screen and window mode.
Conclusions
This is a simple example, but imagine what you can do. Things like connect to a database and generate some content, create parametrized animations, and so on. Just give it a try. You can download the whole demo here.
Dado o vasto conjunto de novas funcionalidades ao até agora chamado Silverlight 1.1, ainda em Alpha Stage, a Microsoft decidiu que não fazia sentido chamar versão 1.1 a um produto completamente diferente da versão 1.0. Portanto o que até agora era chamado Silverlight 1.1 passará a ser referido como Silverlight 2.0. A grande diferença nesta versão é que ao invés de Javascript é utilizado .NET como base para a programação do comportamento das aplicações.
Algumas funcionalidades referidas foram
WPF UI Framework: O Silverlight vai comportar uma maior fatia dos componentes do WPF. Vai também permitir databinding, e incluir suporte para templates e skinning.
Rich Controls: Como seria de esperar vão estar disponíveis mais controlos para simplificar a contrução das aplicações. Neste momento basicamente temos caixas de texto e reprodutores de multimédia. Esperam-se controlos como Datagrids, ProgressBar, TabControl, Checkbox, Radiobutton, etc.
Rich Networking Support: Suporte para comunicações em REST, POX, RSS, e WebServices. Vai ser também permitido o “Cross domain network access”. Ou seja, uma aplicação Silverlight pode beber recursos em domínios que não sejam o local.
Rich Base Class Library Support: Collections, IO, generics, threading, globalization, XML, local storage, etc. Como já se sabia o LINQ será suportado.

Vai haver um evento sobre o concurso Imagine Cup (edição 2008).
Além de um representante da Microsoft, vão falar concorrentes do IST da edição anterior, e vai haver uma sessão sobre Silverlight e Popfly.
Auditório A5 – IST-Taguspark
Quarta-Feira
28 de Novembro
15h00
No mesmo dia pelas 10 horas vai haver um evento semelhante no pólo da Alameda.
Agenda
15h00 – Imagine Cup 2008 (Vitor Santos, Microsoft Portugal)
Apresentação do maior concurso internacional para estudantes de tecnologia – O que é o Imagine Cup? Como posso participar? Quais as categorias existentes? E como decorrem?
15h45 – Team Sevric – Imagine Cup na 1ª Pessoa (João Severino e Ricardo Vieira, Instituto Superior Técnico)
Conhece um dos projectos finalistas da edição anterior do Imagine Cup. Ouve da boca de que quem já participou o que o concurso te pode proporcionar e aproveita os conselhos de quem chegou perto da vitória nacional!
16h00 – Microsoft Silverlight & Popfly (Bruno Silva, Instituto Superior Técnico)
Se o nome desta apresentação não te diz nada, ou muito pouco aproveita! Vem conhecer a nova proposta da Microsoft para a Internet do futuro. O mote é criar interfaces apelativas e funcionais.
Conto com a presença de quem estiver disponível. Apareçam!
Pois é! Como tinha anunciado há uns dias/semanas no blog hoje houve um evento da Microsoft no hotel Sheraton, em Lisboa. Este evento foi realizado à imagem do evento do Porto, mas no entanto a versão lisboeta apenas tinha uma track. Sempre facilitou a escolha (ou falta dela)
O evento começou com a intervenção da Cristina Carvalho (Microsoft Portugal). Realço 2 pontos da intervenção.
1º - Concurso de Gadgets 2007 Portugal - Faz uma daquelas coisas giras (e tantas vezes inúteis) para colocar na barra lateral do Windows Vista, ou na tua área personalizada do Windows Live. A ideia é ser original mas acima de tudo fazer algo útil para o maior número de pessoas possíveis. O jurí é composto pelos utilizadores,e os prémios vejam no site
2º WebCast 4 Share - Ciclos de webcasts disponíveis gratuitamente para visualização online e download. Preciso dizer mais? É uma questão de aproveitar.
A segunda pessoa a intervir foi o Pedro Rosa (Microsoft Portugal). Começou por divulgar o TechDays 2008. Será de dia 11 a 14 de Março, sendo o lançamento do Windows Server 2008, Visual Studio 2008 e SQL Server 2008 no dia 11 de Março. Foi ele que realizou a primeira sessão subjacente ao tema Visual Studio 2008 e .NET Framework v3.5, o que há de novo?. Confesso que deste evento era a sessão que menos me interessava por já ter visto uma análoga no TechEd Developers. Deixo a referência para o que escrevi na altura do TechEd sobre este tema aqui. Mesmo assim gostei imenso da sessão, pois foi diferente da “versão espanhola”
Foram feitas demonstrações de Silverlight e Popfly bem como LINQ, para aguçar o apetite para as sessões da tarde.
A sessão O que há de novo no SQL Server 2008 foi dada pelo Nuno Velho (Actual Training). Deixo de seguida a lista de algumas das novidades que foram expostas no que toca a este produto.
Nova instrução: MERGE. permite pegar nos dados de 2 tabelas para as consolidar numa só. Pode-se definir o comportamento do merge quando o registo existe nas 2 tabelas, apenas na de origem ou apenas na tabela de destino. É mais sintatic sugar do que outra coisa. Espero que já agora tenham optimizado o processo
Outo facilitador é a inserção dBruno Silva › Edit — WordPresse múltiplos registos num único comando insert (à imagem do mysql). INSERT INTO tbl_nome(campo) VALUES(’valor1′) (’valor2′) …
Passa-se a poder passar tabelas como parâmetro de Stored Procedures. Dentro das SPs a tabela é read-only e apenas pode ser definida como parâmetro de entrada (não de saída).
Resources Governor. Permite configurar por aplicação ou por regras específicas os recursos disponíveis para uma dada aplicação (ex:quantidade de memória e CPU).
Declarative Data Management - aplicação de políticas sobre a base de dados. Definir por exemplo que todas as tabelas com umas determinadas características devem começar por um prefixo TLB_. Existe um conjunto de objectos e atributos referentes às bases de dados e ao motor de bases de dados em si, bem como condições pré-definidas que podem ser usadas na construção das políticas.
Chage Data Capture - pode-se activar o logging de alterações na base de dados (inserção, edição e remoção de dados). Esta informação é guardada em tabelas extra. Futuramente o SQL Server incluirá um sistema de auditoria dos dados (exemplo: saber que utilizador alterou o quê e quando).
Data Compression - Compressão de dados. Pode-se não ter nenhuma, ter ao nível da linha ou da página de registos. Está prevista uma SP para calcular a percentagem de compressão, de forma a podermos tomar decisões sobre a aplicação de compressão. Atenção, como é óbvio estamos a trocar espaço em disco por tempo de processados em compressão/descompressão.
Mais um pormenor de sintatic sugar. UPDATE tabela SET campo+=10
Data Types - Novo tipo Filestream (ficheiros guardados em disco referenciados pela base de dados. Mas vão atrás quando se faz backup dela). O tipo Date passa a suportar valores desde 1-1-1 a 9999-12-31. O tipo time tem precisão de até 100 nano segundos. Novo tipo DateTimeOffset permite guardar qual o Offset GMT de uma data. Dados espaciais (coordenadas geográfias e geométricas) vem com um conjunto de funções para intersecção de rotas, áreas, etc.
A sessão O que é o LINQ foi apresentada pelo Luís Falcão (ISEL). Falou um pouco do LINQ to Objects, LINQ to SQL e LINQ to XML.
A sessão Desenvolvimento de Aplicações utilizando Silverlight foi apresentada pelo Nuno Godinho (Engifrota). A apresentação não trouxe nada de significativamente novo face à Expression European Designer Tour. Mas foi uma boa apresentação para quem não teve oportunidade de ir a este evento.
Por fim (the last but not the least) a sessão Serviços Live. Como criar aplicações utilizando os serviços Live foi dada pelo Pedro Rosa. Foi referido o BOOM que está a surgir do SaaS (Software as a Service) e de como os serviços Live fazem parte deste paradigma. Realço alguns serviços e respectivas funcionalidades.
Silverlight Streaming - a Microsoft aloja os teus vídeos juntamente com um player nos seus servidores, e apenas tens de colocar a referência onde o quiseres disponibilizar. 4Gb de alojamento gratuito para este tipo de conteúdos.
Windows Live Spaces Photo Control - Basicamente permite colocar num dado site um controlo com as fotos do teu Live Space. Podes escolher as fotos e passá-las para o teu site propriamente dito para serem processadas.
Windows Live ID - Facilita a vida aos utilizadores centralizando o processo de autenticação. Colocas o controlo no site, o login é feito nos servidores da Microsoft, e o teu site recebe um token respectivo ao utilizador. Com esse token consegues identificar o utilizador e potencialmente ter informação associada. No entanto passwords e nomes de utilizador não fazem parte das preocupações. Também é porreiro para poderes arrancar um site a partir do messenger já com a sessão iniciada!
Windows Live Contacts -Nada melhor do que um exemplo. Tens um site cheio de notícias, queres referenciar a notícia a um conjunto de amigos. Seleccionas de entre os teus contactos de messenger/e-mail (a partir de um controlo para o efeito) e envias somente essa informação para o site enviar os e-mails.
Windows Live Messenger - é possível colocar num site uma janela de conversação pública (ou mediante autenticação Live) para um contacto rápido de um visitante de um site ao responsável do mesmo. Tal pode ser usado como base para um Contact Center de uma empresa. Ou então para um tolo como eu que coloca no blog
O link está debaixo da minha foto de perfil. Lá podem também ver outra funcionalidade. A exibição de um ícone com o estado do contacto. Todas estas funcionalidade se encontram desligadas por omissão. Para a activar e aplicar no vosso site sigam as instruções em MessengerSays.spaces.live.com.
No final ainda deu para ver uma demonstração da utilização de um comando da Wii ligado ao PC para controlar uma aplicação com o Microsoft Virtual Earth.
Devo realçar algumas falhas no evento. Escassez de espaço foi uma delas. 3 pessoas sentadas de seguida e a do meio mal podia respirar… Nos coffee breaks era missão quase impossível chegar às bebidas ou aos tabuleiros. Bem, pelo menos é sinal de uma grande adesão
Outro problema notório foi a ligação à internet. Infelizmente já começa a ser hábito. No evento do Expression aconteceu o mesmo. Este problema recorrente prejudica a imagem dos produtos baseados na web que são apresentados. Alguns até podem ser lentos. Não discuto isso. Mas lentidão como vi hoje só pode ser fruto de uma ligação de má qualidade. Até porque já experimentei muita coisa em casa e não tive problemas de performance. No fundo tenho esperança que as pessoas ponham a mão na consciência e experimentem em casa antes de começar a dizer que os produtos são lentos. Se em casa forem lentos, então digam mal à vontade, porque então provavelmente têm razão.