久しぶりにアイコンカレンダー
久しぶりにアイコンカレンダーについて書いてみたり(・∀・)
自分が作ってるアイコンカレンダーでは、統計情報としてここ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:完全に息抜きのプログラミングですが