今回は Pingのサービス部分を実装。
前回作成したソリューションの「SilverlightPing.Web」プロジェクトにある IPing.cs を開き下記コードを追加する。
(実際には[OperationContract]の下のstring ExecutePing(string HostName); のみ)
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace SilverlightPing.Web { // メモ: [リファクター] メニューの [名前の変更] コマンドを使用すると、コードと config ファイルの両方で同時にインターフェイス名 "IPing" を変更できます。 [ServiceContract] public interface IPing { [OperationContract] string ExecutePing(string HostName); } }
次に Ping.svc.cs を開き、ExecutePingメソッドを実装する。
このメソッドはPingが成功すればIPアドレス、bytes, timeを文字列として返し、失敗した場合には”NG”という文字列を返すメソッド。
今回はエラー処理を実装していない。必要に応じて追加する必要がある。
(あくまでもSilverlightでPingをするという実験なので)
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace SilverlightPing.Web { // メモ: [リファクター] メニューの [名前の変更] コマンドを使用すると、コード、svc、および config ファイルで同時にクラス名 "Ping" を変更できます。 public class Ping : IPing { /// <summary> /// Pingを実行する /// </summary> /// <param name="HostName">Ping対象のホスト</param> /// <returns></returns> public string ExecutePing(string HostName) { System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping(); System.Net.NetworkInformation.PingReply reply; // Pingを送信 reply = ping.Send(HostName); // Pingが成功したか? if (reply.Status == System.Net.NetworkInformation.IPStatus.Success) return reply.Address.ToString() + ":bytes=" + reply.Buffer.Length.ToString() + " Time=" + reply.RoundtripTime.ToString() + "ms"; else return "NG"; } } }
Pingサービスの作成はこれで終了。
次に、作成したサービスを使用できるようにするため、「SilverlightPing」のプロジェクトにサービス参照を追加する。
「サービス参照の追加」ダイアログで[探索]ボタンをクリックして、先ほど作成したサービスを探し、「名前空間」に「PingService」と入力する。
「名前空間」に入力する名称は任意でよい。
次回はユーザーインターフェースの作成とPingの実行について記す。
Please follow and like us:
コメント
[…] 紹介 « [覚え書き] Silverlight で Pingするアプリを作る その2 […]