Grande novidade do PDC - Silverlight 4

By rdorta at novembro 19, 2009 13:59
Filed Under: Arquitetura, Silverlight

Olá amigos,

Mais uma vez a Microsoft se supera no PDC 2009. Quem quiser um acompanhamento técnico legal do PDC 2009, sugiro o blog do Waldemir Cambiucci (ver no meu blogroll).

Agora falando sobre o que mais me interessa, Silverlight 4 vem aí e com features que eu sempre dizia que faltavam ao Silvelright quando comparado ao Flash. Ou seja… Flash Down…

Vamos direto ao link e depois vou comentar

http://silverlight.net/getstarted/silverlight-4-beta/

Primeiro ponto legal, a utilização do Visual Studio 2010.

Vamos aos Tools:

Silverlight 4 Beta Tools for Visual Studio 2010

Segundo ponto legal:

Blend for .Net 4

http://www.microsoft.com/downloads/details.aspx?FamilyID=6806e466-dd25-482b-a9b3-3f93d2599699&displaylang=en

A Documentação:

Online Silverlight 4 Beta Documentation

E agora minha visão sobre as novas features:

  • Impressão direta do Silverlight – YES WE CAN!!! muito bom!!!
  • Inclusão de um RichTextbox para exibição de HTML – Outra feature que fazia falta… Muito bom
  • DataGrid com Sort e Resize e Copy e Paste de linhas.
  • RIA Services
  • Melhorias no sistema de Out-of Browser.
  • Integração com periféricos: leitor de códigos de barra, webcam e outros..

Vou realziar alguns testes com a ferramenta em breve e posto mais comentários´

Até a próxima arqinovação.

Screen Casts sobre Prism

By rdorta at outubro 28, 2009 10:31
Filed Under: Arquitetura, Silverlight

No Channel 9 está disponível uma série de screencasts sobre Prism.

http://channel9.msdn.com/posts/mtaulty/Prism--Silverlight-Part-1-Taking-Sketched-Code-Towards-Unity/

image

Começa falando de diversas coisas legais de arquitetura como injeção de dependência com Unity e depois leva isso ao mundo do Silvelrlight utilizando Prism

image

 

Muito boa referencia para quem está começando a se aprofundar no mundo de Silverlight e WPF.

Até a próxima Arqinovação

Exibição de página para quem não tem o plugin do Silverlight instalado – Parte 1 - .Net

By rdorta at outubro 27, 2009 14:56
Filed Under: Arquitetura, Silverlight

Ainda vejo muitos sites por aí, sofrerem com a publicação de sites em Silverlight. Eu digo sofrerem porque na verdade são “sofríveis” para quem não tem o plugin Silverlight instalado.

Não culpo os usuários finais. Imaginem a situação, você entra em um site feito e silverlight e da de cara com:

image 

UOU!!! Que máximo!! Parece um vírus!!! Quem vai clicar nisso???? Ninguém!!!

No assistente do Extra.com utilizamos uma técnica simples mas que ficou muito legal.

Olhem a diferença:

image

Isso chama a atenção, mostra que vale a pena instalar o Silverlight para ver o que é isso, incentiva as pessoas a instalarem o plugin.

Como obter esse resultado? Simples… principalmente se sua aplicação for criada em .Net.

Basta utilizar a tag abaixo e colocar o html que você deseja. Em tempo, não se pode usar dentro dessa tag scripts, apenas html.

<asp:Silverlight Windowless="true" ID="Xaml1" runat="server" Source="SeuSilverlight.xap"
                    MinimumVersion="2.0.31005.0" Width="100%" Height="100%">
                        <PluginNotInstalledTemplate>
                                SEU HTML AQUI!!!!
                        </PluginNotInstalledTemplate>
</asp:Silverlight>

Portanto a grande chave é utilizar a tag  <PluginNotInstalledTemplate> em seu silvelright, colocando ali o html que deseja exibir para o usuário da aplicação.

Vamos ajudar nossos usuários a entender o que eles precisam fazer para ter uma excelente experiência com nossas aplicações Silverlight.

