SilverLight?
public class NetworkInformationHelper : INotifyPropertyChanged {
protected bool _IsNetworkAvailable = false;
public bool IsNetworkAvailable
{
get { return this._IsNetworkAvailable; }
protected set
{
if (this._IsNetworkAvailable != value)
{
this._IsNetworkAvailable = value;
this.OnPropertyChanged("IsNetworkAvailable");
}
}
}
public NetworkInformationHelper()
{
this.IsNetworkAvailable = NetworkInterface.GetIsNetworkAvailable();
NetworkChange.NetworkAddressChanged +=
new NetworkAddressChangedEventHandler(OnNetworkAddressChanged);
}
protected virtual void OnNetworkAddressChanged(object sender, EventArgs e)
{
this.IsNetworkAvailable = NetworkInterface.GetIsNetworkAvailable();
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handlers = this.PropertyChanged;
if (handlers != null)
handlers(this, new PropertyChangedEventArgs(propertyName));
}
}
SOAPをしない簡易なXML+HTTPインターフェイスを採用したWEBサービスREST(Representational State Transfer)WebClientクラスを利用してHTTP通信を行う。
WebClient client = new WebClient(); client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); client.OpenReadAsync(serviceURI, "/RESTfulService/SampleService.svc");
void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) {
if ((e.Error == null) && (!e.Cancelled))
{
XDocument xDoc = XDocument.Load(e.Result);
Dispatcher dispatcher = e.UserState as Dispatcher;
if (dispatcher != null)
{
if (dispatcher.CheckAccess())
this.UpdateContext(xDoc);
else
dispatcher.BeginInvoke(this.UpdateViewModel, xDoc);
}
}
else
{
//
base.OnCommandComplated(false, null);
}
}
WCF Data Service はRESTfulなサービスをラップして、データの送受信などの操作を簡単に行えるようにしたコンポーネントです。もちろんWebClientクラスを使用して、サービスを利用することができますが、LINQを使用するDataServiceQueryクラスを利用したほうが便利です。
サービス側はDomainServiceで構成され、クライアント側はDomainContextを利用してデータのやり取りを行います。
コメント:
0