MVVM
ASP.NET MVCにSingle Page Applicationというプロジェクトテンプレートが追加されるようです。 以前ここでも紹介したknockoutjsを利用してMVVMアプリケーションを実装するようで、さらにデータアクセス用の部品に「upshot.js」、ナビゲーション(履歴)管理…
今.NETで業務アプリを作成するのであればRIAService+Silverlightを使うことを勧めするだろうな。理由は高い生産性。 サーバー側の仕組みはEntity FrameworkとRIA Serviceで本当に簡単に作成できるし、クライアント側についてもRIA Serviceの呼び出しやエン…
チュートリアルレベルをさらっと触ってみた感想 案外簡単に利用できるように感じで動的な画面が必要なケースには本当に強力な仕組み。ただ、ASP.NETとの統合利用するためには、ページのGET、POSTではなくAJAX的な実装にする必要があって、HTML中心のWebアプ…
MVVMの良さは動的に変化する画面の制御をViewModelで吸収することで複雑さをコントロールできる点です。WPFやSilverlightなどリッチUIを前提にしている場合はもちろんですが、HTML5によって業務Webアプリも当たり前のようにリッチUI化することは予想できます…
ViewMakerのサンプルBurgerShopはMVVM+ドメインモデルで作成しています。このサンプルを作成している時に感じたのは、ViewModelのロジックをビジネスロジックとして捉えるとどんどんModel側のコードに吸収されていきます。例えば、オーダーを登録するために…
WPFにWeakEventパターンというものがあります。これについてすこし考えてみたいと思います。まずはMSDNからの抜粋でどのようなものか見てみましょう。 一般的なアプリケーションでは、イベント ソースにアタッチされているハンドラが、このハンドラをソース…
フレームワークレベルでは丁寧なメモリリーク対策が必要と思いますが、アプリケーションレベルではメモリリークに対して神経質なコードを書かなくても良いと思っています。 ライフサイクルの長いオブジェクトを識別し管理する メモリリークの定義もいろいろ…
最近 LightSwitchをチェックしているのですが、MVVMの思想が入っているかなと思って検索してみたら、やはり同じように感じる人がいるようです。 This Is How LightSwitch Does MVVM This article, covers some of the problems in implementing MVVM, mostly…
MVVM界隈ではViewModelを作成するのが大変という理由でViewModelを自動生成をするツールをよく見るけど、ViewModelよりもViewすなわちXAMLを作る方が大変じゃない? C#書ける技術者とXAMLを書ける技術者の数の違いもあるし、リファクタリングなどのツールの…
ViewMakerを使って一通りアプリケーションを作成しました。アプリケーションとしてはそれ程複雑ではありませんが、単純なサンプル以上の画面を作成できたと考えています。素のWPFで作成する場合でもそれなりに苦労する画面だと思っています。構築を通じてVie…
作成したアプリケーションをユーザに見せると、ユーザから要望やフィードバックを得られることが良くあります。簡単なレイアウト修正であればViewMakerを使うとその場で修正できるので相談しながら微調整を行います*1。その以外のよくあるフィードバックとし…
全体レイアウトは完成しているので、次はツリービューで選択した内容を表示する詳細情報のレイアウトを作成していきます。レイアウトの作成はレイアウトエディターを使って手動で作成していきます。 ここで操作上の注意なのですが、詳細情報を編集するための…
今回は自動的に作成されたViewをモックアップで示された構造にレイアウトエディターを使って構成し直します。構成は以下の手順で行います。 全体構成をトップレベル(第1レベル)のGridで構成 第2レベルにアイテムをグルーピングする目的のパネルを配置 第3…
今回は画面全体に対応するViewModelを定義します。検索用文字列、データ表示用のコレクション、詳細表示、および各種コマンド(開く・クリア・検索)のプロパティを定義します。画面の構成要素としての入出力項目およびユーザ機能としてのコマンドをプロパテ…
今回からViewModelの開発を行いますが、まず最初に重要な構成要素であるツリービューに対応するViewModelのクラスを定義します。ツリービューは階層型データを表示するコントロールなので、ViewModel側も階層型の構造をもつクラス構造を用意します。また、階…
ViewMakerを使いViewModelファーストのシナリオで具体的なアプリケーションを今回から数回にわたって作成していきます。作成するアプリケーションは単純なサンプルでなく、より複雑な要件が含まれたものにします。ただあまり複雑にすると説明できなくなるの…
以下のコードだけでDBアプリができてしまいます。SQLコードゼロ、XAMLゼロなので本当にC#だけで開発ができてしまいます。 Naked Objectsの思想に近いかもしれませんが、ドメインモデル+ViewModelで業務アプリ開発のブレークスルーを目指したいです。 using …
今回はViewMakerで利用しているサービスについて説明します。 ServiceLocatorによりサービス切り替え ViewMakerではViewLayoutの生成や永続化、XAMLの生成などの処理をサービスとして定義・実装しています。これらのサービスはMEFを使ってIoCの仕組みで入れ…
今回はView側で行う入力検証処理です。WPFもSilverlightも同時的な入力検証処理を持っていますが、これらは通常画面上で入力されたタイミングでチェック処理が発生します。しかし業務アプリではボタン押下時などに強制的に全入力項目をチェックしたり、一部…
ViewModelに引き続き、ViewModelから送出されるイベントをハンドリングするView側のヘルパー処理について説明します。 MEFによる入れ替え可能なヘルパー処理の実装 ヘルパー処理のインタフェースはIViewCommandHelperで定義されており、MEFを使って実装を切…
現在作成しているViewMakerもようやくベータ版(機能FIX)をリリースできそうになってきました。 ベータ版をリリースするにあたり作成したコードについて内容を再確認しています。それに合わせて主要な箇所を説明していきたいと思います。まず最初に、ViewMo…
MVVMで業務アプリでよく出てくるシナリオでMVVMでどのように実装すれば良いか困るシナリオがあります。メッセージボックスの表示や画面遷移などがよく見かけますがこれ以外も案外あります。たとえば以下のシナリオです。 コマンド処理時のカーソル状態制御 …
ViewModelをベースに開発していると画面の作成も普通のクラスと同じような仕組みで開発ができます。これはC#などの仕組みを効果的に使えることを意味しており非常に強力です。 DataEditViewModel ViewMakerでもViewModelをベースに開発をしています。その中…
ViewMakerをいろいろ機能強化しました。 主な強化は以下の3点です。 ・レイアウト機能の強化 ・コントロール設定項目のガイドなどの操作性の向上 ・LOB(業務)アプリで利用するイベント用のビヘイビアの追加 レイアウト機能の強化 業務シナリオで作成するよ…
前回まではWPF版でしたが、今回はSilverlight版での開発を説明します。ViewMakerの機能は、WPF版とSilverlight版は同じ機能を持っていますのでほぼ同じような開発になります。 Silverlight版でLOBアプリはWCFベースのドメインサービスを利用した方式で説明し…
前回は簡単な一覧、詳細画面をViewModelをからView(XAML)を生成して作成しました。同じようなことはデータベースから画面を自動生成するようツールでもできます。これらのツールを使ってわかるのですが、簡単な範囲では良いのですが少し複雑なシナリオにな…
今回は前回のViewModelから自動生成した画面をViewMakerのレイアウト編集機能をつかってカスタマイズします。 1.レイアウト編集画面の表示 レイアウトを編集するための画面は画面上で右クリックして「Edit Layout」を選択します。 2.レイアウト要素の編集 そ…
ViewMakerを利用したMVVMの開発では、まずViewModelを作成してViewを組み立てます。最初にViewModelを作ってそのあとでViewModelを利用してViewを作成する開発のことを「ViewModelファーストな開発」と勝手に呼ぶようにしました。この「ViewModelファースト…
ViewModelファーストな開発をできないか可能性を考えていた中で作成したツールでそれなりに実用性がありそうなので公開します。 使い方などの情報はおいおい公開していきますが、それほど難しくないので使ってみてもらえればわかるかなと思っています。 ポイ…