タグ付けされた質問 「mvc」

MVC(Model-View-Controller)は、関心事の分離を強制するソフトウェアアーキテクチャパターンです。


3
MVC使用時のPHPでのエラー処理
私は最近Codeigniterを頻繁に使用していますが、気になるのはエラーを処理してユーザーに表示することです。乱雑になることなくエラーを処理するのが得意ではありませんでした。私の主な関心事は、ユーザーにエラーを返すときです。 関数から0または1を返し、if / elseを使用してエラーを処理するのではなく、例外と例外をスロー/キャッチすることをお勧めします。したがって、問題についてユーザーに簡単に通知できます。 私は例外から離れる傾向があります。数年前、大学の私のJava講師は「例外はプロダクションコードで使用すべきではありません。デバッグ用ではありません」と言っていました。私は彼が嘘をついていると感じました。 しかし、例として、ユーザーをデータベースに追加するコードがあります。プロセス中に、データベースの問題、重複エントリ、サーバーの問題など、2つ以上の問題が発生する可能性があります。登録中に問題が発生した場合、ユーザーはそれについて知る必要があります。 MVCフレームワークを使用していることを念頭に置いて、PHPでエラーを処理する最良の方法は何ですか。

1
Ajaxを多用するWebアプリケーションのパターン
これまで、私はWebアプリケーションを開発するためのMVCパターンの大ファンでした。Webの場合、私は主にPHP(KohanaおよびCodeIgniterフレームワークを使用)およびRuby(RoR)で開発しました。 私のアプリケーションがAjax側で重くなると(単一ページのアプリなど)、MVCの非常に基本的な概念を裏切るしかないわけではないことに気付きました。Javascriptはほとんどの作業を行っています。ビューまたはその他のjs / jsonコードを要求するためだけにコントローラーを呼び出すことは間違っているようです。 すべてのルーティングジョブをコントローラーに保持するように努めた後、基本的にそれらを(つまり、フレームワークのPoV、ビューの一部から)Javascriptに分割しました。JSONを求める場合にはMVCの転覆は、より明白になります要求をしているJSコードがあるコントローラ。フレームワークのコントローラーは、単にモデルのデータのプロキシとして機能しているだけです-私が実際に求めているのは。 だから、私は何を調べるべきですか? バックボーンとしてbackbone.jsとドキュメントベースのjson-spittingデータベース(couchDB)を使用するなど、純粋なjavascriptアプリケーションを考えていましたが、リレーショナルデータベースが大好きです。 別のオプションは次のとおりです。PHP/ ruby​​ / go / whatnotで「ルーティングモデル」を作成するだけです。それらはリクエストを分析し、dbを呼び出し、jsonを返します。 このアプローチは私には興味深いように見えますが、実質的な文書や学術的な分析がないため、飛躍を少し恐れています。 アイデア?

4
.Netカスタムメンバーシッププロバイダーを使用/作成することの短所は何ですか?
最近、私はSOに次の質問を投稿しました:https : //stackoverflow.com/questions/7197337/using-asp-net-membership-provider-with-an-existing-user-database お気づきかもしれませんが、「カスタムメンバーシッププロバイダー」を作成/実装することが道であるように見えたという自分自身の質問に答えることになりました。 文字通り、数分後、私はこの質問に出くわしました:https : //stackoverflow.com/questions/7222306/simple-login-attempt-counter-using-mvc-3-and-ajax/7222407#7222407 私は、.Netメンバーシッププロバイダーが「多くのレベルでひどい」と答え、コメントを返そうとします。認めますが、これはメンバーシッププロバイダーを使用するのはこれが初めてですが、確かに滑らかに見えました。 「ひどい」主張を裏付けるものは見たことがありませんので、「ひどい」何かを実装する前に、コミュニティからフィードバックをもらいたいと思っていました。