Até a próxima Arqinovação!!!

Silverlight 4 is coming!!!

By rdorta at outubro 27, 2009 14:38
Filed Under: Silverlight

Desde o mês passado, a Microsoft tem lançado alguns spoilers referentes ao Silverlight4.

Dois deles me chamaram a atenção:

1)  A incorporação de direitos autorais sobre streaming. Ou seja, o suporte a direitos de transmissão de vídeo vai ser nativo. Isso é muito interessante, principalmente quando pensamos em um futuro próximo onde as locadoras começarão a trabalhar em ambiente virtual, fornecendo a locação de filmes via Streaming.

2)  Multicas de vídeos!!! Isso vai ser legal. Você poderá criar aplicações de conferências onde o streaming é enviado simultaneamente a diversos endereços.

Enfim, a Microsoft me parece estar atacando o mercado de RIA com soluções para uma nova geração de aplicativos baseados em vídeos.

A concorrencia com o Flash em sites de propaganda ainda me parece uma causa perdida, porem em aplicações orientadas a negócio corporativo o Silverlight deve virar preferência em breve.

Fonte: http://news.cnet.com/8301-13860_3-10346668-56.html

Catálogo BlackBox – ASP.NET MVC na veia.

By rdorta at outubro 27, 2009 14:04
Filed Under: Arquitetura, MVC

Mais um projeto de inovação da Makesys está no ar.

O Catálogo on-line da blackbox está no ar utilizando todo o requinte de aplicações desenvolvidas em ASP.NET MVC. Melhores práticas de SEO, Url Rewriting. Vale a pena conferir!!!

http://www.catalogoblackbox.com.br/

image

Sobre o projeto

Desenvolvido utilizando tecnologias de ponta como ASP.NET MVC e jquery, acompanhei este projeto desde o seu levantamento até o seu acabamento. Solução muito interessante e que em breve será evoluída para um e-commerce. Acompanhem :)

Até a próxima Arqinovação!!!

Exclente aplicação em Silverlight – By Makesys

By rdorta at outubro 27, 2009 13:59
Filed Under: Silverlight

A equipe da Makesys e do Extra.com lançaram o Assistente de compras para computadores do Extra.com.

Vale a pena dar uma conferida:

http://www.extra.com.br/assistentecomputador.aspx

image

Sobre o projeto

Desenvolvido em Silverlight e utilizando serviços para obtenção de dados, o assistente de compras é um dos melhores projetos que eu já vi no Brasil. Foi um prazer desenhar e coordenar o desenvolvimento dessa aplicação.

Até a próxima Arqinovação!!!

Física com Silverlight: YES WE CAN!!! – By William Machado

By rdorta at outubro 22, 2009 09:37
Filed Under: Arquitetura, Silverlight

Olá pessoal, abaixo segue um tutorial muito bom do meu colega de Makesys Willian, que tem se dedicado aos estudo de Silverlight. A equipe da Makesys vem melhorado muito seu conhecimento em Silverlight. Show!!! Obrigado William!!!!

Você vai precisar dos seguinte arquivo para trabalhar com física no Blend:

PhysicsHelper.3.0.0.3.zip (3,60 mb)

Abaixo o código fonte final:

Silverlight_Carro_Fisica.zip (521,23 kb)

By William Machado:

Tutorial: Desenvolvimento em Silverlight 3 utilizando física

No mundo do desenvolvimento de aplicativos baseados na Web, os usuários estão exigindo experiências de aplicativos cada vez mais aprimoradas.

Este tutorial mostra como podemos criar uma aplicação simples em SilverLight utilizando as leis da física. No nosso caso será um carro.

Bom antes de começar vamos entender como funciona. Farseer Physics Engine é um motor de física 2D

que suporta varias plataformas como o XNA da Microsoft, o Silverlight, WPF. Uma das características do Farseer Physics Engine é a simplicidade que permite a criação de diversas aplicações e jogos dinâmicos.

