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; }
}
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;
}
}
}
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>
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)
{
}
}
}
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);
}
}
}
Execute sua aplicação e boa sorte.
Clique aqui para fazer download do código fonte.
Posts recentes
Categorias
- .Net (25)
- .Net Standard (2)
- .NetCore (3)
- Android (3)
- Arquitetura de Software (6)
- Asp.Net (6)
- C# (17)
- Dependency Injection (1)
- Entity Framework (3)
- Eventos (2)
- Fluent Interface (2)
- Gerenciamento de Projetos (1)
- IOS (3)
- NHibernate (4)
- ORM (5)
- Silverlight (3)
- Uncategorized (5)
- Visual Studio (10)
- WCF (5)
- Windows Azure (2)
- WPF (3)
- Xamarin (6)