2010-11-27 16 views
2

私は大きくて非常に洗練されたシステムとなるアーキテクチャを研究しています。私たちのv1.0の目標は、最新のn層アーキテクチャーを備えた単一のアプリケーションを構築することです。 SilverlightでUIを構築する可能性が高く、MVVMパターンを使用する可能性があります。MVVM、SOA、AJAX(oh my?)

しかし、将来的にはアプリケーションロジックの一部をサービスとして提供したいと考えています(付加価値ASPXアプリケーション、カスタム拡張、iPhone/Windows Phoneアプリケーションなどをサポートするため)。 (理想的には、私たちが使っているUI技術は、元のアプリケーションと同じサーバー側のロジックを利用します)

私は、MVFとWPFとSilverlightとの併用について読んできました。素晴らしいですが、ViewModelクラスはクライアント側で、プラットフォーム固有のもの(たとえば、.NET/Silverlightで書かれています)のように見えます。

大規模なSilverlight/MVVMアプリケーションをv1として構築し、次にv2で従来のaspx Webサイトとして機能のサブセットを公開したいとします。 JavaScriptでViewModelをすべて書き直さなければならないのですか? MVVMのパターンを構築するためのガイダンスは、サーバーサイドのコードで最も重要なロジックをすべて保持するための目安ですか?

答えて

2
私ははい言う

、すべてのViewModelを書き直す必要があります。

さらに、プレーンな古いHTMLバージョンの場合は、おそらくASP.NET MVCを使用することになります。これは少し異なるアプローチです。さらに、HTMLのバージョンはRIAバージョンとは違って見える傾向がありますので、おそらく別のViewModelが必要になるでしょう。

iPhoneのネイティブバージョンでは、おそらくSilverlightバージョンと同じWebサービスを再利用できます。ただし、UIは完全に書き換えなければなりません。

WCF Data Services(ODATA)を介してデータを公開すると、任意のテクノロジスタックでのデータアクセスがさらに簡単になります(カスタムRESTよりも簡単です)。

1

ない完全なあなたの質問への答えが、クライアント側で使用すると、ノックアウトは、JavaScript用MVVMライブラリと精神/構造でコードを再利用することができる場合がありますhttp://knockoutjs.com/

1

私はあなたのビューモデルを書く方法に依存していると思います。それらが単にプロパティを持つクラスであれば、それらをASP.NET MVCアプリケーションに公開できるはずです。しかし、ビューモデル内でSilverlightコントロールを作成/使用している場合は、もちろん書き直しが必要です。おそらく、ASP.NET MVCとSilverlightの両方で消耗している基底部分を持つように、すべてのビューモデルを構築し、基底を拡張している特定のビューモデルを持ち、テクノロジ固有の部分を追加することもできます。 VMの調べる必要があるもう一つは、SilverlightにSilverlight固有のクラスファイルがあることです。 ASP.NETでどのようにこれらを使用できるかに制限がある場合はありませんが、.NETのどの部分が利用できるかは制限されています。

+0

ViewModelにはSilverlight(またはView)固有のものは何もありませんが、C#コードなので、ViewModelsは通常クライアント側のコードです(正しいのですか?)。 aspxアプリケーションの場合、私はC#コードのクライアントサイドを実行できませんでした(ブラウザでは "クライアントサイド"を意味します)。パターンのその部分が正しいことを確認したい。 ViewModelがASPXのサーバー側であるようにパターンを解釈できますが、次にajaxブラウザコントロールがそれらと通信する方法を検討する必要があります。 – JMarsch

+0

ビューモデルはサーバー側ですが、ビューモデルのデータを使用してビュー(ユーザーに表示されるマークアップ)が生成されます。 ** ASP.NET **を使用している場合(おそらくあなたのaspxで.NETをまったく使用していないのですか?)アプリケーションでは、MVCのパターンを使用して(またはMicrosoftのフレームワークを使用して)、使用されているC#あなたのページを生成する。これと同じパターンを銀色でも使用できます。 –

0

フロントエンドに集中しすぎているのではないでしょうか? あなたの懸念が「悪い」または「間違っている」というわけではありません。ちょうどかもしれないと思います。馬の前にカートを入れてください。

まず、基礎となるビジネスロジックが本当に健全であることを確認してから、それらを公開するサービス/ APIに移行します。このベースが良ければ、次のレイヤーを構築する方が簡単になります。

このレベルで再利用できるほど、次のレイヤー上の異なる実装で重複したり書き換えたりする必要が少なくなります。

+0

私はあなたのポイントを理解し、多くのロジックがサーバー側のビジネスオブジェクトに存在します。しかし、それは私の注意を引くビューモデルのロジックです。ナビゲーションがビューモデルレイヤに属しているように見えます。また、多くのデータ検証ロジックをビューモデルレイヤーで繰り返す必要があるようです(ルールを破るとビジネスオブジェクトがスローされることは問題ありません。UIに余分なコードがあるとエラーを防ぐことができます基本的な検証、最大フィールドの長さなど)。私はできるだけ多くのコードを再利用する方法を検討しようとしています。 – JMarsch

関連する問題