o Farseer Physics Engine é projetado para controlar a posição e rotação de objetos.
No mundo real, as coisas se movem e giram devido as forças aplicadas e torques. Em Farseer, é a mesma coisa. Objetos representam as coisas do mundo real. As forças e torques são aplicados e os organismos reagem de acordo com as leis da física 2D.

Crie um novo projeto selecionando “Silverlight 3 Application”.

clip_image002

Mude o tipo do “LayoutRoot” de “Grid” para “Canvas”.

clip_image004

Adicione o controle “PhysicsControllerBehavior” no LayoutRoot

clip_image006

Ative a propriedade: “MousePickEnabled” para manipular os objetos da tala com o mouse

clip_image008

Agora ou você pode desenhar o carro no próprio Blend ou adicionar uma imagem, no meu caso eu desenhei o carro e adicionei a imagem da roda.

clip_image010

Agrupar as imagens em “Canvas”

clip_image012

Para utilizar o recurso de física temos que incluir a “FarseerPhysics.dll” em nosso projeto.

clip_image014

Agora o projeto deve ser compilado para que os controles de física sejam adicionados no Blend.

clip_image016

Os novos controles que foram adicionados:

clip_image018

Clique e arraste o controle “PhysicsObjectBehavior” nos objetos que terão massa, nesse caso utilizei três uma para o Carro(Path) e outros dois para as rodas(Canvas).

Obs.: aplicar o “PhysicsObjectBehavior” somente nos Canvas das rodas e não nas imagens.

clip_image020

Desenhe um “Rectangle” para ser o chão e aplique o controle de física “PhysicsObjectBehavior”, mas ative a propriedade “IsStatic” do “PhysicsObjectBehavior” para que seja um objeto estático.

clip_image022

Para fazer um “Join” das rodas com o carro precisamos de um objeto intermediário para que possamos utilizar o controle “PhysicsJointBehavior” para isso vamos criar um circulo no meio da roda.

clip_image024

Arraste e solte o controle no circulo.

clip_image026

As propriedades do controle devem ficar assim:

clip_image028

Para isso você pode simplesmente clicar aqui arrastar e soltar encima do carro:

clip_image030

Ok, depois de ter feito o “Join” das rodas com o carro vamos aplicar força na roda para simular o funcionamento motor do carro, para isso precisamos do controle “PhysicsApplyTorqueBehavior”.

Clique arraste e solte o controle encima da roda

clip_image032

Nas propriedades clique em “New”, na seguinte janela escolha o evento “PhysicsKeyTrigger” (para utilizar os eventos do teclado)

clip_image034

 

Selecione uma tecla para acionar o controle

clip_image036

Adicione um valor para “ToqueValue” ex: -5000 para que a roda gire para a esquerda

clip_image038

Repita o mesmo procedimento adicione mais um controle “PhysicsApplyTorqueBehavior”, mas com o valor de “ToqueValue” 5000 para que a roda gire para a direita

clip_image040

Salve a aplicação (CTRL + S) compile (CTRL + SHIFT + B) e execute (F5)

Pronto temos um carro utilizando as leis da física em Silverlight.

Toolkit para MVVM Com Silverlight.

By rdorta at outubro 05, 2009 11:47
Filed Under: Silverlight, Arquitetura

Muito bom!!!

Excelente toolkit para quem quer aprender MVVM e facilitar o desenvolvimento de aplicações WPF e Silverlight:

http://www.galasoft.ch/mvvm/getstarted/

Inclui código fonte.

[]´s

Até a próxima Arqinovação

Custom Loading no Silverlight

By rdorta at setembro 30, 2009 11:12
Filed Under: Silverlight

Olá amigos, já repararam que toda aplicação em Silverlight sempre tem o mesmo Loading? Esse loading vem do próprio Silverlight e por já existir dificilmente nós desenvolvedores mudamos essa animação.

Mas para os intrépidos designers que não se conformam com isso (inclusive o que trabalha comigo) segue abaixo a forma como você pode trocar seu loading e ainda por cima como você pode manipular objetos via Javascript, muito necessário quando você está utilizando Silverlight em páginas que não são criadas com .Net (aspx).

