2017-03-17 11 views
0

ビューモデルがビジネスロジックを取得する方法は何ですか?私は3つのモデルを持っており、それらの3つのモデルのデータに基づいて、(モデル4を言う)いくつかの新しい値を作成して、モデル4のデータを表示します。ビジネスロジックとmvvmのViewModelとのやり取りをどのように設計しますか

メモ私はコントロールを持っていないので、サービス側に計算ロジックを置くことはできません。私は私の側でモデル4を計算しなければなりません。このモデル4の値はどこで計算しますか?

質問 1)サービスフォームViewModel、つまりGetModel_1_Data、GetModel_2_Data、GetModel_3_Dataを呼び出すことをお勧めしますか?

2)mvvmごとに、私はViewModelでビジネスロジックを持つことはできません。私たちが達成できるさまざまな方法は何か...これは?

3)Mvvmでは、UIが消費するモデルは基本的にはINotifyPropertychangedのモデルを参照してください。それを呼び出す正しい言葉は何ですか?UIモデルとして呼び出すことはできますか?またはUIモデルオブジェクト?その他のモデルは、単純なCLRオブジェクトと似ています。

多くの人がmvvmについて読んでいると、多くの人がModel.whicモデルのロジックを維持すると言っています。彼らは明白なクラスを意味していません...またはUIモデル(INotifyPropertyChangedを持っています) そうでなければ、 POCOモデルからUIモデルを作成しますか?この層はそう...

ありがとう、

答えて

0

..ifと呼ばれるものを私はあなたが単一のクラスとしてモデルを考えることを止めたら、すべてが解消すべきだと思います。 MVVMはすべてプレゼンテーションレイヤデザインに関するものです。プレゼンテーションに集中するために、ビジネスロジックレイヤ全体をモデルに抽象化します。この意味で、Modelは単一のクラスまたはコンポーネントではなくレイヤーです。それ自体は独自のデザインパターン(サービス、DDD、CQRSなど)を持つことができます。

あなたの質問に答えるために

注私はそれらcontrol..on持っていけないので、私はサービス側で計算ロジックを置くことはできません。私は私の側でモデル4を計算しなければなりません。このモデル4の値はどこで計算しますか?

これは、計算ロジックがあると思いますかに依存します。ビジネスロジックの場合は、 "Model"レイヤーに配置する必要があります。必ずしも明確な線ではない。時には、それはあなたが作る決定/分類です。

質問1)には、サービス形態のViewModelすなわちGetModel_1_Data、GetModel_2_Data、GetModel_3_Dataないにいただきました!良い習慣を呼び出すことをお勧めますか?

私はなぜそうは見ませんか?代替的には、追加のアプリケーション・サービスを追加する(またはサービスを表示)ビューモデル自体からのviewmodelsの作成を分離する層にあります。

2)mvvmごとに、私はViewModelでビジネスロジックを持つことはできません。私たちが達成できるさまざまな方法は何か...これは?

上記のように、計算ロジックがビジネスロジックであると考える限り、それらは「モデル」に入れる必要があります。モデル4は、純粋なプレゼンテーションであること、を除きます。代わりに上記のものがあります

3)UIで消費されるモデルは基本的にINotifyPropertychangedモデルです。どのようなものを呼び出すのが正しいのですか... UIモデルとして呼び出すことはできますか?またはUIモデルオブジェクト?その他のモデルは、単純なCLRオブジェクトと似ています。私は多くの人がModel..whicモデル..doesのロジックを保つために言うMVVMについて読んだとき、彼らは通常のViewModel

と呼ばれている

彼らは、彼らが持っている平野CLR classes..orのUIモデルを(意味INotifyPropertyChanged)そうでなければ、POCOモデルからUIモデルを作成するためのレイヤーが必要ですか?この層はそう..ifと呼ばれるもの...

モデルは、ビジネス・ロジック・オブジェクトまたはビジネスロジック層を意味することができ、上記の文脈では、それは

+0

ありがとうそんなにXiaoguoのGeをビジネスロジック層を意味します。私はあなたが説明した方法が好きだった。 Viewmodelがビジネスレイヤー/モデルレイヤーを消費しているウェブリンクを教えてください。コンストラクターインジェクションとなると思います。私はとても大変です。任意のWebリンクを提供してください。また、ビューモデルがビジネス層とどのように対話できるかを提案してください。 – sri

+0

コードサンプルがありません。しかし、より正式な答えを探しているなら、これは助けになるかもしれません。https://msdn.microsoft.com/en-us/magazine/jj694937.aspx –

+0

ありがとうございますXiaoguo – sri

関連する問題