使用 MVC 理解 ASP.NET、iOS、Android 和混合开发






4.27/5 (5投票s)
使用 MVC 来理解 ASP.NET、iOS、Android 和混合开发
引言
模型-视图-控制器 (MVC) 是一种软件架构模式,它将信息的表示与用户与它的交互分离。[1][2] 模型包含应用程序数据、业务规则、逻辑和函数。 视图可以是数据的任何输出表示形式,例如图表或示意图。 同一数据的多个视图是可能的,例如用于管理的条形图和用于会计师的表格视图。 控制器调节输入,将其转换为模型或视图的命令。

MVC 设计规则
我使用 RGB 来表示 MVC。不同的颜色对于不同的元素具有不同的含义或设计规则。
- 蓝色代表智慧,这意味着控制器应该非常聪明。
- 红色代表关键,这意味着模型是系统的核心。
- 绿色代表友好,这意味着视图应该对用户友好。

ASP.NET 和 MVC
首先,我们知道有一个术语“Web Form”我们应该提及,它看起来像

Web Forms 使用 PostBack 直接处理数据,而不是中央控制器。
因此,我们引入 MVC 来处理与用户的所有交互。

从上面的图表中,我们可以看到视图已经显示给客户。对于网站系统有一些特别之处。在特定的时刻,视图有两个副本:一个在服务器端,另一个在客户端。

是的,也许我们可以在客户端做一些事情,因为我们有视图。让我们用 AJAX 做一些魔法。我们正在使用 AJAX 构建一个控制器来桥接服务器端的数据和我们拥有的视图。

通过这个角色,服务器已将其从网页服务器更改为 Web 服务,区别在于它现在提供的是数据而不是页面。
虽然控制器和视图的内容在同一个文件中,但它们可以通过不同的内容来识别。控制器被 <script></script>
包围,而内容由 html 定义,例如 <body></body>
。
我想提的一件事是,还有另一种方法可以将视图与模型隔离,即 MVVM (knockoutJS 是一个典型的例子)。那么,区别在于控制器了解视图的所有内容,而 ViewModel 对视图一无所知,它只是提供对象和方法来等待视图绑定。

尽管如此,MVVM 对于标记语言风格的视图(例如 WPF 的 * .xaml *)来说确实是一个好主意。
WPF 和 MVVM
根据之前的分析,我们可以轻松地获得具有 Web 服务的 WPF 架构,如下所示

而纯本地的看起来像下面这样

模型演变
最开始,在 ASP.NET 中,我们使用 DataSet
来保存我们从 SQL Server 通过查询检索的数据,然后我们将 DataSet
封装成一个对象。

为了简化这一点,我们发明了 ORM(对象关系映射),我们有 Entity Framework,它可以将数据库中的数据直接映射到对象。

此外,我们可以首先设计模型,或者首先设计数据库,甚至可以使用 Entity Framework 首先设计代码。
MVC 和混合应用
让我们稍微回到 MVVM 和 WPF。在这种情况下,视图和 ViewModel 在客户端。在类似的情况下,当视图和控制器在客户端时,特别是移动设备的客户端,我们称之为混合应用。我们可以使用 Phonegap 开发跨平台的混合应用。但它的核心仍然是标记语言风格的视图和 JavaScript 控制器。另一个不同之处在于它不使用浏览器,而是使用 webkit。

控制器演变 – Soap 风格 vs. REST 风格
- Soap 风格 –
Request
是一个完整的词,它是一个动作 - REST 风格 –
GET
,PUT
,POST
,DELETE
具有不同的实际含义。 GET
: 查询PUT
: 创建POST
: 更新Delete
: 删除
请求已更改为资源。

iOS 和 MVC
iOS 是一个非常典型的 MVC 实现,如下所示。在 iOS 开发中,我们应该确保模型和视图 100% 隔离。

Android 和 MVC
活动 (activity) 没有明确的定义,我想把它看作是一个大的控制器,它包含许多控制器,当涉及到数据时,这里有适配器。一个典型的适配器是光标适配器,当我们从 db 加载数据到 listview 时。

简而言之,MVC 是一个前沿术语,它将 ASP.NET、iOS、Android 和混合开发联系在一起,这使我可以轻松地从一个开发者角色转移到另一个角色。总而言之,我希望本文能对您有所帮助。
如果您有任何问题,请随时通过电子邮件与我联系:maxchen666@gmail.com。