Abaixo segue o código HTML do Silverlight:

<script type="text/javascript" src="Splash/SplashScreen.js"></script> 
...
...
<object id="Xaml1" data="data:application/x-silverlight-2," 
type="application/x-silverlight-2" width="100%" height="100%"> ...
<param name="splashscreensource" value="Splash/SplashScreen.xaml"/>
<param name="onSourceDownloadProgressChanged" value="onSourceDownloadProgressChanged" />
 

Agora em sua aplicação crie uma página SplashScreen.XAML:

<StackPanel xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
VerticalAlignment="Center" Margin="0,100,0,0">
<Image Source="../Splash/slc-watermark.png"
Height="47" Width="343"
HorizontalAlignment="Center" VerticalAlignment="Center"
Margin="10" />
<Grid HorizontalAlignment="Center">
<Rectangle x:Name="rectBorder" StrokeThickness="1" Stroke="#FFC8C8C8"
Height="7" Width="200" HorizontalAlignment="Left"/>
<Rectangle x:Name="rectBar" Fill="#FFC8C8C8"
Height="7" Width="0" HorizontalAlignment="Left" />
</Grid>
</StackPanel>

 

E por fim, segue o código javascript para movimentar a barra de loading:

function onSourceDownloadProgressChanged(sender, eventArgs) {
var myHost = document.getElementById("Xaml1");
var rectBar = myHost.content.findName("rectBar");
var rectBorder = myHost.content.findName("rectBorder");
if(eventArgs.progress)
rectBar.Width = eventArgs.progress * rectBorder.Width;
else
rectBar.Width = eventArgs.get_progress() * rectBorder.Width;
}

 

Me perdoem amigos desenvolvedores por dar armas ao seus designers e fazer com que eles atormentem a vida de vocês, mas uma aplicação Silverlight bem feita envolve sempre um bom designer :)

Até a próxima Arqinovação!!!

Padrões de Arquitetura para Silverlight – MVVM (Model – View - ModelView)

By rdorta at setembro 17, 2009 12:11
Filed Under: Silverlight, Arquitetura

Neste post vou falar um pouco sobre o padrão MVVM e como utiliza-lo com Silverlight.

MVVM? É de comer?

rs. Não, não é nenhum xingamento e muito menos algo de comer.

MVVM ou Model View – ModelView é um design pattern que na minha opinião é o melhor patter para se desenhar aplicações em Silverlight.

Porque não utilizar outros Patterns mais conhecidos como MVC ou MVP?

No padrão MVP, o Presenter é responsável pela configuração e gerenciamento de estado de uma determinada view.

No padrão MVP o Controller tem um papel  parecido com o do Presenter.

Porém em Silverlight, a nossa camada de VIEW ou exibição contém um XAML que pode conter diversos Bindings, triggers, e gerenciamentos de estado, diferente das Views dos outros Patterns que são “burras” no Silverlight o XAML tem inteligência e vida própria.

Qual a solução?

O MVVM é um padrão derivado do MVP e do MVC, que foi disceminado pela comunidade de desenvolvimento WPF da Microsoft. A grande diferença é que apesar da ViewModel manipular e definir estados da View, a View pode declarativamente realizar bindings para propriedades da ModelView.

Separando melhor as camadas:

View = Composição de XAML e C# que manipula estados do XAML.
Model = Como as Models de MVC e MVP, define as chamadas de regras de negócio para exibição
ModelView = Camada que prepara os dados recebidos da Model para exibição no XAML.

Abaixo segue um gráfico para ilustrar o que disse acima:

fig01.gif

Hands On Mode ON

Para ilustrar melhor ainda o processo, vamos criar um MVVM Hello World em Silverlight:

No Visual Studio 2008 crie um novo projeto e permita que ele crie o projeto de testes:

image

Na sua Page.XAML, copie o código abaixo:

