japan.internet.com The Internet & IT Network


RSSニュース検索
カテゴリ
> トップページ
> Webビジネス
> Eコマース
> Webファイナンス
> Webマーケティング
> パブリック
> Webテクノロジー
> 携帯・ワイヤレス
> Linux Today
> Linux Tutorial
> J.I.C.ブログ
キャリア
> 転職ならen
> 派遣ならen
> アルバイトならen
> IT求人情報
ヘッドライン
> 今日のヘッドライン
> 週間ヘッドライン
Special Link
> フォトコミュニティ
> ストックフォト
> クリップアート
> イラスト
> フェリカ
> Web2.0
> 写真
イベント&セミナー
> イベントカレンダー
> 書評「IT の耳」
> 出張・接待検索
> ニュースガジェット 注目
無料ニュースメール
> 新規登録
> 変更・解除
> オプトインメールの登録・変更・解除
インフォメーション
> パートナーサイト
転職ならエン
就職ならen
求人ならen
履歴書ならen
アルバイトならエン
CRM/SFAならオラクル
> グループ会社
株式会社アエリア
(株)サンゼロミニッツ
株式会社エアネット
> お問い合わせ
> 広告掲載について
> リンクについて
> 著作権について
> その他お問い合わせ
> 利用規約
> 個人情報保護方針
> 会社概要地図
デベロッパー 2005年12月20日 09:30
デベロッパー・バックナンバー
IEで.NET Windowsフォームコントロールをホストする

著者: Thiru Thangarathinam  オリジナル版を読む プリンター用 記事を転送
2005年12月20日 09:30 付の記事
海外internet.com発の記事
このエントリーを含むはてなブックマーク この記事をクリップ! Buzzurlにブックマーク Yahoo!ブックマークに登録 newsing it!

はじめに

 以前は、Webアプリケーションでリッチなクライアントサイド機能を提供するために、Web開発者はActiveXコントロールをよく使用していました。現在は、Microsoft .NET Frameworkを使用して、よりコンパクトで軽量、かつ安全性の高い、Internet Explorer内にホストできるオブジェクトを簡単に作成することができます。IE内に.NET Windowsフォームコントロールをホストすることにより、開発者はクライアントサイドWeb開発における多くの目標を達成できます。この記事では、Windowsフォームコントロールを作成し、Internet Explorer内にホストする方法を解説します。また、IE内でWindowsフォームコントロールを使用し、WindowsフォームコントロールからリモートWebサービスを呼び出すことによって、クライアントサイドでのリッチなユーザー体験を提供する方法も示します。さらに、.NETのセキュリティモデルを活用して、コントロールにシームレスで安全性の高い実行環境を提供する方法も解説します。

 Javaベースの言語でWebアプリケーションを開発したことがある人なら、Javaアプレットについてはよくご存知でしょう。Javaアプレットとは、簡単に言えば、Webブラウザ上で実行するために設計されている、小さなプログラムのことです。Javaアプレットは、ブラウザがアプレットタグの含まれたHTMLドキュメントを読み込むと実行されます。Webページ内のWindowsフォームは、このJavaアプレットと同じような方法で動作します。このアプローチでは、Windowsフォーム技術によって提供されるリッチクラスを使用してWindowsフォームコントロールを作成し、そのコントロールをWebページに組み込みます。ブラウザは、Webページを読み込むと、Windowsフォームコントロール内に含まれるコードも実行します。このことは、エンタープライズ規模のイントラネットまたはエクストラネットアプリケーションを配備する必要があり、ファットクライアントアプリケーションが提供するのと同様の動的でリッチなユーザー体験が必要とされるケースで、非常に役立つ場合があります。このモデルは、シンクライアントn階層アプリケーションと同じ配備および保守性の特性に基づいています。

 .NETの大きな特徴の1つは、Internet Explorerとのシームレスな統合です。たとえば、ユーザーを介することなく、IEからWindowsフォームコントロールをアクティブ化できます。これには何の登録作業も必要なく、.NET CLRが提供するコードアクセスセキュリティのすべての機能は依然として利用できます。

 Windowsフォームコントロールを作成する際には、Windowsフォームのクラス階層により提供されるすべての機能を利用できます。たとえば、ユーザーが入力したデータについて広範な検証を行うために、Windowsフォームコントロールの検証技法を使用することができます。同様に、フォームコントロールからリモートWebサービスを呼び出すこともできます。これらすべての技法を使用することにより、.NETプラットフォームを使用して、リッチで強力で動的な最新式のアプリケーションを作成することができます。

