質問

見つけました 記事 このテーマについては Microsoft 従業員が述べていますが、これについてより堅牢なフレームワークを実装した人はいるでしょうか?簡単に移植できる WinForms 用の軽量フレームワークはありますか?私はかなり早くスピードを上げて、より賢い人がすでにこれを行っているときにこれを処理するための独自のフレームワーク/ライブラリを作成することを避けたいと考えています。

見ていない モバイル ソフトウェア ファクトリー P&Pグループから出ていますが、ちょっと重いかなと思います。一見の価値はありますか?

編集:ASP.NET MVC プロジェクトに関する情報を探しているわけではありません。コンパクトなフレームワーク「WinForms」の実装と、それを使用して MVC を実装する方法について質問しています。

役に立ちましたか?

解決

個人的には、Mobile Software Factory は CF にとってあまり喜ばしいことではないと考えています。私たちはまだその一部 (EventBroker) を仕事で使用していますが、可能であればその部分も削除したいと考えています (汎用イベントをサポートしておらず、引数を EventArgs から強力な型にキャストする必要があるため)。作業中の姉妹プロジェクトはこれを UI の一部に使用していましたが、パフォーマンスの問題により削除する必要がありました (別の大きなプロジェクトですが、それ自体にも追加のパフォーマンスの問題があります)。

P&P ライブラリが提供する MVP フレームワークで私が見つけた問題は、フォームを所有するプレゼンター/コントローラーではなく、フォームとコントロールの独自のプレゼンター (「それは単なるビューです」を読んでいない人) であることです。実用的なプログラマー?)。これは MS の「フォーム ファースト」という迅速なアプリケーション開発の理念に見事に適合していますが、CE で Windows ハンドルがどれほど高価になるかを考えると (大量の Windows ハンドルがある場合には) 最悪です。私たちは職場で非常に大規模な CF アプリケーションを実行しており、独自の MVC フレームワークを展開しています。独自のものを作成するのは難しくありません。すべてをコントローラー、ビュー、ビジネス オブジェクト、サービスに分離し、コントローラー間の対話を制御する UIController を用意するようにしてください。

実際にはさらに一歩進んで、コントローラー -> ビュー -> レイアウト パターンを使用してフォーム/コントロールを再利用します。コントローラーは通常と同じで、ビューはレイアウトを特定のビューにカスタマイズするオブジェクトであり、レイアウトは実際の UserControl です。次に、これらを単一のフォームとの間で交換します。これにより、使用する Windows コントロールの量が大幅に削減されます。これと起動時にすべてのフォームを初期化することは、新しい Windows コントロールを「オンデマンド」で作成するときに発生する顕著な一時停止を排除することを意味します。

明らかに、この種のことを実行することに本当に価値があるのは、大規模なアプリケーションを展開している場合だけです。およそ 20 種類以上の View があり、合計で約 7 種類の異なるレイアウトを使用します。これにより、初期化ルーチン (起動時にフォームをロードするとき) に約 10 秒ほどの悪影響が生じますが、心理的には、ほとんどのユーザーは、実行時の顕著な一時停止とは対照的に、起動時にそのようなヒットを喜んで受け入れます。

私の著書における P&P ライブラリの主な問題は、これが FF -> CF 移植であり、2 つのプラットフォーム間の特定の非互換性とパフォーマンスの違いにより、多くの便利な機能が失われることです。

ところで、 これ これは、私が今まで読んだ MVC/MVP に関する記事の中で最も包括的な記事です。Windows アプリケーション (デスクトップまたは CE) の場合は、対話、コマンド、選択のない Taligent Model-View-Presenter バージョンを使用することをお勧めします (たとえば、コントローラー/プレゼンターがすべての作業を実行します)。

他のヒント

あなたたち(デイヴィッドもケビン・パンも)はどちらも、彼が次のことに興味を持っているという事実に注意を払いませんでした。 WinForms, 、 ない ウェブフォーム. 。彼は、.NET Compact Framework を使用して、WinForms プロジェクトで Model-View-Controller デザイン パターン (davidg、MVC は単なる ASP.NET フレームワークの名前ではありません) をプッシュするフレームワークを望んでいます。彼はきちんと質問をした。

もあります。 OpenNETCF IoC フレームワーク (この質問がなされたときには存在していなかったように思います) これははるかに軽量ですが、オブジェクト モデルは P&P の Mobile Software Factory に似ています。

@DavidG と @KevenPang

MVC は Web テクノロジに限定されません。実際、元の smalltalk MVC はデスクトップ アプリケーション用でした。

それはこのように動作します:

  • ビュー = クライアント フォーム
  • コントローラー = クライアント イベントをまとめ、ビューとモデルの間でマーシャリングを行います。
  • モデル = アプリケーション データとビジネス ロジック

純粋な Smalltalk MVC では、ビューはフォームであることに限定されず、モデル データの任意の表現にすることができます。たとえば、スプレッドシートを表すモデルがある場合、次のビューを持つことができます。

  • スプレッドシートビュー
  • プリンターフレンドリービュー
  • アイコンビュー

などの場合、モデルは同じですが、ビューはそれぞれの場合に異なる出力オブジェクトを作成します。

とはいえ、.NET Compact フレームワークにそのようなフレームワークが存在するかどうかはわかりません。MVC が WebApp を意味するわけではないことを指摘しておきたいだけです。

を見てみましょう mFlyのモバイルMVC. 。私はこれを使用したことはありませんが、CF 用の妥当な MVC フレームワークとして売り込まれています。

@デビッド:「なぜ Compact Framework で MVC を必要とするのですか?」

なぜだめですか?これは Web 開発者向けに予約されているわけではなく、パターンです。

編集:上記のポスターは正しいです。MVC を見て、すぐに Web フォームを思いつきました。申し訳ありません。これは無視してください。誰かがそうなった場合に備えて、元のメッセージをそのまま残しておきます。 Web フォーム MVC に興味がある場合は、リンクが必要です。:-)

MVC フレームワークはいくつかありますが、どちらもそれほど「軽量」ではありませんが、MVC は Web フォームからのかなり大きな移行であるため、これは予想されます。

  • ASP.NET MVC - これは、MVC フレームワークに対する Microsoft の試みです。まだプレビュー モードなので、ご自身の判断でご使用ください。ただし、すでに何人かが実稼働アプリケーションで使用しています。.NET 群衆の間で非常に人気が高まっているため、簡単な Google 検索でこれに関する豊富なドキュメントが見つかります。
  • キャッスルモノレール - MonoRail フレームワークは、かなり前から存在し、いくつかの実稼働アプリケーションで使用されているオープンソース MVC フレームワークです。ASP.NET MVC フレームワークよりも明らかに洗練されていますが、Microsoft が MVC 製品に投入している労力を考慮すると、比較的すぐに変わると思います。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top