4
MVCでサービスレイヤーを使用する
コントローラーが太りすぎて、モデルのインスタンス化が増え始めると、サービスレイヤーを使用できます。 サービスクラス内にロジックをラップするだけの場合、1つまたは2つのメソッドで多数のサービスを取得します。これはコード臭のように感じます。これに関するベストプラクティスはありますか? サービスはモデルをインスタンス化できますか? サービスがモデルをインスタンス化する場合、サービスを単体テストすることはできません。それらは統合テストでのみカバーできますか?
12 mvc  services 

4
MVCおよびRESTful APIサービス
MVCは非常に単純です。モデル、コントローラー、ビューがあります。Webサイトを作成すると、クライアントがRESTキーワード要求をサーバーに送信するときにすべてがまとめられます->サーバーは要求されたURLをコントローラーアクションに一致させます->データ収集/処理のためにモデルを呼び出し、結果を取得します->そして、結果をHTMLページ(ビュー)としてクライアントに返します。 純粋なRESTful API Webサービスについて話している場合はどうなりますか?次に、クライアントはRESTキーワード要求をサーバーに送信します->サーバーは要求されたURLをコントローラーアクションに照合します->データ収集/処理のためにモデルを呼び出し、結果を取得して->戻ります結果をJSONでクライアントに返します。以前と同じですが、「ビュー」はありません...むしろ、生成されたJSONは「ビュー」と考えることができます。ある意味では、MVCのMC部分のみを使用しています。それはどのように行われるべきですか?または、MVCの代わりにAPIのみのサービスに適した他のパターンはありますか?

1
MVCパターンをC#WinFormsアプリケーションに適用するにはどうすればよいですか?
私はそれ以来、MVCパターンを使用してGUIを設計しているC ++開発者です。 最近、C#に戻りたいと思い、Windowsフォームアプリケーションをセットアップしましたが、MVC準拠の構造にプッシュする方法が少し失われました。 私が現在やろうとしていることは、WinFormsに与えられたクラスをビューとして「宣言」し、モデルとコントローラーのクラスをバックグラウンドで追加することです。ただし、ボタンのクリックなど、イベントと対話する方法についてはよくわかりません。通常、これらのイベントをコントローラーにリダイレクトし、完了したらビューでアクションを実行します。 しかし、これはこの星座ではかなり不満を感じます。たとえば、「Exit」ボタンを実装する場合、ViewからControllerにイベントをリダイレクトする必要があります。また、Viewに追加のパブリックメソッドを実装し、それをControllerから呼び出すことができます。最初のインスタンスのViewからClose()を呼び出すだけです。 何かアドバイスはありますか?C#でのWindows Formsの私の理解は、MVC実装を試すにはまだ十分ではありませんか?フォームクラスに間違った役割を与えていますか?MVCはこのユースケースにとって単に不適切なアーキテクチャですか?
11 c#  mvc  winforms 

2
ASP.NET MVCでは、ビューモデルにIDが必要ですか?
モデルを更新できるASP.NET MVCアプリケーションを開発する場合、更新されたビューモデルを取得し、現在更新されているモデルに戻す方法を知る方法が必要です。これを行うにはいくつかの異なる方法があるようで、これらのいずれかが適切なMVCではないのではないかと思っています(モデルにあるはずのデータをコントローラーに保存させるのは適切なMVCではありません)? すべてのビューモデルにはIDがあります:長所 モデルと一致できることを常に確認してください。 短所 IDが変更されないように注意する必要があります。それ以外の場合は、ユーザーにアクセスを許可しない行を更新させることができます。 最低限のビューモデルのみにIDがあります:長所 ユーザーがアクセスしてはならないデータを更新しないようにするために必要なチェックがはるかに少なくなります。 短所 どのビューモデルがどのモデルと一致するかを追跡するのははるかに困難です。 ユーザーがアクセスできないデータを更新していないことを確認するには、IDを持ついくつかのビューモデルを確認する必要があります。 IDを持つビューモデルはありません: 長所 更新のIDを確認する必要はありません。 短所 あなたは無国籍を放棄しなければなりません。 そこで、2つの質問があります。 まず、正しい/間違った選択肢がありますか?(そうでない場合、選択は意見の問題であり、私の2番目の質問は意見に基づいているため、無視する必要があります。) 第二に、正しい/間違った選択がある場合、それはどれですか? コメントを明確にするために、データベースオブジェクトを模倣したビューモデルがある場合に話しています。 これを考えてください: public class InvoiceViewModel //Does not have ID, does not relate to model. { public CustomerViewModel CustomerVM { get; set; } //Maybe has ID? Does relate to model. public AddressViewModel …
11 mvc  asp.net-mvc 

