• ASP.NETでスケジュールされたJobを実行する

    Simulate a Windows Service using ASP.NET to run scheduled jobs

    おなじような仕組みは実装して使ってるんですが、手元ではこんなにきっちりした秒数のカウントができてない。。。
    何か設定のあたりで違うところがありそうなので、きちんと調べてみようかと思います。

    投稿日時 10-10-2008 01:33 投稿者 ono | コメント数:0
    カテゴリ:
  • ADO.NET Data Services からデータを取り出してDynamic Dataに表示するサンプル

    Dynamic Data - Experimenting with YUI's DataTable and DataSource Controls

    YUI(Yahoo User Interface Library)のテーブルを使っていることがメインのようにみえますが、中でやってることはADO.NET Data Services経由で取り出したデータをDynamic Dataを使って表示しています。
    どこがどうつながっているのかよく把握できていないので、しっかりサンプルを読み込んでみたいと思います。

    投稿日時 09-10-2008 04:13 投稿者 ono | コメント数:0
    カテゴリ:
  • ASTORIAに対して大量データをPOSTする必要がある場合の設定

    Astoria & IIS , HTTP 400 Bad Request on Posting Large Payloads to an astoria service

    AstoriaはWCFベースなので、WCF側の設定項目の変更が必要になる、という話です。
    言われてみればその通りなのだけど、WebHttpBindingの設定を変更する、というのは気づきにくい点かも。

    投稿日時 06-10-2008 02:59 投稿者 ono | コメント数:0
    カテゴリ:
  • 通常のASP.NETとASP.NET Dynamic DataとASP.NET MVCを組み合わせる

    Plug-In Hybrids: ASP.NET WebForms and ASP.MVC and ASP.NET Dynamic Data Side By Side

    表題どおりのことを実現する方法が機銃されています。
    まぁ、できることはわかってましたが、Global.asaxのルーティングにどう記述するか、といったあたりがキモになりますね。

    手順としても、

    1. ASP.NET MVCのプロジェクトを作成
    2. Dynamic Dataはフォルダ単位でコピー
    3. 通常のページはそのまま追加(ただしルーティングはちょっと注意)

    という(説明では2と3が逆ですが)のが一番単純だと思います。

    ただ、できたとしてそれを「どう使うの?」というのが難しいとこですよね(w

    投稿日時 02-10-2008 10:35 投稿者 ono | コメント数:1
    カテゴリ:
  • 福井での勉強会の資料アップ

    10月3日に福井で下記の勉強会があり、そこでお話させていただきます。
    そのとき利用する資料を勉強会資料フォーラムにアップしました。

    勉強会資料:ASP.NETの仕組み

    基本的には参加される方に事前にダウンロードしてもらうためのものですが、興味のある方はどうぞ。

     

    ------ 勉強会の内容 ------

    『Micosoft 最新技術最強セミナー in 福井~Tech・Ed 2008 記念~』
    http://fitea.org/?p=84

    ●日時: 2008年10月3日(金) 13:00~18:00(受付は12:30より開始)
    ●場所: 中小企業産業大学校 特別教室
    http://www.fukui-iic.or.jp/fiib/access.html
    福井駅前から無料フレンドリーバスあり(「生活学習館」前)
    http://www.library.pref.fukui.jp/guide/bus.html

    ●参加費: 無料 ●定員:60名
    ●内容:
    [1]『ASP.NETの仕組み』小野 修司氏 あおい情報システム株式会社
    Microsoft MVP for ASP/ASP.NET (April 2007 - March 2009)
    Visual C# (April 2003 - March 2007)
    [2]『Silverlight 2.0』大西 彰氏 マイクロソフト株式会社
    デベロッパー&プラットフォーム統括本部
    [3]『最新サーバー仮想化技術 Hyper-V とは?』杉下 朋年氏 D&UNITE株式会社 代表取締役
    Microsoft MVP for Development Tools - Visual Basic
    Jul. 2004 - Jun. 2009
    [4]『スペシャルセッション(未定)』福井 厚氏 アバナード株式会社 ソリューション・アーキテクト
    MCA (Microsoft Certified Architect) Solutions Certifications
    Microsoft MVP for ASP/ASP.NET
    [5]『ライトニングトークス』※スピーカー募集中!
    ※内容、順番は変更されることがあります。

    ●お申し込み(※事前お申し込みが必須です)
    こちらからどうぞ:http://fitea.org/enterevents.html
    締切: 2008年9月30日(火)迄

    ●主催:FITEA (福井情報技術者協会) http://fitea.org/
    後援:アイネタ・ジャパン http://ineta.jp/

    ●イベント終了後の懇親会について
    ※「正大」から場所が変更になりました。
    福井駅近く「庄内家」にて18:40開始の予定です。ご予算はお一人5000~6000円程度の予定です。
    http://gourmet.gyao.jp/0003003173/
    スピーカーの方も参加されますので、この機会に交流を深めましょう。

    投稿日時 26-09-2008 03:22 投稿者 ono | コメント数:0
    カテゴリ:
  • ASP.NET ルーティングの仕組み

    ASP.NET ルーティングはどのような仕組みで実現されているのでしょうか。
    これを理解するには、まずASP.NETの仕組みを理解しておく必要があります。

    ASP.NETの仕組み

    上記ページのうち、1から3の部分を特におさえておいてください。
    この部分を大雑把にまとめると、

    1. HttpContextがリクエストを受け取ってからレスポンスを返すまで一種のグローバルオブジェクトとして存在している
    2. HttpApplicationが様々なイベントを発生させるタイミングでIHttpModuleが各種処理を実行することができる
    3. 実際に実行されるのはHttpContextのHandlerプロパティに設定されているIHttpHandler(のProcessRequestメソッド)である

    ということをまず頭においてください。

    ASP.NET ルーティングを利用するにはweb.configにUrlRoutingModuleを登録します。
    Moduleは登録されると、すべてのリクエストに対して実行されます。
    このUrlRoutingModuleがブラウザからのリクエストを調べて、登録されているルートに合致するかどうかを判断します。

    このとき、リクエストされているURLが現在存在しているファイル(aspxなど)を直接指定している場合は、ルートとの合致の調査は行われず(デフォルトの動作)、指定されているファイルがそのまま呼び出されます。
    それ以外の場合で登録されているルートがあったら、そのルートに対して設定されているIRouteHandlerのGetHttpHandlerメソッドが呼び出されます。

    IRouteHandlerの実装例やその登録の仕方については下記のページを参考にしてください。

    ASP.NET ルーティングを実装する

    GetHttpHandlerメソッドはIHttpHandlerを返すことが求められています。
    で、ここで返されたIHttpHandlerがHttpContextのHandlerプロパティに設定されます。
    そして、このHandlerプロパティに設定されているIHttpHandlerのProcessRequestが実行されることになります。

    要するにとっても簡単に言うと、UrlRoutingModuleが処理を横取りして、実行されるページ(のインスタンス)を置き換えてしまう、というのがASP.NET ルーティングが行っている動作です。
    また、その中でどんなページに置き換えるかを指定するためにIRouteHandlerの実装が必要、ということになります。

    ちょっと気をつけないといけないのは、IHttpHandlerのインスタンスのレベルで置き換えが行われている、ということですね。
    リクエストの処理の中で内部的にリクエストされたURLを書き換えてしまう(RewritePath)のと異なり、URLの変更は行われないので、ポストバック先はもともとリクエストされたURLになりますし、クエリ文字列としてURLに含まれたデータを取り出すことはできない、ということになります。

    さて、ここまででASP.NET ルーティングの仕組みとその実装方法(上記ページ参照)を説明しました。
    あと、aspxページ内でルーティングに合わせたURLを生成する方法については、下記を参照していただければよいと思います。

    方法:ルートからURLを構築する

    これで、実際のASP.NETアプリケーションの中でASP.NETルーティングを利用するための準備は整ったのではないかと思います。
    現実にどのようなルーティングをアプリケーションで使っていくのがよいか、これからいろいろ考えてみます。

    投稿日時 19-09-2008 05:30 投稿者 ono | コメント数:3
    カテゴリ:
  • ASP.NET ルーティングを実装する

    .NET Framework 3.5 SP1でASP.NETにルーティングという機能が追加されました。
    ASP.NET ルーティングがどういうものか、という話については次のページをみてもらうのがよいと思います。

    ASP.NET ルーティング

    上記ページの中にサンプルとしてCategoryRouteHandlerを使った例がありますが、このCategoryRouteHandler、どこを探しても存在していません。
    そのあたりの疑問を解決するには次のページを見てください。

    方法 : Web フォームでルーティングを使用する

    Web.Configの設定のあとに、「ハンドラを作成するには」という項目があります。
    ここに記述されていますが、実はIRouteHandlerインターフェイスを実装するクラスを自分で実装しない限りルーティングは利用できない、というのが実情です。
    上記ページには単純なIRouteHandlerの実装例がでていますが、もう少し柔軟に運用できるルーティングハンドラとURLに含まれるデータを取り出す方法を実装してみました。

    作成したソースは以下のとおりです。

     

    using System.Web;
    using System.Web.UI;
    using System.Web.Compilation;
    using System.Web.Routing;
    using System.Linq;

    public class SimpleRouteHandler : IRouteHandler
    {
        public string VirtualPath { get; set; }

        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            string vPath = VirtualPath;
            var keys = from s in vPath.Split('/')
                       where s.Contains('{') && s.Contains('}')
                       select s.Remove(s.IndexOf('}')).Substring(s.IndexOf('{') + 1);
            foreach (string key in keys)
            {
                vPath = vPath.Replace("{" + key + "}", requestContext.RouteData.GetRequiredString(key));
            }
            return BuildManager.CreateInstanceFromVirtualPath(vPath, typeof(Page)) as IHttpHandler;
        }
    }

    public partial class SimpleRouteValue
    {
        public static string GetRequiredString(string valueName)
        {
            RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
            return routeData != null ? routeData.GetRequiredString(valueName) : string.Empty;
        }
    }

     

    SimpleRouteHandlerクラスがIRouteHandlerインターフェイスを実装したハンドラです。
    ルートの定義に対して固定のページを指定するだけでなく、ページの指定時にもルート定義と同様の記述を可能にしています。

    ※ルート定義とページ指定の例

    ルート定義 ページ指定 アクセスURL 実行されるページ
    {action}/{id}
    "~/Update.aspx" http://localhost/site1/Update/4 "~/Update.aspx"
    {action}/{id} "~/{action}.aspx" http://localhost/site1/Update/4
    http://localhost/site1/Delete/4
    "~/Update.aspx"
    "~/Delete.aspx"

     

    SimpleRouteValueクラスはURLに含まれる値を取り出すために利用します。
    上記の例でいうと、Update.aspxやDelete.aspxではidの値を直接取り出すことができません。このあたりはURLの書き換えを行った場合と異なっているところです。
    このため、SimpleRouteValueクラスを利用してidの値を取り出せるようにしました。

    この実装を利用するためには、まず「方法 : Web フォームでルーティングを使用する」のページを参考にWeb.Configの設定を行ってください。
    IIS6.0の場合、IIS7.0の場合、といった場合わけした記述がありますが、すべての設定をしておけば必要ない部分は読み飛ばされるだけなので、あまり気にせず設定してください。

    次に、Global.asaxに下記のように記述します。

    void Application_Start(object sender, EventArgs e)
    {
        RouteTable.Routes.Add(new Route("{action}/{id}", new SimpleRouteHandler() { VirtualPath = "~/{action}.aspx" }));
    }

    そして、Update.aspxページを追加し、その中にLabelコントロールを置いて、下記のプログラムを記述します。

    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = SimpleRouteValue.GetRequiredString("id");
    }

    この状態で、"~/Update/6" のようなURLにアクセスすると、Update.aspxページが実行され、idの値を取り出せていることが確認できると思います。
    ルートの規定値や制約も利用できますから試してもらうとどのような動きをするのかわかると思います。

    また、Update.aspxページにボタンを追加し、クリック時の処理を記述して実行してみると、ポストバック時にも元のURLにアクセスすることが確認できます。この点もURLの書き換えとは異なっている部分です。URLの書き換えだとaspxページに手を入れないとポストバック時に書き換えられたURLが表示されてしまいます。

    なお、IIS6上でASP.NETルーティングで上記のような拡張子のないURLを利用するには、ワイルドカードアプリケーションマッピングを利用してすべてのリクエストがASP.NETに渡されるように設定する必要があります。

    URLの表記をできるだけきれいにしたい、と考えている人にとってはASP.NETルーティングは十分検討に値する機能だと思います。
    どのような仕組みでこのルーティングが実現されているかについては別途まとめようと思います。

    投稿日時 18-09-2008 11:24 投稿者 ono | コメント数:1
    カテゴリ:
  • ADO.NET Data Services の資料

    Using Microsoft ADO.NET Data Services

    印刷したら相当の分量になりそうな情報があがっています。
    とりあえず日本語化希望。

    投稿日時 09-09-2008 11:29 投稿者 ono | コメント数:0
    カテゴリ:
  • Tech・Edでお会いしましょう

    来週(8/26~29)、Tech・Ed 2008 Yokohamaが開催されます。
    ここで、スペシャルプログラムとしてBirds of a Feather(BoF)とライトニングトーク、シアターセッションが開催されます。

    スペシャルプログラムの歩き方
    :原水さんのBlogより

    このBoFとライトニングトークに登壇します。

     

    BoFのほうは3日目(28日)の11:10-12:25にナオキ君と一緒にやります。

    Tech・Ed 3日目の BoF 「ASP.NET のこれからを語ろう」に登壇します
    :ナオキ君のBlogより

    内容については、こんな感じ。

    概要:
    ASP.NETはバージョンアップの度に利便性を上げてきました。
    昨年ASP.NET 3.5がリリースされましたが、今年はSP1の登場により以下のような機能追加が予定されています。
    ・ASP.NET Dynamic Data
    ・ASP.NET controls for Silverlight
    ・ADO.NET Data Services
    また、ASP.NET MVC フレームワークも今年中にリリース予定です。
    SilverlightによるRIAの盛り上がりも予想される中、ASP.NETを今後どのように利用していくのか意見交換したいと思います。

    ちなみに、上記の概要は申込時に書いたものです。
    たぶんこの記述が表にでてくることはなさそうなので、ここに書いてみました(w
    まぁこちらは登壇というより、その場に集まってくれた方達でいろいろお話するうえでの進行役だと思ってます。

     

    ライトニングトークは同じく28日の17:00-18:15の時間のなかで

    「どこがちがうの?WebアプリケーションプロジェクトとWebサイトプロジェクト」

    という表題で5分間お話させていただきます。

     

    Tech・Edに来場される方で上記の内容に興味のある方はぜひ参加していただければと思います。

    投稿日時 19-08-2008 01:16 投稿者 ono | コメント数:0
    カテゴリ:
  • Windows 7 についての日本語Blog

    マイクロソフトのEngineering Windows 7 ブログ

    英語版も8/14から開始されたBlogのようですが、早速最初のエントリが日本語訳されてますね。
    これからが楽しみ。

    投稿日時 15-08-2008 07:55 投稿者 ono | コメント数:0
    カテゴリ:
  • LINQ to XMLを使ってExcelファイルを生成する

    Use LINQ to XML to Generate Excel Documents

    そうか、この手があったよね。
    細かい設定までいろいろできそうだな。

    投稿日時 12-08-2008 02:01 投稿者 ono | コメント数:0
    カテゴリ:
  • VS2008 SP1対応のトレーニングキット

    .NET Framework 3.5 Enhancements Training Kit

    VS2008 SP1が正式リリースされたのはいろいろなところで話題になると思います。
    そのSP1に対応したトレーニングキットも提供されています。
    トレーニングの内容にASP.NET MVCも含まれていますが、MVCはまだ正式リリースじゃないのでPreview 4をインストールしたうえで、ということのようです。
    なかなか充実してそうなので、きちんと目を通してみなければ。。。

    投稿日時 12-08-2008 11:31 投稿者 ono | コメント数:0
    カテゴリ:
  • Sync Framework リリース

    Sync Framework v1 and Sync Services for ADO.NET v2 are now Generally Available!

    Sync Frameworkというのは、ファイルやデータベース内のデータの同期を実現してくれるフレームワークと理解していいんでしょうか。
    特に今後、データがクラウド上に存在するようになってくるにつれて重要度があがっていきそうです。

    11ヶ国語対応で一気にリリース、ということはSQL Server 2008の出荷を待っていたんでしょうか。
    なんにせよ、まずは概要を押さえなくては。

    投稿日時 07-08-2008 12:03 投稿者 ono | コメント数:0
    カテゴリ:
  • Zermatt

    Announcing the Beta release of “Zermatt” Developer Identity Framework

    うーん、Webサービスベースの認証系の仕組み、と考えててていいのかなぁ。
    とりあえずホワイトペーパーは落としたからきちんと読んでみないと。

    投稿日時 10-07-2008 01:42 投稿者 ono | コメント数:0
    カテゴリ:
  • Application Request Routing Module

    Using the Application Request Routing Module

    奥主さんのBlog ですでに紹介されていたのですが、さらっと読み飛ばしてました。
    IIS7をロードバランサにしたり、リバースプロキシにしたりすることができるモジュールのようです。
    IIS7はモジュールの形でいろいろ拡張されるから、きちんとアンテナはって情報収集しておかないとなぁ。。。

    投稿日時 10-07-2008 01:12 投稿者 ono | コメント数:0
    カテゴリ:
もっと見る 次のページ »
SkinName:iroha_Blog2
Powered by Community Server, by Telligent Systems