実装

 ここでは、簡単なWindowsフォームコントロールを作成し、Internet Explorer内にホストする方法を見ていきます。次のリストは、IE内でWindowsフォームコントロールをアクティブ化するための手順を示したものです。

  • Windowsフォームコントロールを作成する
  • Windowsフォームコントロールを識別するオブジェクトタグを含む、HTMLドキュメントを作成する
  • コントロールを適切にアクティブ化できるように、仮想ディレクトリを構成する
  • コードアクセス許可を構成する
  • コントロールを実行する

 では、上記の各ステップを詳しく見ていきましょう。

Windowsフォームコントロールを作成する

 このステップでは、「Hello World」メッセージをユーザーに表示する簡単なWindowsフォームコントロールを作成します。まず、次の画面に示すように、Visual C#で「HelloWorldControl」という名前のWindowsコントロールライブラリプロジェクトを作成します。

 プロジェクトを作成できたら、既定のユーザーコントロールをHelloWorldCtlという名前に変更します。ユーザーコントロールに、lblDisplayMessageという名前のラベルコントロールとbtnClickという名前のボタンを追加します。ユーザーがボタンをクリックしたときは、次のコードを実行して、ユーザーに簡単なメッセージを表示するようにします。

private void btnClick_Click(object sender, System.EventArgs e)
{
lblDisplayMessage.Text = "Hello World";
}

 コントロールを作成できたら、プロジェクトをコンパイルしてアセンブリを作成します。

HTMLページを作成する

 このステップでは、HTMLドキュメントを作成し、Windowsフォームコントロールをアクティブ化するために使用するオブジェクトタグを挿入します。HTMLページは次のようになります。

<html>
<body>
<p>Hello World Control<br> <br></body>
<object id="HelloWorldControl1"
classid="http:HelloWorldControl.dll#HelloWorldControl.HelloWorldCtl"
height="500" width="500" VIEWASTEXT>
</object>
<br><br>
</html>

 オブジェクトタグのclassid属性には、コントロールライブラリアセンブリへのパスとコントロールの完全修飾名を指定します。この完全修飾名は、コントロールクラスの名前だけでなくネームスペースを含むものにします。上記のコードからおわかりのとおり、アセンブリとコントロールの完全修飾名は#記号で区切ります。これら2つのパラメータの組み合わせは、コントロールを識別する一意識別子として働きます。コントロールはHelloWorldControl1という一意の名前によって識別されるので、コントロールに対してクライアントサイドスクリプトを書くことも可能です。

仮想ディレクトリを構成する

 HTMLページを作成できたら、「HelloWorldControlHost」という名前の仮想ディレクトリを作成し、そこにコントロール(「HelloWorldControl.dll」)とHTMLドキュメント(「HelloWorld.htm」)の両方を追加します。仮想ディレクトリの構成においては、仮想ディレクトリの実行アクセス権を[Scripts only]に設定することが重要です。実行アクセス権が[Scripts & Executables]に設定されている場合、コントロールは適切にアクティブ化されません。このことは、次の画面に示す仮想ディレクトリのプロパティウィンドウで確認できます。

コードアクセス許可を構成する

 このコントロールは、イントラネットサイト上にある場合は正しく実行されるでしょう。しかし、インターネットサイト上にあるコントロールを実行したい場合は、実行を許可するようにInternet Explorerを構成するか、セキュリティポリシーを変更する必要があります。そのためには、コントロールをホストしているページを信頼済みサイトゾーンとして設定します。目的のサイトを信頼済みサイトゾーンとして設定するには、IEの[Tools]メニューから[Options]を選択し、[Security]タブで[Trusted Sites]をクリックします。そして、[Sites]ボタンをクリックし、そのサイトをリストに追加して[OK]をクリックします。これでインターネットアクセス許可を設定したことになるので、次回そのページを閲覧するときからは、適切に実行されるようになります。

コントロールを実行する

 コントロールを実行するには、ブラウザを開き、そのコントロールをホストするHTMLページに移動するだけです。表示されたHTMLページの[Click Here]コマンドボタンをクリックすると、次の画面に示すように「Hello World」メッセージが表示されます。

 簡単なWindowsフォームコントロールを作成し、それをInternet Explorer内にホストする方法については解説したので、次に、Windowsフォームコントロールを使用してクライアントマシンから直接Webサービスにアクセスする方法を解説します。