3
MVCサイト全体のグローバル定数値
My MVC(.NET)には、電話番号、物理アドレス、電子メールアドレスなど、サイト全体で一定の値があります。 この値を1回保存したいので、詳細を変更するときに将来の更新が簡単になります。 質問を簡単にするために、電話番号のみに注目しました。 私の質問は、この番号をどこにどのように保存するか、そして私が決定に直面している問題です。現時点では、Global.asaxファイルに静的メソッドとして保存することを選択しました。たとえば、 public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { //logic } public static string GetPhoneNumber() { return "012345 678 910"; } } これは非常にうまく機能します。私のコントローラーでは、このメソッドへの参照を追加してViewBagに割り当てることができます public ActionResult Contact() { ViewBag.Phone = MvcApplication.GetPhoneNumber(); } 多くのサイトのように、電話番号はすべてのページの上部に表示されるため、その番号を_Layout.cshtml論理的に配置します。 私が持っている問題は、_Layout.cshtml用のコントローラがない(私にはわからない)ことであり、値を渡すことができる唯一の方法は、ViewBag.Phoneをすべてのビューに設定することです、EG public class HomeController : Controller { // // GET: /Home/ public …
11 mvc 

2
委任とは何ですか?iOSプログラミングでなぜそれが重要なのですか?
現在、私は自分でiOSプログラミングを教えていますが、頭を包み込むのが本当に難しいと思う概念の1つは委任です。それは何ですか?なぜ、どのように使用されていますか?利点は何ですか?私が読んでいる本のテクニカルライティングは、理解するのを難しくしています。

2
コントローラーは、MVCパターンでビューにデータを渡す必要がありますか?
私はASP.NET MVC(およびその他のWebベースのMVC実装)を頻繁に使用しますが、これは私が確信したことのないことです。コントローラーとビューは通信する必要がありますか? もちろん、コントローラーは使用するビューを選択する必要がありますが、コントローラーがビューにデータを渡すのはどういうことですか?私の意見では、ビューがコントローラーからのデータを期待している場合、それらは(コントローラー、ビュー)のペアとして効果的に結び付けられています。代わりに、通常、ビューはモデル自体と通信し、コントローラーから独立しています。 私は正しいアプローチを持っていますか、これは誰も正しい答えがない場合ですか?Webで作業するときと他の環境で作業するときの答えは変わりますか?厳密に型指定されたビュー(ASP.NET MVCなど)の概念がある場合、答えは変わりますか?
11 architecture  mvc 

5
MVCを使用する場合
PHPとMySQLバックエンドでサイトを構築しています。しかし、私は現在、どのタイプのフレームワークも使用していません。Model View Controllerを使用する必要がありますか?

4
なぜMVC over Web Formsを使用するのですか?
最近、建築家は、トヨタ(Web Forms)だけが必要なときにロールスロイスソリューション(MVC)を提供していると当社を説明しました。 アーキテクチャの選択としてのWebフォームとMVCについてのあなたの考えを知りたいと思います。

2
データベースサービス関数を呼び出すアプリケーションサービス層。悪いアーキテクチャ?
シナリオ: スタック:Java、Spring、Hibernate。 モデル:クライアントサーバーアプリケーション。 パターン:Model-View-Controller(MVC)。 サービス層クラスには3つの動作があります。 一部のサービスには、メソッド内にビジネスルールがあり、永続性をアプリケーションに委任します。お気に入り: EntityManager.save(entity); 一部のサービスは、単純にデータベース関数(パラメーターを渡す)を呼び出します。 CallableStatement cls = con.prepareCall( "{call databaseFunction(args)}"); 一部のサービスには、両方の動作を持つメソッドがあります。 私の質問: アプリケーションサービスに直接データベース機能を呼び出しても問題はありませんか?これは悪い習慣ではありませんか?このようなプロジェクトに適用できるアーキテクチャモデルは何でしょうか? 同じサービスで動作が混在することに問題はありますか?トランザクションや一貫性など? メンテナンスの場合、このカプセル化により、開発者はデータベースの機能も変更する必要があることがわかりにくくなりますか?これを回避するには? このシナリオは世界中の他のアプリケーションで発生しますか、それとも単なるアーキテクチャ上のエラーですか?

2
.NET MVCプロジェクトアーキテクチャ/レイヤー
中規模のMVC Webアプリケーションのアーキテクチャを計画するとき、レイヤーを可能な限り分離してテストしやすいように実装するにはどうすればよいですか?(基本的にベストプラクティスに従います)データアクセスとして最初にコードを使用しているとしましょう。 「ビジネスロジック」の定義、およびデータレイヤーとのやり取りをどのように定義するかについて、私は苦労しています。車両販売アプリケーションを例にとると、ビジネスロジックは、特定の車両の税帯の計算、ガロンあたりのマイル統計の比較などのタスクを実行するクラスでしょうか。ビジネスエンティティ(例:車、バン、オートバイ)については、これらをDataContextクラスと共にデータレイヤーに配置します。 また、ビジネスとは対照的に、アプリケーションロジックを構成するものは何ですか。セッション/ユーザー入力の検証などを推測していますか? したがって、たとえば、車のコントローラは、タイプと最良のmpgでフィルタされた上位10台の車をリストするアクション/ビューの結果を返す場合があります。たとえば、ICarRepository「リポジトリ」/ DIを使用して「carRepo」をコントローラに注入したとします。アクションメソッドのパラメータから車をフィルタリングします。var cars = carRepo.getCarsByType("hatchback"); したがって、リポジトリを使用してデータアクセスの知識をコントローラーから除外し、ドメインモデルを使用してビジネスロジックをコントローラーから除外しました-var result = new MpgCalculator(cars); -DBからエンティティをロード/フィルタリングするだけではなく、最高の燃料効率を計算するために追加のロジックを実行する必要があるため、電卓クラスが必要だとしましょう。これで、ビューをレンダリングするためのデータセットがあり、リポジトリを使用してデータアクセスレイヤーから取得し、ドメイン固有のオブジェクトを処理して、そのデータに対してビジネス関連のタスクを実行します。 ここで間違いをしていますか?それでもリポジトリパターンを使用する必要がありますか、それともORMを分離してテストするためにインターフェイスに対してコーディングするだけですか?このトピックでは、具体的なデータアクセスクラスdbcontextがデータレイヤーにあるので、インターフェイス定義をドメイン/ビジネスレイヤーに入れる必要があります。つまり、データアクセステクノロジーが変更されても、他のレイヤーは影響を受けません。 これまでに調べたことから、私の構造は次のようになります。 MVCインターネットアプリケーション ->標準インターネットプロジェクト-ここのモデルはViewModelsです ドメイン/ビジネスレイヤー ->コントローラーが関連するビューに渡す前にデータレイヤーからドメインエンティティを処理するために使用できるビジネス固有のクラス/モデル リポジトリの抽象化が必要ですか?->特にORMを使用する場合、これについて多くの議論が聞こえます データレイヤー ->エンティティクラス(Car、Van、Motorcycle)、DbContext-具象データアクセステクノロジーレイヤー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.