ASP.NET Ajax ファーストインプレッション

今更ながら ASP.NET Ajax をまともにちょっと触ってみました。JavaScript 部分の Ajax Library だけなんですがね。

んー、なんていうんでしょう。枠組みを作るためのライブラリなんですかね?多くでまわってる JavaScript ライブラリとは若干毛色が違いますね。名前空間とかクラスやインターフェイスを疑似的に作って制御しようとしてる。CLR の形を頑張って JavaScript にも適用しようとしてる部分が大半で、あとはちょっとした便利(かどうかはわからないけど)なライブラリ。疑似的にクラス(のようなもの)を作れるライブラリは結構あるんやけども、ここまで頑張ってるのは初めて見ました。

で、それが有用かどうかのお話です。きっちり読みこんでなく使いこんでもなくあくまでも所感なのですが、別にここまでのものはいらないかなっていうのが正直なところです。たしかにコンポーネント化したいときや、コードの責任を明確にしたいときなどはクラス指向ライクに書きたいことも多々あるので、全くいらないとういうわけではありません。むしろあったほうがいい。しかし、ここまでインターフェイスとか名前空間とか、いろいろ無理に作れるようにして、それを使ってみたところでどこまでメリットがあるのでしょう?しかも、なんだか余計に難しくなってるように思います。っていうか、難しくなってます。微妙な按配の部分だとは思いますが、やりすぎ感がどうも否めない。

あくまでも JavaScript ライブラリとしては、いらないでしょう。もっと便利で簡単なライブラリはいっぱいあるよ。っていうのが結論ですね。サーバーサイドの ASP.NET と連携させる場合はまた別な話になるとおもうので、あくまでも JavaScript ライブラリとして見た場合だけです。

あと、JavaScripter としてひとこと言わせてもらうと、グローバル変数汚染しすぎです。いや、ある意味素晴らしい汚染っぷりです。もう、ほかのライブラリと混ぜて使うなんて全然念頭にないくらいに汚染しすぎ。まぁ、大半は $ が含まれた特殊っぽい名前で定義されてるのでバッティングすることは少ないとは思うのですが、それでもなぁって感じです。一番最初は Prototype.js のように要素を取得する $ 関数が用意されていたようですが、他のライブラリと混ぜて使う場合にバッティングするためという理由で $get に変わったと聞いたことがあります。それやったらグローバル変数を素晴らしく汚染するようなコードも書くなよって思ってしまうのですが。

そんな文句タラタラの中、 Sys.Component ってのを発見してちょっと何ができるのか興味ありです。ソース読んだだけであれなのですが、どうもコンポーネントを定義してイベントとか定義してゴネッとできそうな感じなのですが。まぁ、ぼちぼち追いかけてみます。

次は Extender あたりを見てみるつもりです。