MVVM

ASP.NETもMVVMに向かうのか

ASP.NET MVCにSingle Page Applicationというプロジェクトテンプレートが追加されるようです。 以前ここでも紹介したknockoutjsを利用してMVVMアプリケーションを実装するようで、さらにデータアクセス用の部品に「upshot.js」、ナビゲーション(履歴)管理…

いま.NETで業務アプリを作成するんだったらRIA Serviceフレームワークを利用する

今.NETで業務アプリを作成するのであればRIAService+Silverlightを使うことを勧めするだろうな。理由は高い生産性。 サーバー側の仕組みはEntity FrameworkとRIA Serviceで本当に簡単に作成できるし、クライアント側についてもRIA Serviceの呼び出しやエン…

knockoutjsメモ

チュートリアルレベルをさらっと触ってみた感想 案外簡単に利用できるように感じで動的な画面が必要なケースには本当に強力な仕組み。ただ、ASP.NETとの統合利用するためには、ページのGET、POSTではなくAJAX的な実装にする必要があって、HTML中心のWebアプ…

HTML5時代のMVVM knockout

MVVMの良さは動的に変化する画面の制御をViewModelで吸収することで複雑さをコントロールできる点です。WPFやSilverlightなどリッチUIを前提にしている場合はもちろんですが、HTML5によって業務Webアプリも当たり前のようにリッチUI化することは予想できます…

MVVMでModelをリッチにしていくとViewModelの処理が小さくなる?

ViewMakerのサンプルBurgerShopはMVVM+ドメインモデルで作成しています。このサンプルを作成している時に感じたのは、ViewModelのロジックをビジネスロジックとして捉えるとどんどんModel側のコードに吸収されていきます。例えば、オーダーを登録するために…

WeakEventパターンを考える

WPFにWeakEventパターンというものがあります。これについてすこし考えてみたいと思います。まずはMSDNからの抜粋でどのようなものか見てみましょう。 一般的なアプリケーションでは、イベント ソースにアタッチされているハンドラが、このハンドラをソース…

MVVMアプリケーションにおけるメモリリーク対策

フレームワークレベルでは丁寧なメモリリーク対策が必要と思いますが、アプリケーションレベルではメモリリークに対して神経質なコードを書かなくても良いと思っています。 ライフサイクルの長いオブジェクトを識別し管理する メモリリークの定義もいろいろ…

LightSwitchはMVVMでした

最近 LightSwitchをチェックしているのですが、MVVMの思想が入っているかなと思って検索してみたら、やはり同じように感じる人がいるようです。 This Is How LightSwitch Does MVVM This article, covers some of the problems in implementing MVVM, mostly…

ViewModelとView(XAML)、どっちが大変?

MVVM界隈ではViewModelを作成するのが大変という理由でViewModelを自動生成をするツールをよく見るけど、ViewModelよりもViewすなわちXAMLを作る方が大変じゃない? C#書ける技術者とXAMLを書ける技術者の数の違いもあるし、リファクタリングなどのツールの…

ViewMakerで作成するリアルアプリケーション まとめ

ViewMakerを使って一通りアプリケーションを作成しました。アプリケーションとしてはそれ程複雑ではありませんが、単純なサンプル以上の画面を作成できたと考えています。素のWPFで作成する場合でもそれなりに苦労する画面だと思っています。構築を通じてVie…

ViewMakerで作成するリアルアプリケーション フィードバックの反映

作成したアプリケーションをユーザに見せると、ユーザから要望やフィードバックを得られることが良くあります。簡単なレイアウト修正であればViewMakerを使うとその場で修正できるので相談しながら微調整を行います*1。その以外のよくあるフィードバックとし…

ViewMakerで作成するリアルアプリケーション 主要機能の開発(その4)

全体レイアウトは完成しているので、次はツリービューで選択した内容を表示する詳細情報のレイアウトを作成していきます。レイアウトの作成はレイアウトエディターを使って手動で作成していきます。 ここで操作上の注意なのですが、詳細情報を編集するための…

ViewMakerで作成するリアルアプリケーション 主要機能の開発(その3)

今回は自動的に作成されたViewをモックアップで示された構造にレイアウトエディターを使って構成し直します。構成は以下の手順で行います。 全体構成をトップレベル(第1レベル)のGridで構成 第2レベルにアイテムをグルーピングする目的のパネルを配置 第3…

ViewMakerで作成するリアルアプリケーション 主要機能の開発(その2)

今回は画面全体に対応するViewModelを定義します。検索用文字列、データ表示用のコレクション、詳細表示、および各種コマンド(開く・クリア・検索)のプロパティを定義します。画面の構成要素としての入出力項目およびユーザ機能としてのコマンドをプロパテ…

ViewMakerで作成するリアルアプリケーション 主要機能の開発(その1)

