MVC
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。
视图 :视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型 :模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器 :控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:
组件 - 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。
抽象性 - 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。
封装 - 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。
多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。
继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。
由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行。
オブジェクト/リレーション マッピング (ORM と呼ばれます) は、オブジェクト指向ソフトウェア開発手法の開発とともに生まれました。オブジェクト指向開発手法は、今日のエンタープライズレベルのアプリケーション開発環境における主流の開発手法であり、リレーショナルデータベースは、エンタープライズレベルのアプリケーション環境でデータを永続的に保存する主流のデータストレージシステムです。オブジェクトとリレーショナル データは、ビジネス エンティティの 2 つの表現形式です。ビジネス エンティティは、メモリ内ではオブジェクトとして表され、データベース内ではリレーショナル データとして表されます。メモリ内のオブジェクト間には関連付けや継承関係がありますが、データベースではリレーショナル データは多対多の関連付けや継承関係を直接表現できません。したがって、オブジェクト リレーショナル マッピング (ORM) システムは一般にミドルウェアの形式で存在し、主にプログラム オブジェクトからリレーショナル データベース データへのマッピングを実装します。
オブジェクト指向はソフトウェア工学の基本原理 (結合、集約、カプセル化など) に基づいて開発されますが、リレーショナル データベースは数学理論に基づいて開発されます。この 2 つの理論には大きな
違い があります。この不一致現象を解決するために、オブジェクト リレーショナル マッピング技術が登場しました。
CURDはデータベーステクノロジーの略称で、一般的なプロジェクト開発における各種パラメータの基本的な機能はCURDです。これは、作成 (Create)、更新 (Update)、読み取り (Read)、および削除 (Delete) の操作を表します。 CURD は、データを処理するための基本的なアトミック操作を定義します。 CURD が技術的な問題のレベルにまで引き上げられている理由は、複数のデータベース システムでの CURD 操作を含む集計関連のアクティビティを完了するパフォーマンスが、データ関係の変化に応じて大きく異なる可能性があるためです。
CURD 特定のアプリケーションでは、作成、更新、読み取り、削除のメソッドが必ずしも使用されるわけではありませんが、それらが実行する機能は同じです。たとえば、ThinkPHP は、モデルの CURD 操作を表すために、add、save、select、および delete メソッドを使用します。
ActiveRecord は、Rails によって最初に提案され、標準の ORM モデルに従っている ORM レイヤーにも属します。テーブルはレコードにマップされ、レコードはオブジェクトにマップされ、フィールドはオブジェクトのプロパティにマップされます。次の命名規則と構成規則を使用すると、モデルの操作を大幅に迅速に実現でき、簡潔で理解しやすくなります。
ActiveRecordの主なアイデアは次のとおりです:
1. 各データベーステーブルはクラスを作成し、クラスの各オブジェクトインスタンスは通常、データベース内のテーブルのレコードの行に対応します。
2.
ActiveRecord は、ActiveRecord にカプセル化されます。ドメイン モデル (ドメイン モデル) は、ビジネス ロジックの一部をカプセル化します。 1. ビジネス ロジックは、基本的にデータベース内のテーブルに対応する場合、ActiveRecord に適しています。
は非常に便利です。つまり、ほとんどのビジネス ロジックは 1 つのテーブル上で動作します。
2. テーブル間の操作が発生する場合、トランザクション スクリプトはテーブル間のトランザクションをアップグレードするためによく使用されます。 . ActiveRecord
最大の利点は、シンプルで直感的であることです。 1 つのクラスにはデータ アクセスとビジネス ロジックが含まれています。
これらの利点により、ActiveRecord
は迅速な WEB 開発に特に適しています。
単一入口
単一エントリは、通常、プロジェクトまたはアプリケーションに統合された (ただし、必ずしも一意である必要はない) エントリ ファイルがあることを意味します。つまり、プロジェクトのすべての機能操作がこのエントリ ファイルを通じて実行され、多くの場合、エントリ ファイルが最初のステップで実行されます。
入り口が 1 つであることの利点は、同じ入り口にはさまざまな操作に対して同じルールが適用されることが多いため、プロジェクト全体が比較的標準化されていることです。また、入口が単一であることのメリットとして、傍受が便利なため制御が柔軟になり、一部の権限制御やユーザーログインなどの判断や操作を統一的に扱えることも挙げられます。
すべての Web サイトが 1 つのエントリ ファイルを通じてアクセスされるのではないかと心配する人もいるかもしれませんが、実際、これは根拠のない考えです。