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
e[NȂECir Yahoo yV LINEf[^[Ōz500~`I
z[y[W ̃NWbgJ[h COiq@COsیI COze