WindowsフォームコントロールからWebサービスにアクセスする

 Windowsフォームコントロールの主な利点の1つは、クライアントマシンにリッチなユーザー体験を与えられることです。たとえば、クライアントマシンから直接Webサービスにアクセスし、ページを更新することさえなく、ユーザーに結果を表示することができます。この例を示すために、Webサービスを作成し、WindowsフォームコントロールからそのWebサービスを呼び出す方法を見ていきます。

Webサービスの作成

 まず、次の画面に示すように、Visual C#で「AuthorsWebService」という名前のASP.NET Webサービスを作成します。

 Webサービスを作成できたら、Webサービスクラスの名前をAuthorsServiceに変更します。その後で、AuthorsServiceクラスにGetAuthorsという名前のメソッドを追加します。GetAuthorsメソッドは次のようになります。

[WebMethod]
public DataSet GetAuthors()
{
    //Get the connection string from the configuration file
    string connString =
        System.Configuration.ConfigurationSettings.AppSettings["connectionString"];
    SqlConnection sqlConn = new SqlConnection(connString);
    DataSet dstAuthors = new DataSet("Authors");            
    SqlDataAdapter adapter = new SqlDataAdapter("Select * from Authors",sqlConn);        
    //Fill the Dataset with the results of the executed query
    adapter.Fill(dstAuthors,"Author");
    //Close and dispose the opened database connection
    sqlConn.Close();
    sqlConn.Dispose();
    //Return the Authors Dataset to the caller
    return dstAuthors;
}

 GetAuthorsメソッドのコードは単純です。まず最初に、「web.config」ファイルから接続文字列を取得します。接続文字列は、「web.config」ファイルのappSettingsセクションに、次のように記述されています。

<appSettings>
<add key="connectionString"
           value="server=localhost;uid=sa;pwd=thiru;database=Pubs">
       </add>
</appSettings>

 次に、接続文字列を引数として、SqlConnectionオブジェクトのインスタンスを生成します。その後で、実行するクエリとSqlConnectionオブジェクトを引数として、SqlDataAdapterオブジェクトのインスタンスを生成します。それから、SqlDataAdapterオブジェクトのFillメソッドを呼び出すことで、実行したクエリの結果をDataSetに格納します。最後に、すべてのリソースを解放し、Webサービスの呼び出し元にDataSetを戻します。これでWebサービスは作成できたので、次にWebサービスのクライアントアプリケーションを作成します。

Webサービスクライアントとして動作するWindowsフォームコントロールの作成

 今回のケースでは、WindowsフォームコントロールからWebサービスを呼び出したいので、次の画面に示すように、Visual C#で「AuthorsWebServiceClientControl」という名前のWindowsコントロールライブラリプロジェクトを作成します。

 プロジェクトを作成できたら、既定のユーザーコントロールをAuthorsControlという名前に変更します。ユーザーコントロールに、gridAuthorsという名前のDataGridbtnClickという名前のコマンドボタンを追加します。コマンドボタンのClickイベントに、Webサービスを呼び出すコードを記述します。その前に、Visual Studio .NETの[Add Web Reference]オプションを使用して、Webサービスへの参照を追加します。

 次の画面の[Add Web Reference]ダイアログボックスで、Webサービスの場所を入力し、[Enter]キーを押します。そして、[Add Reference]ボタンをクリックしてWebサービスへの参照を追加します。これは基本的にAuthors Webサービスのプロキシを作成する作業です。

 プロキシを作成できたら、次にWebサービスを呼び出すコードを追加します。これは、先ほど追加したコマンドボタンのClickイベントに対して行います。

private void btnClick_Click(object sender, System.EventArgs e)
{
    this.Cursor = Cursors.WaitCursor;
    AuthorsWebServiceProxy.AuthorsService authorsSvc = 
        new AuthorsWebServiceProxy.AuthorsService();
    gridAuthors.DataSource = authorsSvc.GetAuthors();
    this.Cursor = Cursors.Default;
}

 上記のコードでは、Webサービスプロキシクラスのインスタンスを生成してから、GetAuthorsメソッドを呼び出しています。DataGridコントロールのDataSourceプロパティに、Webサービスから戻されるDataSetを設定します。さて、ここでプロジェクトをコンパイルしてアセンブリを作成しましょう。このアセンブリを仮想ディレクトリに配置することができます。