<UserControl x:Class="ExemploMVVM.Page"
    xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="400" Height="300">
    <Grid Background="White" ShowGridLines="True" x:Name="LayoutRoot">
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <TextBlock x:Name="txb1" Text="{Binding Nome}"></TextBlock>
        <TextBlock x:Name="txb2" Text="{Binding Idade}" Grid.Row="1" Grid.Column="0"></TextBlock>
        <TextBlock x:Name="txb3" Text="{Binding Sobrenome}" Grid.Row="0" Grid.Column="1"></TextBlock>
        <TextBlock x:Name="txb4" Text="{Binding Curso}" Grid.Row="1" Grid.Column="1"></TextBlock>
    </Grid>
</UserControl>

 

Agora vamos definir uma Classe do Tipo Aluno, para ser nosso objeto de transporte.

namespace ExemploMVVM
{
    public class Aluno
    {

        public Aluno(string pstrNome, string pstrSobrenome, int pintIdade, string pstrCurso)
        {
            this.Nome = pstrNome;
            this.Sobrenome = pstrSobrenome;
            this.Idade = pintIdade;
            this.Curso = pstrCurso;
        }

        private string gstrNome;
        private string gstrSobrenome;
        private int gintIdade;
        private string gstrCurso;

        public string Nome
        {
            get { return gstrNome; }
            set { gstrNome = value; }
        }
        public string Sobrenome
        {
            get { return gstrSobrenome; }
            set { gstrSobrenome = value; }
        }
        public int Idade
        {
            get { return gintIdade; }
            set { gintIdade = value; }
        }
        public string Curso
        {
            get { return gstrCurso; }
            set { gstrCurso = value; }
        }

    }
}

Agora vamos criar nossa View Model. Reparem que ela recebe uma interface IAlunoView e um Serviço para ser Rodado. Isso expande as possibilidade de utilização, sendo que você pode definir uma interface para serviços também, e dessa forma você pode popular n views com n serviços.

namespace ExemploMVVM
{
    public class AlunoViewModel
    {
        private IAlunoView view;  
        public string Nome{ get; set;}  
        public string Sobrenome{ get; set;}  
        public int Idade { get; set; }  
        public string Curso { get; set; }  
        private IAlunoService svcAluno;

        public AlunoViewModel(IAlunoView view, IAlunoService svcAluno)  
        {  
            this.view = view;
            this.svcAluno = svcAluno;  
            Initialize();   
        }  

        private void Initialize()  
        {
            var p = svcAluno.ObterAlunoCurso("Arquitetura");
            Nome = p.Nome;
            Sobrenome = p.Sobrenome;
            Idade = p.Idade;
            Curso = p.Curso;  
        }  

    }
}

E  por fim, o C# da nossa View:

namespace ExemploMVVM
{
    public partial class Page : UserControl, IAlunoView
    {

        private readonly AlunoViewModel vmm; 

        public Page()
        {
            InitializeComponent();
            vmm = new AlunoViewModel(this, new AlunoService());
            this.DataContext = vmm;  
        }
    }
}

Resumo da ópera

Resumindo, a grande vantagem de utilizar MVVM com Silverlight é que você pode aproveitar todo o poder de utlização de Bindings do XAML e ainda assim, criar um modelo de arquitetura onde você pode reutilizar a mesma regra de negócio(ViewModel e Model) com diversos designs diferentes(Views); No nosso caso, poderiamos tanto utilizar essa visualização dos quatro quadrados quanto fazer um CARD FLOW com os nomes e fotos dos alunos, quanto também criar uma visualização de grid com os dados dos alunos expostos.

Abaixo segue o código fonte que utilizei para esse exemplo.

ExemploMVVM.zip (782,28 kb) 

Abraços a todos e espero que possam usufluir desse modelo de arquitetura muito recomendado para aplicações em Silverlight.

Até a próxima Arqinovação!!!

 

Sobre mim

Ricardo Dorta

Ricardo Dorta

Arquiteto de sistemas da Makesys, atua na área de desenvolvimento de aplicações .NET há 5 anos.
MCP, MCAD e MCSD.