こんにちは
私はアプリケーションのバックエンドを構築しています(データアクセスにnHibernateを使用しています)。
これまで私はデータを操作するための簡単なWebサービスを持っていましたが、今では(Webフォームを使用して)アプリケーション用のWeb UIを開発する必要があります。私はいくつかの異なるWebフレームワーク(webformsMVP、spring.net web)で見てきたし、また、いくつかのクライアント側のJSのフレームワーク(knockout、angular)で、と私は本当に私のために最善のだろうかを決定することはできません、と
それをすべて統合する方法。
私は皆さんからいくつかの洞察を得ることを望んでいました。
私はこのようなものにするために私の一般的なワークフローのためにたいと思う:
nhibernateを使用するC#アプリケーションのasp.net webforms UIを開始する
- ビューが作成され、そのプレゼンターを呼び出します。
- Presenterは情報を取得するためにビジネスレイヤーにコンタクトします(DAOなどにコンタクトします)
- Presenterはビューに表示されるビューモデルオブジェクトを返します。
- ユーザーは、Viewが
- プレゼンターは、モデルのエンティティにビューモデルを変換し、それを送信するプレゼンタに戻って操作されたデータのビューモデルを送信
- (多分、さらに必要な情報を取得するためにいくつかのAJAXを使用して)データを操作しますビューモデルとモデルのエンティティ間をマッピングする方法
はA.:ビジネス層
は、今ここで私はトリッキー見つけ部品があります10 DAO(実際にはnHibernateの2番目のレベルのキャッシュに格納)から変更されていないエンティティを取得するには、エンティティのIDを使用する必要があると思います。
は(別のオプションは、私は、現在のユーザーのセッションで編集していたエンティティを格納することです。しかし、私は、キャッシングのこの種は、NHibernateはのキャッシュと二枚舌を作成することを恐れている。)
B.上の変更を変換する方法ビューモデルをモデルエンティティの変更に変換する
モデルエンティティのプロパティを変更するときに、いくつかのロジックが必要です。例えば
は、別の部署から従業員を動かすために、私はthis-
department1.Employees.Remove(employee);
department2.Employees.Add(employee);
ではなく、むしろ、この許可しない:
employee.MoveToDepartment(department2);
を私はこれが複雑に得ることができる怖いですビューモデルからモデルに変換するときに使用します。
上記の2つの質問、およびクライアント側/サーバー側のフレームワークについての考えはすべて妥当性があります。
P.S.アプリの簡単な背景:
- ウェブアプリケーションの1ページには、会社の構造(部門、部門など)がツリーとして表示され、ユーザーはドラッグアンドドラッグだけでなく、さまざまなノードをクリックして編集することができますノードを削除して場所を変更します。
-anotherページが表示され、現在の在庫状況(それぞれが、それは、多くのマシンが現在その倉庫などで動作しているか、持っているどのように多くの製品ウェアハウス - 用)
- (基本的にはデータを表示し、編集を許可するいくつかのより多くのページ.. 。)
おかげ
ジョニー