Spring.NET

Spring.NETのロギング設定

Spring.NETのロギング設定についてメモSpring.NETではロギングに「log4net」やEnterprise Libraryの「Logging Application Block」なんかを使えるんだけど、それらを直接使うんじゃなくて「Common.Logging」というロギングライブラリを挟んで、実際のロガー…

URLを物理パスにマップしてインジェクション

ネタが無いのでASP.NETとSpring.NETでよくやる事を書いてみる。例えばサーバーサイドで「App_Data」フォルダなんかに置いてある設定ファイルを読み書きする場合、そのファイルのURLを「Server.MapPath」メソッドを使って実際の物理パスに変換するなんて事を…

ObjectDataSourceの使い道

先日のSilverlightを囲む会#4でid:kiyokuraさんとASP.NETのObjectDataSourceの話をしていて、きよくらさんがObjectDataSourceを使わないと言っていたに対して自分がObjectDataSourceはSpring.NETと絡めると効果的ですよなんて話をしたので、そのへんの事を書…

BooをDIコンテナのDSLとして使う

BooはDSLの構築に適しているという評判なので、そのへんの事を確かめてみる。そもそもDSLとはDomain Specific Language(ドメイン固有言語)の略で、C#なんかのプログラミング言語が汎用的なのに対して、特定のドメイン(領域)に特化した言語のことをいう。…

これから始めるSpring.NET その6

前回 の続きです。 宣言的インジェクション アプリケーションでよく必要になる処理でロギング処理というのがあります。.NETでロギング処理を行う場合、Traceクラスを使うこともありますが通常、log4netなどのロギングライブラリを使用することになるでしょう…

これから始めるSpring.NET その5

前回 までで、Spring.NETの基本的な機能について説明しました。 他にも様々な機能が用意されていますが、基本的に使用するのはobject要素とproperty要素の二つだけです。これだけを見るとSpring.NETというのはコードの中のnew宣言とプロパティ呼び出しを設定…

これから始めるSpring.NET その4

前回 では、フォームをDI コンテナに登録し、それを取り出して表示しました。今回はもう少し踏み込んでみます。まずはMainFormクラスのUIを以下のように変更します。 MainForm.cs テキストボックスをMultiline=true で貼り付け、[File] → [Save] というメニ…

これから始めるSpring.NET その3

それでは実際にSpring.NET を使ってみます。まずは以下のサイトから最新のバイナリをダウンロードしてきます。現在のバージョンは1.1 です。 Spring.NET - Application FrameworkダウンロードしたSpring.NET-1.1.zip を解凍するとできるフォルダの中の「bin\…

これから始めるSpring.NET その2

前回 ではクラス間の依存関係の切り離し方とSpring.NETの役割について説明しました。 では、そもそもクラス間の依存関係を切り離す事にどのような利点があるのでしょうか?インターフェースで分離する事による利点でよく言われるのは多態性(ポリモーフィズ…

これから始めるSpring.NET その1

なんかいまいちSpring.NETの認知度というか使用率が低いみたいなので、ここらで一度Spring.NETを知ってもらうために入門的なエントリでも書いてみることにする。 普段当たり前のように使っているので、今一度何故使うのかという事を考えてみたいというのもあ…

Python式を使ったオブジェクトのインジェクション

最近オープンソースで作り始めた拙作のSpring.Extensionsライブラリ。以下のエントリで書いたコードを元にして作り始めたのだが、 Spring.NETでカスタム属性を使ったインジェクションを実現する - Architect Lifeこの機能を実装したら他に実装したい機能が思…

ASP.NET MVC Framework x Spring.NET

MVCフレームワークの調べ物はまだ途中だけど、ちょっと脱線してSpring.NETとの連携を考えてみる。Spring.NET自体はASP.NETに対応していてWebフォームへのインジェクションを実現している。しかしMVCフレームワークではWebフォームの役割は純粋なビュー(表示…

Spring.NET Web Frameworkをさわってみる

Spring.NET 1.1がリリースされたので、さっそく気になる機能をさわってみる。 まずはSpring.NET Web Frameworkから。これはASP.NETでMVCパターンを使った開発をできるようにするもの。具体的には画面遷移の部分、いわゆるコントローラの部分が抽象化されてい…

Spring.NET 1.1 Release

.NET製DIコンテナフレームワークSpring.NETのバージョン1.1がやっとこさリリースされた。Spring.NET - Application Framework新機能としては Inversion of Control Container Aspect-Oriented Programming Framework Aspect Library ASP.NET framework ASP.N…

Spring.NETでカスタム属性を使ったインジェクションを実現する

Spring.NETは非常に便利だが、プログラムがある程度の規模になってくると設定ファイルがかなり膨らんでくる。カスタムパーサーなどを使って記述量を減らしたりはできるが、たかがしれている。コンテナに登録するオブジェクトが少量でも、いちいち設定ファイ…

IExtenderProviderで実装するCommandパターン

普段よく使っている設計パターンをさらしてみる。GoFのデザインパターンにCommandパターンというのがある。「C#デザインパターン」の説明によると Commandは、特定のアクションに対する要求をオブジェクトの中に封じ込め、このオブジェクトを公開された パブ…

イベントリスナーの登録

あるオブジェクト「A」で発生したイベントをあるオブジェクト「B」に伝える場合、通常「event」と「delegate」か 「Observer」パターンを利用するかのどちらかだと思う。 そうした場合、どちらかが片方に依存する事になるが、これが嫌な場合(そんなんあるか…

SAOの定義

.NET RemotingのSAOをSpring.NETのコンテナに登録する方法を調べたのでメモ。 コンテナに登録 まず通常の方法で、SAOで公開したいオブジェクトを定義する。 <object name="hogeService" type="HogeHoge.Services.HogeService, HogeHoge"> </object> このオブジェクトをSAOとして公開するために、「SaoServiceExporter」クラスを利用する。

ちょっと便利なAutoWiring

以下のクラスがあるとする。 namespace Hoge.Logging { class Logger { } } このクラスを利用するクラスとして、以下のクラスを定義する。 namespace Hoge { class HogeManager { private Logger logger; public Logger Logger { set { logger = value; } } …

双方向データバインディング

ASP.NETにはコントロールとオブジェクトのプロパティの値を連結して、表示と更新を同時に行う機能がある。こんな感じで定義すれば、Hogeプロパティの値がテキストボックスに表示されて、値を変更してポストバックすれば自動的にプロパティに値が設定されるよ…