Ana Sayfa
Forumlar
Hakkımızda
Yükleniyor. Lütfen bekleyin ...
Kategoriler
ASP.NET
C# & VB.Net
Visual Studio ve Araçlar
Sharepoint
.NET Framework
SQL Server
Mobil Teknolojileri
Dynamics
Silverlight
İş Zekası
Windows Embedded Sistemler
Yazılım Mimarisi
Yazgeliştir
Yazar olmak ister misiniz?
Forumlar
Kitap Önerileri
Haberler
Yazarlar
İpuçları
Görüşleriniz
Hakkımızda
İstatistikler
En son kayıt olan üye:
koliko
Şuanki online üyeler (
0
) :
Silverlight Kategorisi
»
Silverlight 3 Beta - Lokal Mesajlaşma (Local Messaging)
Silverlight 3 Beta - Lokal Mesajlaşma (Local Messaging)
Print Versiyonu
Yazar:
Sem Göksu
Tarih:11.04.2009
Puan:
4,4
(Oy Kullanan:
5
)
Okuma Sayısı:
687
Makaleyi İşaretle
Makale Özeti
Merhaba arkadaşlar, bu makalemizde Silverlight 3 Beta ile birlikte gelen Lokal Mesajlaşma (Local Messaging) işleminin nasıl yapıldığını inceleyeceğiz.
Paylaşım
Makale
Silverlight 3 Beta ile birlikte gelen Local Messaging(Lokal Mesajlaşma) özelliği ile iki Silverlight uygulaması arasında iletişim kurup birbirlerine mesajlar göndermesini sağlayabiliyoruz. İster bir sayfada ki iki Silverlight uygulaması arasında, ister sekmeler(tab) arasında ki sayfaların içerisinde yer alan Silverlight uygulamalarında ve istersek farklı browserlar da bulunan Silverlight uygulamalarının birbirleriyle haberleşmesini sağlayıp buna bağlı olarak çeşitli işlemler yapıp birbirleri arasında veri alışveriş yapabiliyoruz. Yani Internet Explorer da çalışan bir Silverlight uygulaması, Safari de çalışan Silverlight uygulamasına bir mesaj gönderebiliyor. Safari de çalışan uygulama da bu mesaja bağlı olarak işlemler yapabiliyor. System.Windows.Messaging namespace’i altında mesaj göndermek ve mesajı almak için 2 sınıf var. Mesajı göndermek için LocalMessageSender
,
Mesajı almak için
LocalMessageReceiver sınıfını kullanıyoruz.
Yeni bir Silverlight uygulaması oluşturalım. Bu uygulama bizim için başka bir uygulama ile iletişim kurup o uygulamaya mesaj gönderecek. Bu uygulama içinde bir TextBox ve bir de Button olsun. Butona bastığımızda TextBox’a girilen bilgiyi diğer uygulamaya göndereceğiz.
[XAML]
<
UserControl
xmlns
=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns
:
x
=”http://schemas.microsoft.com/winfx/2006/xaml”
xmlns
:
mc
=”http://schemas.openxmlformats.org/markup-compatibility/2006”
x
:
Class
="Silverlight30LocalMessaging.MainPage"
Width
="400"
Height
="300">
<
Grid
x
:
Name
="LayoutRoot"
Background
="White">
<
TextBox
x
:
Name
="txtMessage"
Margin
="82,86,86,0"
VerticalAlignment
="Top"
Text
=""
TextWrapping
="Wrap"/>
<
Button
x
:
Name
="btnGonder"
Margin
="163,124,173,0"
VerticalAlignment
="Top"
Content
=" Gönder"/>
</
Grid
>
</
UserControl
>
Butona tıklandığında mesaj gönderme işlemini yapacağız, bunun için ilk olarak Click eventini oluşturalım. Bu Event içinde mesajı gönderebilmemiz için postaci isminde
LocalMessageSender
nesnesi oluşturalım. LocalMessageReceiver nesnesinin SendAsync metodunda alıcıya göndereceğimiz bilgiyi bildiriyoruz. Mesaj gönderildiğinde tetiklenen SendCompleted isminde bir event var. Bu eventinin eventargument’in Response özelliği ile mesajı alanın bize gönderdiği cevabı alabiliriz.
[C#]
namespace
Silverlight30LocalMessaging
{
public
partial
class
MainPage
:
UserControl
{
public
MainPage()
{
InitializeComponent();
// Button için Click Eventini oluşturalım.
this
.btnGonder.Click +=
new
RoutedEventHandler
(btnGonder_Click);
}
void
btnGonder_Click(
object
sender,
RoutedEventArgs
e)
{
// Local Messaging özelliğini kullanabilmemiz için System.Windows.Messaging namespace’i altında yer alan Local MessageSender sınıfını kullanıyoruz. Yapıcı metotda alıcı için bir isim belirtiyoruz.
System.Windows.Messaging.
LocalMessageSender
postaci =
new
System.Windows.Messaging.
LocalMessageSender
(
"Adres"
);
// Gönderilecek olan mesajı SendAsync metodu ile gönderiyoruz.
postaci.SendAsync(txtMessage.Text);
// Mesaj yerine gettiğinde çalışacak olan eventi oluşturalım.
postaci.SendCompleted +=
new
EventHandler
<System.Windows.Messaging.
SendCompletedEventArgs
>(postaci_SendCompleted);
}
// Mesaj yerine gettiğinde çalışacak olan event. Mesajı alan silverlight uygulaması geriye bir yanıt gönderebilir, e.Response özelliği ile alıcının bize yolladığı bu yanıtı verir.
void
postaci_SendCompleted(
object
sender, System.Windows.Messaging.
SendCompletedEventArgs
e)
{
MessageBox
.Show(e.Response);
}
}
}
Mesajı gönderdik, mesajı alacak bir alıcı yani başka bir Silverlight uygulamasına ihtiyacımız var. Bunun için bir Silverlight uygulaması daha oluşturalım. Bu uygulamada sadece TextBlock olsun. TextBlock kontrolünün text özelliğinde gönderilen mesajı görüntüleyeceğiz.
[XAML]
<
UserControl
x
:
Class
="Silverlight30LocalMessagingAlici.MainPage"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns
:
x
="http://schemas.microsoft.com/winfx/2006/xaml"
Width
="400"
Height
="300">
<
Grid
x
:
Name
="LayoutRoot"
Background
="White">
<
TextBlock
x
:
Name
="tbAlici"
FontSize
="20"
HorizontalAlignment
="Center"
VerticalAlignment
="Center" ></
TextBlock
>
</
Grid
>
</
UserControl
>
Uygulama çalıştığında Mesajları alabilmek için alici adında
LocalMessageReceiver
nesnesi oluşturalım. LocalMessageReceiver nesnesinin gönderilen mesajları alabilmesi için Listen metodunu çağırmamız gerekir. Uygulamaya Mesajlar asenkron olarak gelecektir, Mesaj geldiğinde haberdar olabilmemiz için MessageReceived isimli bir event var. Bu event ile gelen mesajı alıp, mesajı gönderene cevap gönderebiliriz. Gelen mesajı almak için MessageReceived eventinin argümanları arasında Message isimli bir özellik var. Mesajı gönderene cevap göndermek için de Response özelliğini kullanabiliyoruz
[C#]
namespace
Silverlight30LocalMessagingAlici
{
public
partial
class
MainPage
:
UserControl
{
public
MainPage()
{
InitializeComponent();
// Uygulama çalıştığında çalışacak olan event.
this
.Loaded +=
new
RoutedEventHandler
(MainPage_Loaded);
}
void
MainPage_Loaded(
object
sender,
RoutedEventArgs
e)
{
// Uygulama çalıştığında mesajın alınabilmesi için LocalMessageReceiver nesnesini oluşturalım. Yapıcı metodunda gönderen tarafında bildirilen adresi bildiriyoruz.
System.Windows.Messaging.
LocalMessageReceiver
alici =
new
System.Windows.Messaging.
LocalMessageReceiver
(
"Adres"
);
// Alıcıyı mesajları alabilmesi için açıyoruz. Alici dinlemeye başladı…
alici.Listen();
// Mesaj geldiğinde çalışacak olan eventi oluşturalım.
alici.MessageReceived +=
new
EventHandler
<System.Windows.Messaging.
MessageReceivedEventArgs
>(alici_MessageReceived);
}
void
alici_MessageReceived(
object
sender, System.Windows.Messaging.
MessageReceivedEventArgs
e)
{
// Mesaj geldi, EventArgument’de Response isimli bir özellik var. Bu özellik mesajı gönderene bir yanıt gönderiyor.
e.Response =
"Teşekkürler, Mesaj alındı !"
;
// EventArgument’in Message özelliği bize gönderilen mesajı veriyor.
tbAlici.Text = e.Message;
// EventArgument’in SenderDomain özelliği mesajı gönderen uygulamanın adresini veriyor.
// e.SenderDomain;
}
}
}
Şimdi uygulamalarımızı test edelim, iki uygulamayı da çalıştıralım.
Farklı browserlar da test edelim, Chrome’da mesajı gönderen uygulamayı çalıştıralım.
Bu makalenin de sonuna geldik başka bir makale de görüşmek üzere. Silverlight ile kalın ;)
Sem GÖKSU
www.semgoksu.com
|
www.yazilimgunlugu.com
sem.goksu@yazilimgunlugu.com
Kaynaklar
msdn.com
silverlight.net
Makaleyi nasıl buldunuz?
Makaleye puan vermek için üye girişi yapmanız gerekmektedir.
v2.4
Geri Bildirim (Feedback)
Site içerisinde yazılan tüm makalelerin yazım ve yayınlama hakkı aksi belirtilmediği sürece sadece yazarlara aittir.
Yazgelistir.Com Ekibi - 2006 -
Yazgelistir.com