今回からViewModelの開発を行いますが、まず最初に重要な構成要素であるツリービューに対応するViewModelのクラスを定義します。ツリービューは階層型データを表示するコントロールなので、ViewModel側も階層型の構造をもつクラス構造を用意します。また、階…

ViewMakerで作成するリアルアプリケーション(序章)

ViewMakerを使いViewModelファーストのシナリオで具体的なアプリケーションを今回から数回にわたって作成していきます。作成するアプリケーションは単純なサンプルでなく、より複雑な要件が含まれたものにします。ただあまり複雑にすると説明できなくなるの…

Entity Framework Code First + ViewMakerの開発は楽しい!!

以下のコードだけでDBアプリができてしまいます。SQLコードゼロ、XAMLゼロなので本当にC#だけで開発ができてしまいます。 Naked Objectsの思想に近いかもしれませんが、ドメインモデル+ViewModelで業務アプリ開発のブレークスルーを目指したいです。 using …

ViewMakerにみるMVVMの実装(4)

今回はViewMakerで利用しているサービスについて説明します。 ServiceLocatorによりサービス切り替え ViewMakerではViewLayoutの生成や永続化、XAMLの生成などの処理をサービスとして定義・実装しています。これらのサービスはMEFを使ってIoCの仕組みで入れ…

ViewMakerにみるMVVMの実装(3)

今回はView側で行う入力検証処理です。WPFもSilverlightも同時的な入力検証処理を持っていますが、これらは通常画面上で入力されたタイミングでチェック処理が発生します。しかし業務アプリではボタン押下時などに強制的に全入力項目をチェックしたり、一部…

ViewMakerにみるMVVMの実装(2)

ViewModelに引き続き、ViewModelから送出されるイベントをハンドリングするView側のヘルパー処理について説明します。 MEFによる入れ替え可能なヘルパー処理の実装 ヘルパー処理のインタフェースはIViewCommandHelperで定義されており、MEFを使って実装を切…

ViewMakerにみるMVVMの実装(1)

現在作成しているViewMakerもようやくベータ版(機能FIX)をリリースできそうになってきました。 ベータ版をリリースするにあたり作成したコードについて内容を再確認しています。それに合わせて主要な箇所を説明していきたいと思います。まず最初に、ViewMo…

MVVMで業務アプリを作成するときに困る典型なシナリオ

MVVMで業務アプリでよく出てくるシナリオでMVVMでどのように実装すれば良いか困るシナリオがあります。メッセージボックスの表示や画面遷移などがよく見かけますがこれ以外も案外あります。たとえば以下のシナリオです。 コマンド処理時のカーソル状態制御 …

ViewModelのパワー

ViewModelをベースに開発していると画面の作成も普通のクラスと同じような仕組みで開発ができます。これはC#などの仕組みを効果的に使えることを意味しており非常に強力です。 DataEditViewModel ViewMakerでもViewModelをベースに開発をしています。その中…

ViewMakerの機能強化

ViewMakerをいろいろ機能強化しました。 主な強化は以下の3点です。 ・レイアウト機能の強化 ・コントロール設定項目のガイドなどの操作性の向上 ・LOB(業務)アプリで利用するイベント用のビヘイビアの追加 レイアウト機能の強化 業務シナリオで作成するよ…

ViewModelファーストな開発(その4)

前回まではWPF版でしたが、今回はSilverlight版での開発を説明します。ViewMakerの機能は、WPF版とSilverlight版は同じ機能を持っていますのでほぼ同じような開発になります。 Silverlight版でLOBアプリはWCFベースのドメインサービスを利用した方式で説明し…

ViewModelファーストな開発(その3)

前回は簡単な一覧、詳細画面をViewModelをからView(XAML)を生成して作成しました。同じようなことはデータベースから画面を自動生成するようツールでもできます。これらのツールを使ってわかるのですが、簡単な範囲では良いのですが少し複雑なシナリオにな…

ViewModelファーストな開発(その2)

今回は前回のViewModelから自動生成した画面をViewMakerのレイアウト編集機能をつかってカスタマイズします。 1.レイアウト編集画面の表示 レイアウトを編集するための画面は画面上で右クリックして「Edit Layout」を選択します。 2.レイアウト要素の編集 そ…

ViewModelファーストな開発(その1)

ViewMakerを利用したMVVMの開発では、まずViewModelを作成してViewを組み立てます。最初にViewModelを作ってそのあとでViewModelを利用してViewを作成する開発のことを「ViewModelファーストな開発」と勝手に呼ぶようにしました。この「ViewModelファースト…

ViewModelからViewを作成するツールMVVM ViewMakerを公開

ViewModelファーストな開発をできないか可能性を考えていた中で作成したツールでそれなりに実用性がありそうなので公開します。 使い方などの情報はおいおい公開していきますが、それほど難しくないので使ってみてもらえればわかるかなと思っています。 ポイ…