2008年5月2日金曜日

SSDS

SQL Server Data Servicesの略でSSDS。 SQL Server Data Services

クラウドコンピューティングっていうんですかね。 公開は全然先の話だからAmazon,Googleにはずいぶん遅れてしまうけど、SQL ServerをエンジンにLINQを使ったオンライン上のDB。CPUとストレージリソースいずれも雲の中。 SQL Server Data Services Overview

ここから概要のPDFがダウンロードできるっす。 Customer { SSDS account (1..N) { Authority (1..N) { Container (0..N) { Entity (0..N) こんな階層。 Entities are “flat scalar property bags.” と、書かれてるように基本Dictionary<T1,T2>の型をEntityに入れて自分でフィールドを管理。クエリー発行はLINQで。 Jeff's thoughts on Software Architecture, Large Scale Services and the Technical world at large : Interacting with SQL Server Data Services using SOAP ↑ここに基本的なサンプルコードあり。.NET Framework上での開発ならSOAPでやれば、超簡単にプロキシができるからね。

発表はMIX08のときだっけ? 忘れかけてた矢先、Private Beta Invitationって書かれたメールが来た。 使えるようになるのはずいぶん先の予定、ってことでほっといたのに。 とりあえず、ドキュメントをダウンロードして読んでみます...。 簡単なサンプルとか作ったり? ストアド書けるのかな~...。

あと、dotNetOpenIDScott Hanselman's Computer Zen - The Weekly Source Code 25 - OpenID Edition ASP.NET MVCでの実装サンプルもあったから動かしてみたら、もちろんだけどちゃんと動いてちょっと感動。しかもコードはチョビット。

public void Authenticate() { var openid = new OpenIdRelyingParty(); if (openid.Response == null) { // Stage 2: user submitting Identifier openid.CreateRequest(Request.Form["openid_identifier"]).RedirectToProvider(); } else { // Stage 3: OpenID Provider sending assertion response switch (openid.Response.Status) { case AuthenticationStatus.Authenticated: FormsAuthentication.RedirectFromLoginPage(openid.Response.ClaimedIdentifier, false); break; case AuthenticationStatus.Canceled: ViewData["Message"] = "Canceled at provider"; RenderView("Login"); break; case AuthenticationStatus.Failed: ViewData["Message"] = openid.Response.Exception.Message; RenderView("Login"); break; } } }

サンプルそのままでスイマセン。 認証はOpenIDでデータストレージはSSDSで、っていうのが自分でリソースを持たない方法としてなかなかいいかも。BLOB持てるなら画像とかのファイルもSSDSなんだけどどうなんだろ。

2008年4月25日金曜日

ViewUserControlが恋しい

ASP.NET MVCと相変わらず格闘中。 で、Ajax的な機能を組み込んでるところで、とうとうViewUserControlのみのレンダリングが必要になってきました。ハァ~。先延ばしにしてもどこかに答えが出てくるわけじゃないんだな~。人気なさそうだしな~。

次のバージョンでどのくらい実装に変化が出るのかドキドキしつつ、とりあえずはPreview 2のソースを追っかけてどうやろうか思案。ViewEngineを実装したところで、ViewUserControlのレンダリング結果が欲しいだけなんだから、あんまり意味ない(よね?)。

とうとう、あれか、ComponentControllerの出番か。とか思ってサンプル作ってみたけど、全然関係なさげ。 ComponentController and ActionResult - ASP.NET Forums こんなの見ると萎える...。

ViewUserControlとComponentControllerはコンテキストが違うっつーだけなんすかね。 コントロールは同一コンテキスト(パイプライン)の中で、同じViewEngineに対してレンダリングするけど、コンポーネントは別のViewEngineへの出力を取得して、それを現在のコンテキストにマージ。そんな感じ? まぁ、いいや。 で、どうすっかな~とMVCのソースを眺めてたんだけども、UserControlExtentionsのコードをオマージュすればいいってところにたどり着きました。 最低限以下のコードをコントローラに書けばOKっす!

      ViewContext vc = new ViewContext(ControllerContext, "dummy", "", null,null);
      var page = new ViewPage();
      page.Html = new HtmlHelper(vc);

      string partial_html = page.Html.RenderUserControl("仮想パス/コントローラ.ascx");
      Response.Write(partial_html);

Pageの実体を参照しないViewContextを作って、空のViewPageにHtmlHelperと一緒に割り当て。 コントロールの中でUrlHelper使うなら、それもセットしておきましょう。

      page.Url = new UrlHelper(vc); 

もちろん、RenderUserControlだから独自ViewDataも渡せるし、そこは普通に。 無駄にPageインスタンス作るのが納得いかないけど、オリジナルもその手法だからこれでよかろうさ。 これで、HTMLの部分更新もコントロールをそのまま使って実装できるから簡単になるよね!

2026年06月16日の記事一覧

(全 23 件) そうきたか。マイクロソフトが新しく提案するAI搭載の「社員証」 「WSL」のバージョン3が開発者にもたらす大きなメリット Stack Overflow、AIエージェント同士が掲示板で技術情報を共有する「Stack Overflow fo...