[覚え書き] Silverlight で Pingするアプリを作る その2

今回は 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の実行について記す。

[覚え書き] Silverlight で Pingするアプリを作る その1

Silverlight では System.Net.NetworkInformation にあるPingクラスを使用することができない。
そこでWCFサービスを利用してPingクラスを使用できるようにしてみる。
まずは新規プロジェクトを作成する。
ここではソリューション名を「SilverlightPing」とした。

次に表示されるダイアログでは何も変更せずに[OK]ボタンをクリックする。

ソリューションエクスプローラで「プロジェクト名.Web」となっている方のプロジェクトにWCFサービスを追加する。
この例では「SilverlightPing.Web」というプロジェクトにWCFサービスを追加。
クラス名は「Ping」とした。

これで下準備は完了。
次回はコードを実装する。

[PowerShell V2 CTP3]PowerShellでC#

どうもご無沙汰しております。HIROです。 

今回は Add-Type コマンドレットを使用して、 PowerShellでC#のクラス直接利用する方法を紹介します。

Add-Type コマンドレットは V2 から搭載されるもので、他の言語のソースを直接PowerShell上で展開して使用できるようにします。

今回はC#のクラスをPowerShell上で文字列として定義し、利用してみたいと思います。

まずはヒア文字列を使用して変数 $source にC#のSampleClassを代入します。

続きを読む…