HTMLページと仮想ディレクトリの作成

 このステップでは、先ほど作成したAuthorsWebServiceClientControlをホストするHTMLページを作成します。HTMLページのコードは次のようになります。

<html>
<body>
<p>Authors Display Control<br> <br></body>
<object id="AuthorsControl1"
classid="http:AuthorsWebServiceClientControl.dll#AuthorsWebServiceClientControl.AuthorsControl"
height="500" width="500" VIEWASTEXT>
</object>
<br><br>
</html>

 HTMLページを作成できたら、次に、コントロールだけでなくHTMLページをホストするのに使用できる仮想ディレクトリを作成する必要があります。仮想ディレクトリを作成できたら、HTMLページとコントロールを、仮想ディレクトリに対応付けられた物理フォルダにコピーします。これで、先ほど作成したHTMLページに移動すれば、コントロールをテストすることができます。HTMLページには、フォームコントロールの部品として1つのコマンドボタンがあります。このコマンドボタンをクリックすると、クライアントブラウザからWebサービスが呼び出され、DataGridにWebサービスの実行結果が表示されます。HTMLページからの出力は、次の画面のとおりです。

Windowsフォームコントロールをデバッグする

 コントロールをデバッグするには、次の手順を実行する必要があります。

  1. ブラウザを開き、HTMLページにリクエストを送ります。
  2. Visual Studio.NETを起動し、[Tools]メニューの[Debug Processes]を選択して、次の画面のダイアログボックスを開きます。
  3. [Processes]ダイアログボックスで、[IEXPLORE.EXE]を選択し、[Attach]ボタンをクリックします。[Attach]ボタンをクリックすると、次の画面のダイアログボックスが開き、デバッグしたいプログラムの種類を選択するよう求められます。このダイアログボックスで、[Common Language Runtime]がチェックされていることを確認し、[OK]をクリックします。
  4. 上記のダイアログボックスで[OK]をクリックすると、[Processes]ダイアログボックスに戻ります。[Close]ボタンをクリックします。
  5. [File]メニューから[Open]−[File]を選択して、ユーザーコントロールファイル「AuthorsWebServiceClientControl.cs」を開きます。コマンドボタンのClickイベント内でブレークポイントを設定します。
  6. ブラウザに戻り、コマンドボタンをクリックします。すると、次の画面に示すように、コントロールに設定したブレークポイントで自動的に実行が停止されるはずです。ブレークポイントで停止したら、Visual Studio .NETのすべての機能を使用してコードをデバッグすることができます。

コードアクセス許可とWindowsフォームコントロール

 前述のとおり、IE内でコントロールを実行するとき、コントロールは.NETランタイムが提供するコードアクセス許可を利用します。IE内で実行されるフォームコントロールに、.NETランタイムが提供するコードアクセス許可がどのように働くかを理解するために、Authorsフォームコントロールに数行のコードを追加し、新しいイベントログソースを作成します。修正後のコントロールのLoadイベントは次のようになります。

private void AuthorsControl_Load(object sender, System.EventArgs e)
{
    if (!EventLog.SourceExists("TestSource"))
        EventLog.CreateEventSource("TestSource", "TestLog");
    else
    {
        EventLog.DeleteEventSource("TestSource");
        EventLog.CreateEventSource("TestSource", "TestLog");
        }            
    }
}

 上記のコードでは、TestSourceという名前のEventLogソースの存在を確認しています。イベントソースが存在しない場合は作成し、そうでない場合は既存のイベントソースを削除し、新しいイベントソースを一から作成します。予想が付くことと思いますが、この種の操作を行うには、より多くの特権が必要とされます。そのため、インターネットからダウンロードされたコントロールに、この種の操作を許可してはなりません。これを実際に確認するには、コントロールの出力を仮想ディレクトリにコピーします。コントロールの出力を仮想ディレクトリにコピーした後で、ブラウザでコントロールをホストするHTMLページに移動すると、次の画面のダイアログボックスが開きます。

 上記のダイアログボックスのメッセージから、コントロールのコードが.NETランタイムのコードアクセスセキュリティによって制限されていることがわかります。

