« 2006年4月 | トップページ | 2006年6月 »

2006年5月の記事

2006年5月20日 (土)

AtlasでのWebサービスの呼び出し

今日はASP.NET "Atlas" で Gadget を作成するの続き的な内容です。
その時は単純にボタンが押されたときに値を表示していましたが、もう少し役立つ例としてWebサービスの呼び出しコードを書いておきます。

まず、呼び出すWebサービスはこんな感じです。

    [WebMethod]
    public string HelloWorld(string strName) {
        return "Hello World " + strName;
    }
# asmxファイルを追加したときに書かれてるメソッドに引数をつけただけです(^_^;)

このWebサービスを呼び出す場合にはJavaScriptでこのような書き方をします。

    WebService.HelloWorld($('Text1').value, OnComplete);

簡単です。
1つめの引数はWebサービスに渡す値ですね。
2つめの引数はなんでしょう?
Webサービスの呼び出しはXMLHttpオブジェクトを使って非同期で呼び出します。
このレスポンスが戻ってきたときの処理を記述するためのメソッドになります。
ですので、レスポンスを受け取ったときにその結果を表示するなどの処理を行う場合は下記のようなコードも記述する必要があります。

function OnComplete(result)
{
    $('Div1').innerText = result;
}

こちらも簡単ですね。
といった形でAtlasのコントロールを使わない場合でもAtlasは非常に便利です。

ちなみに同じ事をAtlasなしで書くとこんな感じで非常にめんどくさいです。
ご参考までに下記に載せておきますね。

// JScript ファイル

function Button1_OnClick() {
  var xmlhttp = createXmlHttp();
  if (xmlhttp == null) {
    window.alert("XMLHttp 未対応");
  }

  xmlhttp.onreadystatechange = handleHttpEvent;

  function handleHttpEvent() {
    if (xmlhttp.readyState == 4) {
      if (xmlhttp.status == 200) {
        var objDOM = xmlhttp.responseXML;
        var strData;

        if (objDOM.documentElement) {
          strData = objDOM.getElementsByTagName('HelloWorldResult').item(0).text;
          if (strData == null) strData = '1';
        } else {
            strData = '2';
        }

        document.getElementById("Div1").innerText = strData;
      }
      else {
        window.alert("通信エラー");
      }
    }
  }

  var xmlDoc = createXmlDom();
  xmlDoc.async = false;
  var strXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body><HelloWorld xmlns=\"http://tempuri.org/\"><strName>" + document.getElementById("Text1").value + "</strName></HelloWorld></soap:Body></soap:Envelope>";
  xmlDoc.loadXML(strXML);

  xmlhttp.open("POST", "./WebService.asmx");
  xmlhttp.setRequestHeader("SOAPAction", "\"http://tempuri.org/HelloWorld\"");
  xmlhttp.send(xmlDoc);
}

function createXmlDom() {
  if (document.implementation.createDocument) {
    return document.implementation.createDocument("", "", null);
  }
  else if (window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLDOM");
  }
  else {
    return null;
  }
}

function createXmlHttp() {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
  }
  else if (window.ActiveXObject) {
    try {
      return new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e) {
      return new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  else {
    return null;
  }
}

function Button1_OnClickAtlas()
{
    WebService.HelloWorld($('Text1').value, OnComplete);
    return false;
}

function OnComplete(result)
{
    $('Div1').innerText = result;
}

| | コメント (0) | トラックバック (1)

2006年5月18日 (木)

Visual C++ 2005 Express Edition

Visual C++ 2005 Express Edition を入れて遊んでみました。

インストール方法はこちらの2を参考にして下さい
Visual Web Developer 2005 Express Edition のインストール方法なので厳密には違いますがイメージはつかめるかと思います。

Visual C++ 2005 Express Edition ではどんなアプリケーションを作れるのでしょうか?
以下にプロジェクトの作成ウィンドウを載せておきます。

01_1

02

03

って、アンマネージドアプリケーション(.NET Frameworkを使わないアプリケーション)はコンソールアプリケーション(コマンドプロンプト上で動作するアプリケーション)しか作れませんね...
まぁ、Windows SDKを入れればアンマネージドなWindowsアプリケーションも作成できますが、いまさらそんなことはしないですよね...

一応参考までに設定方法のページをリンクしておきます。

Visual Studio 2005 Express Editions: Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/

というわけで、簡単なマネージドなWindowsアプリケーションを作ってみました。
プロジェクトの作成ウィンドウで
・プロジェクトの種類=CLR
・テンプレート=Windows フォーム アプリケーション
・プロジェクト名=任意(今回はCPPTestとしました)
を選択・入力し「OK」ボタンをクリックします。

11_1

そうするとWindowsアプリケーションのプロジェクトが作成され、一つのフォームが表示されます。
このフォームにツールボックスからボタンをドラッグアンドドロップで貼り付けます。

12_1

次にボタンをダブルクリックすると、ボタンをクリックした時に動作するコードを記述できます。
今回はメッセージボックスを表示させてみますので下記のコードを追記してください。
MessageBox::Show("メッセージ");

13_1

切れていますが全体はこんな感じです。
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
               MessageBox::Show("メッセージ");
           }

実行してみると下記のようなダイアログが表示されますので「はい」ボタンをクリックして下さい。
# このあたりはVCな雰囲気ですね(^_^;)

14_2 

しばらく待つとコンパイルされて実行されます。

15_2 

とっても簡単ですね...
VB.NETやC#とあんまり変わりません。

| | コメント (4) | トラックバック (1)

2006年5月17日 (水)

デジタルスタイル会議 と VAIO typeU

今日夕方からデジタルスタイル会議に参加してきました。
会議とはいっても、異業種交流会のような形で、次世代のデジタルガジェットの案を
検討し合う形で楽しかったです。

Academed!A | 第九回アカデメディア 『デジタルスタイル会議』へのお誘い
http://blog.academedia.jp/?eid=499341

まずは、はじめのプレゼン。
宿題(?)の回答を10程紹介していました。
いろいろおもしろいアイディアが...と見てると、なんと自分のアイディアも紹介されました(^_^)

その後、SONYの方のプレゼンがありました。
今日発表のVAIO typeUの開発秘話などが聞けてとてもおもしろかった。
さらにはなんと、VAIO typeUをさわることができた。

VAIO | type U
http://www.vaio.sony.co.jp/Products/UX1/

失礼にもW-ZERO3と並べて写真撮ってきましたので載せておきます。

Vaiotypeu_1

W-ZERO3と比べるとさすがに大きいのですが持った感じはそれほど重く感じず
何よりいいのはつくりがしっかりしていること!!
キーボードのスライド部分はW-ZERO3と大違いです。
思わず物欲が...(^_^;)

最後は、VAIO typeUに一つだけ機能をつけてみたらと言うことでグループ討議。
同じグループの方おつかれさまでした。

とにかく、いろいろ楽しいひとときでした。

| | コメント (4) | トラックバック (1)

« 2006年4月 | トップページ | 2006年6月 »