Local Connection
1) 서로 다른 브라우저에서 실행되고 있는 실버라이트 애플리케이션의 통신에 사용.
2) 하나의 브라우저에서 실행되고 있는 실버라이트 애플리케이션의 통신에 사용.
LocalMessageSender와 LocalMessageReceiver의 두 가지 클래스를 제공합니다.
LocalMessageSender
보낼때 사용.
ReceiverDomain : 수신할 Receiver가 속한 도메인
ReceiverName : 수신할 Receiver의 고유 값
SendAsync() : 메시지를 전달하고자 할 경우 사용.
SendCompleted : 메시지가 전달된 경우 발생하는 이벤트
LocalMessageReceiver
받을때 사용.
NameScope : 같은 도메인상의 실버라이트에서 받을 것인지 다른 도메인상의 실버라이트에서 받을 것인지를 의미.
ReceiverName : LocalMessageReceiver의 이름
Listen() : 메시지 수신을 위해 사용하는 메서드.
MessageReceived : 메시지를 수신하면 발생하는 이벤트
전송 (LocalMessageSender)
MainPage.xaml
<Grid x:Name="LayoutRoot" Width="200" HorizontalAlignment="Center" VerticalAlignment="Center"> <Grid.RowDefinitions> <RowDefinition Height="30" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <TextBlock Grid.Row="0" Text="전달한 문장을 입력해 주세요" /> <TextBox x:Name="MyTextBox" Grid.Row="1" /> </Grid>
MainPage.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Messaging;
namespace LocalMessageSenderTest
{
public partial class MainPage : UserControl
{
private LocalMessageSender localMessageSender;
public MainPage()
{
InitializeComponent();
localMessageSender= new LocalMessageSender("MyLocalReceiver");
MyTextBox.TextChanged += new TextChangedEventHandler(MyTextBox_TextChanged);
}
void MyTextBox_TextChanged(object sender, TextChangedEvnetArgs e)
{
localMessageSender.SendAsync(MyTextBox.Text);
}
}
} 수신 (LocalMessageReceiver)
해당 솔루션에서 새 프로젝트를 추가합니다.
MainPage.xaml
<Grid x:Name="LayoutRoot" Width="200" HorizontalAlignment="Center" VerticalAlignment="Center"> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <TextBlock Grid.Row="0" Text="전달받은 문장은 다음과 같습니다" /> <TextBlock x:Name="MyTextblock" Grid.Row="1" Foreground="Blue" FontSize="15" /> </Grid>
MainPage.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Messaging;
namespace LocalMessageReceiverTest
{
public partial class MainPage : UserControl
{
private LocalMessageReceiver localMessageReceiver;
public MainPage()
{
InitializeComponent();
localMessageReceiver = new LocalMessageReceiver("MyLocalReceiver");
localMessageReceiver.MessageReceived += new EventHandler<MessageReceivedEventArgs>(localMessageReceiver_MessageReceived);
localMessageReceiver.Listen();
}
void localMessageReceiver_MessageReceived(object sender, MessageReceivedEventArgs e)
{
MyTextBlock.Text=e.Message;
}
}
}
이제, 위 두 프로젝트를 동시에 실행시키기 위해 솔루션 설정을 변경해야 합니다.
솔루션에서 마우스 오른클릭을 하여 메뉴에서 속성을 클릭합니다.
LocalMessageReseiverTest와 LocalMessageSenderTest의 작업을
'시작'으로 변경하고 확인을 누릅니다.
http://myifu.com/_study/silverlight/template_network_sender/
http://myifu.com/_study/silverlight/template_network_receiver/
Sender 브라우저에서 입력한 문자열이 Receiver 브라우저에서 출력되는 것을 확인할 수 있다.