Windowsフォームコントロールの利点と制約

 しかし、IE内でWindowsフォームコントロールを使用する前には、その利点と制約を知っておく必要があります。主な利点には次のものがあります。

  • Webを通して動的でリッチなユーザー体験を提供することができる
  • クライアント上にコンパイル済みコードが自動的にキャッシュされる
  • .NETのコードアクセスセキュリティとのシームレスな統合により、クライアントサイドから.NETのセキュリティモデルを利用できる
  • Javaアプレットのパフォーマンスが向上する

 制約には次のものがあります。

  • クライアントサイドにWindowsオペレーティングシステムが必要
  • このタイプのホスティングをサポートするブラウザはInternet Explorer 6.0だけである
  • クライアントマシンに.NETランタイムがインストールされている必要がある
  • サーバーサイドにWindows 2000とIIS 5.0またはそれ以上が必要

上記の制約があるため、クライアントマシンの能力を検出してから、クライアントマシンにとって適切なコンテンツを配信するのが有益かもしれません。たとえば、IE内でホストされているフォームコントロールは、クライアントマシン上に.NETランタイムを必要とするので、クライアントマシンに.NETランタイムがインストールされているか調べるコードを書くことができます。これを調べるには、Request.Browser.ClrVersionプロパティの値をチェックします。このプロパティは、クライアントマシンに.NETがインストールされていればバージョン番号を戻し、インストールされていなければ0.0を戻します。

まとめ

 この記事では、IE内でWindowsフォームコントロールをホストする方法を論じ、コントロールをデバッグするための手順を説明しました。また、.NETコードアクセスセキュリティを利用して、Internet Explorer内でコントロールが実行できるように構成する方法を説明しました。

 この技術はクライアントマシン上にプラットフォーム固有の要素を必要としますが、その一方で多くの期待を抱かせてくれます。特に、Windowsオペレーティングシステムの将来のバージョンに.NET Frameworkが不可欠なものとして組み込まれるであろうことを考えると、その思いは強くなります。Windows Server 2003の最新リリースは、まさにその例です。

 最後に、この記事を読んでくださった方に感謝します。また、この記事があなたにとって有益であることを願っています。

著者紹介

Thiru Thangarathinam(Thiru Thangarathinam)
オブジェクト指向アプリケーション開発方法論を用いたアプリケーションのアーキテクチャ設計、設計、開発、および実装に関して約6年の経験を持つ。ソフトウェアライフサイクル(設計、開発およびテスト)にも精通。
ASP.NET、.NET Framework、Visual C#.NET、Visual Basic.NET、ADO.NET、XML Webサービス、および.NET Remotingのエキスパートであり、MCAD(.NETトラック)、MCSD、およびMCP資格を保有。
多くの書籍や記事を執筆。メールの宛先はthiruthangarathinam@yahoo.com


