WebMatrix Betaのチュートリアル
発表依頼、注目を集めている(一部だけ?)WebMatrixのチュートリアルがきちんとまとまっていることに今日気づきました。
まだScottGuのBlogの日本語訳がでてないので、国内での注目度は低いかな?(w
WebMatrix(というかRazor)で利用できるヘルパーをまとめてくれているページもあったので、こっちもメモ。
WebMatrix Helpers
WebMatrix Helpers (Part 2)
個人的には、なぜこの技術がでてくるのか、というあたりを気にしていたりします。
ヘルパーについて考えてみることがその一助になるかな、と思っていたり。。。
[追記]
てなこと書いてたら、今日付けでScottGuのBlogの日本語訳あがってますね。
そろそろかなぁ、とは思ってたんですが。
いつもいつも翻訳がんばってくれるChicaちゃんに感謝!
WCF Data Services で OData利用時の認証について
OData and Authentication – Part 1
OData and Authentication – Part 2 – Windows Authentication
OData and Authentication – Part 3 – ClientSide Hooks
OData and Authentication – Part 4 – Server Side Hooks
OData and Authentication – Part 5 – Custom HttpModules
他の技術との対比で、WCF Data Servicesではどのように認証を実装すべきか、とかちょっと考えてたら、たまたま一連の投稿がまとまったようなのでメモ。
内容はまだ確認出来ていないので、これから。。。
とあるタイミングまでには読んで、このあたりについての自分なりの考え方をまとめておく予定。
#自分向けに宣言しておかないとね(w
【追記】
てっきり収束だとおもってたら次がでてきた(w
OData and Authentication – Part 6 – Custom Basic Authentication
OData and Authentication – Part 7 – Forms Authentication
モデルファースト開発の初心者向けチュートリアル
Absolue Beginners Guide to Entity Framework
前の投稿では次世代のEntity Frameworkでコードファーストで開発ができるようになる、という話でしたが、これは現行版のEFの話。
モデルファーストでの開発について初心者向けのチュートリアルがまとめられています。
一通り動くところまで簡潔にまとまっているという意味でよい記事ではないかと思うのでご紹介。
次世代のEntity Framework
次に登場してくるEntity FrameworkのCTP版の提供が開始されました。
最初はデータベースがないとモデルが作れなかったEFですが、現在はモデルからDBを作成することができるようになっています。
そして次は、、、コードを書くだけでDBアクセスができるようになる、と。
最近発表され、提供がはじまったSQL CE4 ベータと組み合わせるとこんなことができる、という例もでてます。
Simple Code First with Entity Framework 4 – Magic Unicorn Feature CTP 4
なんか楽しそうだなぁ。
どんどんコードを書き始めるまでのハードルが低くなってくる感じですね。
Developerとしてはうれしい限り。
#運用環境についての知識がない開発者が増えなきゃいいけど(w
WCF RIA Services:データ追加の補足
前回のエントリの最後にこんなことを書いてます。
「データを追加したあと、最終ページを表示するようにプログラムを記述しているつもりですが、どうも本来ページが増えるはずの動作のときに最終ページの1つ前のページしか表示されない、という状態になっています。 」
非同期処理に慣れている人ならすぐ原因に気づいたんでしょうねぇ。
データの読み直し(personDomainDataSource.Load();)が非同期で行われるため、正しい最終ページの値を持ってこれていないことが問題でした。
ここを修正します。
まずは修正前のプログラム
————————————————————————————————
private void button4_Click(object sender, RoutedEventArgs e)
{
// 子ウィンドウのインスタンスを生成
ChildWindow1 w = new ChildWindow1();
// 子ウィンドウを閉じたときにデータを読み直し、最終ページを表示するよう設定
w.Closed += (s, ev) =>
{
if (w.DialogResult == true)
{
personDomainDataSource.Load();
dataPager1.PageIndex = dataPager1.PageCount;
}
};
// 子ウィンドウの表示
w.Show();
}
————————————————————————————————
これを次のように変えます。
————————————————————————————————
private void button4_Click(object sender, RoutedEventArgs e)
{
// 子ウィンドウのインスタンスを生成
ChildWindow1 w = new ChildWindow1();
// 子ウィンドウを閉じたときの処理を記述
w.Closed += (s, ev) =>
{
if (w.DialogResult == true)
{
// データを読み直したときのイベントを追加
personDomainDataSource.LoadedData += new EventHandler<LoadedDataEventArgs>(dataAdded);
personDomainDataSource.Load();
}
};
// 子ウィンドウの表示
w.Show();
}
private void dataAdded(object sender, LoadedDataEventArgs e)
{
// 最終ページに移動
dataPager1.PageIndex = dataPager1.PageCount;
// 子ウィンドウを閉じたとき以外に実行されないようデータを読み直したときのイベントを削除
personDomainDataSource.LoadedData -= dataAdded;
}
————————————————————————————————
このようにデータの読み直しが終了した時点に動作するイベントを追加し、その中で最終ページに移動することで正しく動作するようになります。
さて、本編はここまで。
このプログラムを書いてて思ったんですが、非同期処理がベースとなることで、イベントに関する理解は必須になってしまいますね。
また、上記のプログラム中では説明もせずにさらっと流してますが、匿名デリゲートをラムダ式に置き換えて簡単な記述にしている、なんてことをしてます。
自分でプログラムを書く分には、IntelliSenseが手伝ってくれることもあって難しいところはそうないんですが、このあたりを他人に説明しようとすると、、、大変だよなぁ。。。