久しぶりにアイコンカレンダー

久しぶりにアイコンカレンダーについて書いてみたり(・∀・)


自分が作ってるアイコンカレンダーでは、統計情報としてここ30日/全登録のモチベーション平均値だとかコメント率だとかを出しています。
そしたらもっと詳細な自己分析がしたいので、登録データをCSVで出力する機能が欲しいと言われました(・∀・)


一覧を取得するサービス層は既存なので、CSVの生成部だけIHttpHandlerベースで適当に実装してみたり。*1
こういうやつですね。

<%@ WebHandler Language="C#" Class="CsvHandler" %>

public class CsvHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
...
        context.Response.Clear();
        context.Response.ClearContent();
        context.Response.ClearHeaders();
        context.Response.Cache.SetCacheability( HttpCacheability.Public );

        context.Response.AddHeader( "Content-Disposition", "attachment;filename=Statics.csv" );
        context.Response.ContentType = "application/octet-stream";

        StringBuilder csv = new StringBuilder();
...

        Encoding enc = Encoding.GetEncoding( "Shift-JIS" );
        context.Response.BinaryWrite( enc.GetBytes( csv.ToString() ) );
    }
}

ちなみにRSS出力もRSS.NETとIHttpHandlerで作っていたんですが。
でもRepeaterコントロールを使ってPageベースでやった方が簡単なのかも。


ところで、たまにJSON vs XMLみたいな話もありますけど、AjaxだからJSONっていうだけでなくて、SaaS時代の専用クライアントを想定するとXMLなWeb Serviceもあった方が便利だよねとか思ってみたり(´ω`)

*1:完全に息抜きのプログラミングですが