関連記事
  • ASP.NETにおけるOracleのデータキャッシング
  • Office Web Componentsを利用してASP.NETでグラフを作成する
  • Webカスタムコントロールの作成
  • ASP.NETを利用した共有リソースへのアクセス方法
  • ASP.NET が生成する HTML タグを Firefox や Opera にも対応させる方法


  • 関連テーマ
  • ブラウザ
  • シンクライアント
  • Yahoo!
  • XML
  • Microsoft
  • Java
  • IIS


  • ★最新トップニュース
    国内 KDDI、au one net の WEB メールサービスを停止―他ユーザーのメールが閲覧できる不具合(Webビジネス 7月25日 21:00)
    KDDI は、2008年7月25日、固定系インターネット接続サービス「au one net」(旧 DION)にて提供している「WEB メール」サービスを、同日停止したことを発表した。
    コラム Apple がどうしても中国と相容れない理由(Webビジネス 7月25日 18:00)
    同社は7月19日、新しいピカピカの Apple ストアを北京にオープンさせた。Apple 関係者によると、中国には Apple ストアを「今後続々」オープンさせていくという。レースは始まっているのだ。しかし、Apple はこの競技で勝てるのだろうか?
    国内 キューピーが「犬夜叉」「めぞん一刻」などとコラボ、「キュージョン」新バージョン登場画像のある記事(E-コマース 7月25日 18:00)
    株式会社ラナは、2008年7月25日、ローズオニールキューピーと有名キャラクターとのコラボレーション「キュージョン」の第5弾として、「キュージョン るーみっくわーるど」バージョンを発売した。
    国内 【今週の Web ミミズク】まだまだ続く HP ミニノート騒動(Webテクノロジー 7月25日 17:40)
    「HP 2133 Mini-Note PC」の後継となるモデルが8月中に販売される予定だが、さて、どうなることやら。iPhone もすごかったが、Mini-Note も、まだまだ後を引きそうだ。
    国内 マイスペース、未成年者対応を強化―米国での15歳未満への対応を国内の18歳未満に適用(Webマーケティング 7月25日 17:00)
    マイスペース株式会社は、2008年7月25日、同社の提供する SNS「MySpace Japan」にて、18歳未満の未成年者への対応の強化を PC、モバイルともに完了したと発表した。
    トピックス
    > オススメのIT系求人情報【毎週月曜日更新】
    footer_301.gif


    リサーチ
    > デイリーリサーチDLサイト
    > OnlineResearchPortal (リサーチデータバンク)
    > モバイルリサーチ with goo
    footer_301.gif
    キーワード
    > iPhone > Youtube
    > Google > モバイルノート
    > 半導体 > ウィルコム
    > テーマ一覧はこちら
    footer_301.gif
    セミナー情報
    > 第1回インターネットコムマーケティングセミナー「新規クライアントを効率的に獲得する Web マーケティング手法とは」(3月26日)多数のご参加ありがとうございました
    footer_301.gif
    デベロッパー
    > DevX
    > CodeGuru
    > developer.com
    footer_301.gif
    日本Oracle
    footer_301.gif
    j.i.c.ブログ
    ブログ一覧
    デスマーチからの脱却 【デスマーチからの脱却】
    独自ドメインでiPhoneのメール送受信(7月25日)
    データメーション 【データメーション】
    本物のスパム王様はお名乗り出ください(7月24日)
    Graphic Design Forum 【Graphic Design Forum】
    興味深い(?)90年代 (7月24日)
    エンジニアの独り言 【エンジニアの独り言】
    新入社員が配属される季節ですね。(7月23日)
    ジュピターメディア創設者がITを斬る 【ジュピターメディア創設者がITを斬る】
    Alan を探せ(7月18日)
    ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」 【ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」】
    「『訪問歯科診療』のパイオニア」/デンタルサポート株式会社(7月15日)
    footer_301.gif
    最新コラム一覧
    IT マネジメント IT マネジメント

    Apple がどうしても中国と相容れない理由(7月25日)
    CodeGuru CodeGuru

    Visual C++ 2008 Feature Pack: MFCの強化 (2)(7月25日)
    最新アフィリエイト事例にみる成功の法則 最新アフィリエイト事例にみる成功の法則

    メディアのニーズ 〜アフィリエイトに対する思い〜(7月25日)
    最新ハイテク講座 最新ハイテク講座

    Blu-ray がノート PC でも快適に!インテル「Centrino 2」(7月25日)
    百式のネットビジネス研究 百式のネットビジネス研究

    究極にシンプルなタスク管理ツール「now do this」(7月25日)
    週刊-サイト別アクセス状況データ 週刊-サイト別アクセス状況データ

    ビデオリサーチインタラクティブ調査(月間インターネットオーディエンスデータ)(7月24日)
    ハードウェアから見たデータベース ハードウェアから見たデータベース

    表計算ソフトの計算を支える仕組(7月24日)
    「IT の耳」 「IT の耳」

    【書評】『ネットオークションで騙す。』―全米を揺るがした絵画詐欺犯の告白―(7月24日)
    検索エンジンマーケティング 検索エンジンマーケティング

    ピンポイントマーケティングにおける P4P(検索連動型広告)の“当たり前”(7月24日)
    Eメールマーケティング事情 Eメールマーケティング事情

    大量送信のスパムからターゲット絞り込みスパムメールへ(7月23日)
    footer_301.gif
    専門チャンネル
    > セキュリティチャネル > テレコムチャネル
    > サーチエンジンウォッチ
    footer_301.gif
    海外のインターネットコム アメリカ韓国ドイツトルコ
    関連企業のサイト:ストックフォト イラスト ネットストリート ホテル予約サイト タウン情報 出張 事業継承 シミュレーション トランクルーム 優待映画チケット 田舎暮らしガイド オリジナルデザインTシャツ ニタコエ
    Copyright 2008 Jupitermedia Corporation All Rights Reserved. http://www.internet.com/
    space.gif space.gif