Desde que comecei a trabalhar com Silverlight fiquei impressionado com a beleza e a usabilidade que ele traz para uma aplicação Web, umas das grandes vantagens de se usar Silverlight é que não precisamos nos preocupar com padrões estabelecidos por Browser’s uma vez que ele roda em um plugin que é obtido automaticamente quando você acessa o aplicativo, atualmente já existe plugin para Mac e Windows e esta sendo desenvolvido para Linux, também existe um projeto para Mobile que deve ser lançado junto com a versão do Windows Mobile 6.5.

Neste artigo estou utilizando:

Visual Studio 2008
msdn.microsoft.com/en-us/vstudio/aa700831.aspx

Expression Blend 3
www.microsoft.com/downloads/details.aspx

Microsoft Silverlight 3 SDK
www.microsoft.com/downloadS/details.aspx

Microsoft Silverlight 3 Tools for Visual Studio 2008 SP1
www.microsoft.com/downloadS/details.aspx

Após a instalação dos aplicativos acima nosso primeiro passo é criar o serviço WCF.

Dentre as diversas formas de hospedar um serviço WCF nós vamos hospedar no IIS criando um novo projeto chamado WCFSilverlight.Servico do tipo Service Application.

Vá em File -> New -> Projetct -> Visual C# -> Web -> WFC Service Application Coloque o nome da aplicação WCFSilverlight.Servico e o nome da Solução WCFSilverlight e clique em OK.

Apague os arquivos templates “IService1″, “Service1.svc” e “Service1.cs” que foram criados pelo Visual Studio.

Clique com o botão direito em cima do projeto no Solution Explorer e vá em Add -> New Item, selecione WCF Service e dê o nome de UsuarioService.

Edite o arquivo IUsuarioService.cs e o codifique da seguinte forma.

[csharp] using System.Runtime.Serialization;
using System.ServiceModel;

namespace WCFSilverlight.Servico
{
[ServiceContract] public interface IUsuarioService
{

[OperationContract] Usuario Autenticar(string login, string senha);

}

[DataContract] public class Usuario
{
[DataMember] public string Login { get; set; }

[DataMember] public string Senha { get; set; }
}

[/csharp]

Edite o arquivo UsuarioService.svc.cs e codifique da seguinte forma. (Neste momento estamos fazendo uma validação que poderia ser feita acessando dados em um banco)

[csharp]

namespace WCFSilverlight.Servico
{
public class UsuarioService : IUsuarioService
{
public Usuario Autenticar(string login, string senha)
{
//Aqui você Acessa o banco para validar as informações
if (login.Equals("admin") && senha.Equals("admin"))
{
return new Usuario
{
Login = login,
Senha = senha
};
}
return null;
}
}
}

[/csharp]

Abra o arquivo de configuração e certifique que o binding do endpoint do servico é basicHttpBinding.

[xml]

<endpoint address="" binding="basicHttpBinding" contract="WCFSilverlight.Servico.IUsuarioService">

[/xml]

Feito isso nosso servico WCF esta pronto para ser exposto e consumido. Pressione F5 para executar o aplicativo.

Agora vamos ao nosso próximo passo, Criar a aplicação cliente em Silverlight.

Vá no menu File Add New Project, selecione “Visual C#” e “Silverlight Application” dê o nome do novo projeto de WCFSilverlight.Cliente clique em OK

Após clicar em OK Irá aparecer a seguinte janela

Nessa janela o Visual Studio está te perguntando se você deseja que ele rode seu aplicativo Silverlight em uma aplicação web existente ou crie uma, nos vamos utilizar a mesma aplicação para hospedar o WCF e o Silverlight, entao neste caso, selecione a opção “Host the Silverlight application in a new or existing Web site in the solution”, depois selecione a opção WCFSilverlight.Service clique em OK.

Agora vamos criar nossa interface de login do usuário, para isso vamos utilizar o Expression Blend 3, clique com o botão direito em cima do arquivo MainPage.xaml.

Agora no Expression Blend 3 crie a interface para o usuário informar o login e a senha utilizando os controles TextBlock, TextBox, PassworkBox e Button que se encontram na ToolBar.

Dê o nomes aos componentes de txtLogin, txtSenha e btnOk respectivamente, dê 2 (dois) cliques sobre o botão OK para criar o Evento no codebehind.

Ou cole o código xmal a seguir no arquivo.

MainPage.xaml

[xml]

<UserControl x:Class="WCFSilverlight.Cliente.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" Height="396" Width="542" Background="Black">
<Grid x:Name="LayoutRoot" Background="White">
<TextBlock HorizontalAlignment="Left" Margin="197,138,0,0" VerticalAlignment="Top" Text="Login" TextWrapping="Wrap"/>
<TextBox Name="txtLogin" VerticalAlignment="Top" TextWrapping="Wrap" Margin="197,154,190,0"/>
<TextBlock HorizontalAlignment="Left" Margin="197,189,0,191" Text="Senha" TextWrapping="Wrap" d:LayoutOverrides="Height"/>
<PasswordBox Name="txtSenha" Margin="197,0,190,167" VerticalAlignment="Bottom"/>
<Button Name="btnOk" Click="btnOk_Click" Height="26" HorizontalAlignment="Right" Margin="0,0,190,137" VerticalAlignment="Bottom" Width="81" Content="Ok"/>
<Grid>
<UserControl>

[/xml]

MainPage.xaml.cs

[csharp]

using System.Windows;
using System.Windows.Controls;
using WCFSilverlight.Cliente.UsuarioServiceReference;
namespace WCFSilverlight.Cliente
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}

private void btnOk_Click(object sender, RoutedEventArgs e)
{
}
}
}

[/csharp]

Salve as Alterações e feche o Expression Blend 3.

Execute a aplicação no Visual Studio e copie o endereço do serviço para criar o service referente no projeto Silverlight.

No Solution Explorer clique com o botão direto no projeto Silverlight e sobre a opção “Add Service Reference” cole o endereço do serviço e clique sobre “Go” no NameSpace coloque o nome de UsuarioServiceReference e clique em OK.

No Evento Click do Botao faça a chamada remota.

MainPage.xaml.cs

[csharp]

using System.Windows;
using System.Windows.Controls;
using WCFSilverlight.Cliente.UsuarioServiceReference;
namespace WCFSilverlight.Cliente
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}

private void btnOk_Click(object sender, RoutedEventArgs e)
{
UsuarioServiceClient usuarioServiceClient = new UsuarioServiceClient();
usuarioServiceClient.AutenticarCompleted +=
(sender1, e1) =>
{
Usuario usuarioLogado = e1.Result;
if (usuarioLogado != null)
MessageBox.Show("Usuario autenticado com sucesso: "
+ usuarioLogado.Login);
else
MessageBox.Show("Usuario ou senha inválidos");
};
usuarioServiceClient.AutenticarAsync(txtLogin.Text, txtSenha.Password);
}
}
}

[/csharp]

Execute sua aplicação e boa sorte.

Clique aqui para fazer download do código fonte.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Preencha esse campo
Preencha esse campo
Digite um endereço de e-mail válido.
Você precisa concordar com os termos para prosseguir

Menu