|
||||||||||||
| 1 2 3 4 次のページ | ||||||||||||
| .NETにおけるもう1つのフレームワーク | ||||||||||||
|
「第1回:あらためて「.NET」を考える」では.NETという言葉の全体像として、オープンでネットワーク化されたコネクテッド(Connected)な社会を意識した.NETという観念的な意味に加え、モジュール性の確保、非ビジネスロジック実装からの開発者の解放、セキュリティの確保などの側面を全体的な視点で説明しました。 前回は実行基盤を中心として.NETの具体的な姿を実感していただきましたが、今回は開発という視点に絞ってその本質をみていきましょう。第1回で、「非ビジネスロジック実装からの開発者の解放」という点を述べましたが、それが開発の世界でどのように具体化されているか実感されることでしょう(ここで記載する例は代表的なもののみですが、動作詳細を理解してもらうためではなく、それが目指している考え方を示す目的で例示していきます)。 .NETには、開発者が本来埋め込むべきビジネス的な要件や振る舞いとシステム的な振る舞いの両者を混在させない、もしくは後者をできるだけ簡単に記述できるようないくつかの仕組みが備わっています。 まずは、前回でも少しふれた「属性」とよばれるものについて、その利点やインパクトという視点も踏まえ、より詳しく説明します。.NETで開発をされた方はご存知かと思いますが、「属性」は.NETの開発における非常に多くの場面で活用されています。この「属性」は、ビジネスロジックと非ビジネスロジックなど性質に応じて実装を分離する仕組みの1つであり、開発者自身でも利用することが可能です。 例えば、AttributeUsageというキーワードを記述したクラスを作成してみます。 カスタム属性の実装(C#)
public enum SampleValue { A, B, C }
実は、これだけでカスタム属性(=開発者が独自に構築する属性)の作成は完了しています。では、この属性をクラス定義の中で以下のように使用してみましょう。 カスタム属性を使ったクラス(C#)
[MyCustom(SampleValue.B)]
上記のようにクラスにカスタム属性を定義しておくと、Mainなどの実際の処理の中で、カスタム属性を利用してそれに応じた振る舞い(動き)を追加することができます。以下の例では、ただ単に設定された属性の値を取り出してコンソールに出力しています(図1)。 カスタム属性の利用(C#)
class Program
ここでは、わかりやすいように非常に簡単な例示をおこないましたが、この仕組みがもたらすメリットとインパクトを理解しておくことは重要です。それは、開発時に使用するあらゆるクラスやメソッドなどの実装において、「属性」を使うと本来のロジック(メソッドの中のコードなど)とは完全に分離した形で機能を組み込めるという点です。 例えば、.NETリモーティングなどでも使用されているRealProxyをこのカスタム属性と共に利用することで、プロキシと呼ばれる代理のオブジェクトを仲介させることができます。これにより、クラスのコンストラクタやインスタンスからのメソッド呼び出しのたびにカスタムな振る舞いをメソッドのロジック本体と分離して実装するといった応用も可能です(実際にはオーバーヘッドなども考慮する必要があります)。また、構成ファイル(configファイル)にカスタムな定義を記述して、より動的に振る舞いを変えるといった実装も可能でしょう。 .NETの開発というと、開発ツールがコードの大部分を生成してくれるため、高度なフレームワークを開発者が組み込んでいくといったことが難しいと思われがちです。しかし、こうした仕組みを使うことで、開発チームの方針に応じた高度な抽象化を実装系の中に組み込んでいくことが可能です。 例えば、サードベンダーによる.NETのフレームワークなどもいくつか存在していますし、サーバ系のフレームワークを自社で構築している企業なども存在します。 |
||||||||||||
|
1 2 3 4 次のページ |
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||


