問題タブ [presentation-model]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - プレゼンテーション モデルを Web フォームでどのように使用しますか?
私は ASP.NET Web フォームを使用してプレゼンテーション モデルを使い始めましたが、このパターンがかなり気に入っています。私が本当に問題を抱えているのは、いくつかのクラス、主にプレゼンテーション モデル、ビジネス オブジェクト、ドロップダウン リストのデータなどをインスタンス化する場所です。そのため、いくつかのヒントやプレゼンテーション モデルの完全な例を使用できます (これまでのところ、一部しか見つかりませんでした)。
asp.net - DataSet モデルに対する XML データ モデルの利点は何ですか?
私の現在の仕事では、.NET/SQL Server ベースの CMS システムを使用しています。一部の内部使用のためにいくつかのモジュールをカスタマイズしているときに、DataGrid/DataList/Repeater コントロールにバインドされた一般的な結果セットを介してデータを返す API ではなく、API が XML を返すことに少し驚きました。ノード/コレクションであり、XSLT 変換に渡され、その方法でページにレンダリングされました。
このようなモデルを使用する利点は何ですか?
apache-flex - プレゼンテーション モデルでのクライアント側ドメイン オブジェクトの状態の処理
私は現在、プレゼンテーション モデル パターンを使用して Flex/PHP プロジェクトのクライアント側を構築しています。
私が達成しようとしていること:
現在、Node.js というドメイン オブジェクトに関する編集不可能な情報を表示するビューがあります。ノードが編集可能で、ユーザーが適切な権限を持っているかどうかに応じて、このオブジェクトを変更できる追加のビューが利用可能になります。加えられた変更は、ユーザーが「変更を保存」することを決定した場合にのみサーバーにコミットされます。NodeA に変更が加えられ、ユーザーが変更を保存せずに別の NodeB に移動した場合、NodeA は元の状態に戻ります。
設計:
現在のノードへの参照を保持する情報ビューの PM があります。編集ビューの PM はこの情報 PM から拡張され、ラップされた Node オブジェクトに変更を加えるメソッドが追加されます。両方の PM には同じノード参照が注入されており、情報/編集ビューのすべてのフィールドは PM を介してノードにバインドされています。
問題:
ユーザーが NodeA に変更を加えたがコミットしていない場合、元の状態に戻すための洗練された解決策が思い浮かびません。基本的に、これまで私が考えていたことは、編集 PM で個別の値のコピーを保持することです。新しいノード参照をクローン作成するか、ノード プロパティの同一のセットを使用します。ノードにはすでにドメイン ロジックが格納されているため、これら 2 つのうち前者の方が適しているように思えますが、限定された範囲で使用される場合でも、一意のドメイン オブジェクトのクローンを作成することは悪い習慣ではないかと思います。
viewmodel - ViewModel パターンの最大の問題点は何ですか?
Glenn Block と私は一緒に ViewModel パターンに取り組んできました。パターンに関連する最大の問題点を特定しようとしており、フレームワークのサポートを追加して問題を軽減することを目標としています。
今夜、Glenn は「View Model」を投稿しました – 映画、投票してください. 私たちはあなたから聞きたい。ViewModel パターン (Model-View-ViewModel または MVVM とも呼ばれます) を実装する際の最大の問題点について、ここに投稿 (および投票) してください。フレームワークがあなたの生活を楽にする方法を教えてください!
WPF と Silverlight の両方を検討しています。
では、ViewModel をより簡単にするために、フレームワークに何をしてほしいか教えてください。
design-patterns - MVP とプレゼンテーション モデル、どちらが優れていますか?
アップデート
MVP とプレゼンテーション モデル、どちらが優れているか (デスクトップ アプリケーションの場合) -
- 保守性
- テスト容易性
- 複雑
- 柔軟性
- 関心の分離 - 1 つのコンポーネント (ビュー、コントローラー、モデルなど) を変更しても、他のコンポーネントへの影響は最小限です。
- パフォーマンス(オプション)
- メモリ使用量 (オプション)
c# - プレゼンテーション モデル
コントローラーからフォームラベルの値を設定したい。List<String> をパラメーターとして送信し、個々のラベルを設定するフォームを使用するか、コントローラー クラスからすべてのラベルの値を設定できますか? フォームからロジックを抽出するレベルで混乱しています。
wcf-ria-services - 1 対多または多対多の関係を持つ RIA サービス プレゼンテーション モデル
RIA で動作するプレゼンテーション モデル (こことここで説明) を取得しようとしています。私が見つけることができるすべての例は、1対多または多対多の関係を持たない単純でフラットなデータエンティティです。これは、具体的には、連想関係への更新と挿入では機能しません。
正常に動作するクエリ - プレゼンテーション クラスを Association 属性 (および必要に応じて Include 属性) でマークアップしており、データがクライアント側にどのように読み込まれ、そこでエンティティとして保持されるかについて十分に理解しています。また、カバーされた新しいエンティティの挿入もあります。ただし、次の問題が発生しています。次の例では、単純な Album エンティティと Artist エンティティがあると仮定します。ここで、Album には 1 人のアーティストが含まれ、Artist にはゼロから多数のアルバムが含まれる場合があります。どちらにも Name プロパティがあります。
- クライアント側では、myArtist.Albums.Add(anAlbum) または myArtist.Albums.Remove(anAlbum) を実行しても何も起こりません。HasChanges は false を返します。( myArtist と anAlbum は、エンティティをロードし、特定のエンティティへの参照を取得するために反復することによって、コードでのみ取得されたことに注意してください: UI や DomainDataSources ではまだ何もしていません。
- アーティストと SubmitChanges で Name を更新すると、Update メソッドがサーバーで呼び出されると、Albums コレクションが null になります。
誰か提案がありますか、またはより複雑なオブジェクトを使用する例を教えてもらえますか?
EDIT(後世のために上記を保持):子エンティティが変更済みとしてマークされていないため、2番目の問題(Updateがサーバーで呼び出されたときにnullとして表示されるエンティティまたはエンティティのコレクションへの参照)が存在するようですそのため、シリアル化されて送り返されていません。[Composition] を使用してそれを強制できることは知っていますが、そのように動作するようになりましたが、これは合成関係ではなく、両方のエンティティを「トップレベル」エンティティにしたいと考えています。エンティティを変更済みとしてマークするにはどうすればよいですか?
wcf-ria-services - RIAサービス:複数のプレゼンテーションモデルオブジェクトの挿入
LINQ to SQLクラスに加えてプレゼンテーションモデルを使用して、RIAサービスを介してデータを共有しています。Silverlightクライアントで、いくつかの新しいエンティティ(アルバムとアーティスト)を作成し、それらを相互に関連付けました(アルバムをアーティストのアルバムコレクションに追加するか、アルバムにArtistプロパティを設定します-どちらか1つが機能します)。それらをコンテキストに合わせて、変更を送信しました。
サーバー上で、2つの別々のInsert呼び出しを受け取ります。1つはアルバム用、もう1つはアーティスト用です。これらのエンティティは新しいため、ID値は両方ともデフォルトのint値に設定されます(0-私のDBによっては、これがDB内の有効なIDである可能性があることに注意してください)。これは、私が知る限り、IDを設定しないためです。クライアント上の新しいエンティティの場合。アルバム挿入にアーティストが含まれ、アーティスト挿入にアルバムが含まれていても、両方がエンティティであり、L2Sコンテキストがそれらを認識するため、RIAサービスを介してLINQをSQLクラスに転送する場合、これはすべて正常に機能します。ただし、カスタムプレゼンテーションモデルオブジェクトを使用して、それらをLINQ to SQLクラスに変換し直して、プロセス内の関連付けを維持し、L2Sコンテキストに追加できるようにする必要があります。
簡単に言えば、私が知る限り、これは不可能です。各エンティティは独自のInsert呼び出しを取得しますが、IDがないと関連付けが失われるため、1つのエンティティを挿入する方法はありません。データベースがGUID識別子を使用している場合、クライアントでGUID識別子を設定できるため、話は別です。
これは可能ですか、それとも別のデザインを追求する必要がありますか?
extjs - Webアプリケーションで複数のデバイスのサポートを実装するのに最適な方法
私のクライアントは、「可能なすべてのデバイス」をサポートするビジネスアプリケーションを望んでいます。問題のアプリケーションは本質的にWebアプリケーションであり、「すべての可能なデバイス」であり、携帯電話、ネットブック、iPad、その他のブラウザをサポートするデバイスなどが含まれると思います。アプリケーションは、キャプチャするデータや実行するその他の機能(レポート)。
アプリケーションの複雑さが増していることを尊重し続けると、他のデバイスで機能しない可能性が高くなると思います。Webアプリケーションが従来どのように複数のデバイスをサポートしているか知りたいですか?プレゼンテーション層には複数のバージョンがありますか(モバイルデバイス専用のm.website.comを何度も見つけるように)?さらに、私のアプリケーションがJava Script、RIA(Flash、SilverLight)を利用する場合、結果と回避策は何ですか?
Mineは.Netベースのアプリケーションであり、スタックにはExtJSJavaスクリプトライブラリも含まれています。確かに使いたいのですが、HTMLではなくJava Scriptで多くの作業を行うことを考えると、これは問題になる可能性があります。
上記の答えは説明的かもしれません。すでに処方されているものがある場合は、リンクを共有してください。ありがとう。