抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

ASP.NET MVC 4 中的单页面应用程序

2012 年 2 月 25 日

ASP.NET MVC 4 beta 中包含了一个实验项目,用作开发“单页面应用程序(single page applications)”。该项目也称为ASP.NET SPA,其项目类型基于一组开源库以及WPF、Silverlight 上流行的MVVM 模式。

浏览器端

位于浏览器端技术组底部的是著名的 jQuery 库,与之一起的还有 Unobtrusive Ajax、jQuery UI 和 jQuery Validation 插件。

接下来的技术是 Upshot 。它是构建于 jQuery 和 Knockout 之上的数据访问和缓存库。在示例代码中,你会看到有一个与 knockout 兼容的视图模型被自动生成。它的内部是基于 Upshot 的函数,用作处理与服务层的通信。另外它还包含用于驱动 UI 的代码。(SPA 的视图模型类似 XAML 技术,如此看来,这块地方很快会充斥各式各样的代码。)

MVVM 风格的数据绑定使用 Knockout 框架完成。与基于 XAML 的技术类似,Knockout 提供了声明式的数据绑定,它在当数据和视图模型基于暴露属性更改事件的 observables 时,可以完美的进行工作。此外,你不需要显式地引发事件,即使对计算属性也是如此。绑定过程与设置控件的DataContext 属性不同,你需要调用ko.applyBindings 完成。然而这并不妨碍子控件拥有不同的数据上下文,面对这种情况只需简单地为它们使用“with”或“foreach”绑定即可。其中“with”绑定类似于将控件的DataContext 绑定到视图模型中的属性,而后者“foreach”本质上创建了一个项目集合控件。

位于技术组顶端的是nav.js,它是微软新推出的一个库。

服务器端

服务端的应用程序框架由普通的MVC 页面表示,而应用程序内的各种视图由分离页面(partial pages)表示。在示例中,Knockout 数据绑定用作动态地显示和隐藏这些页面。

大部分服务端数据访问都由抽象类DataController 处理。DataController 是ASP.NET Web API 中ApiController 的子类,后者提供了客户端向服务器提交ChangeSetEntry 的基本方法。喜欢使用存储过程或者第三方ORM 的开发人员,可以直接继承该类;而熟悉Entity Framework 的开发人员可以使用DbDataController。Visual Studio 的脚手架支持(scaffolding support)可以为后者自动生成附带基本CRUD 操作的代码。

查看英文原文: http://www.infoq.com/news/2012/02/SPA

2012 年 2 月 25 日 11:203932
用户头像

发布了 125 篇内容, 共 29.9 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

普通上班族如何快速买房买车,一个程序员摸索的实操经验分享

陆陆通通

副业 程序员赚钱 认知

week13 作业

雪涛公子

甲方日常 11

句子

工作 随笔杂谈 日常

week13 homework

burner

【架构师训练营】第 13周作业

花生无翼

【第十三周】命题作业——Google 搜索排序

赵龙

Week13 学习总结

赵龙

使用Typora+PicGo配置Gitee图床

清菡

图床

Go 云原生应用实战系列(二)

田晓亮

go 微服务 云原生

架构师训练营第十三章作业

吴吴

架构师训练营Week13总结

Frank Zeng

极客大学架构师训练营

大数据架构&数据应用/分析&机器学习(二)

dony.zhang

flink spark 学习 Storm

week13学习总结

burner

第十三周作业

Linuxer

PageRank算法

南宫煌

架构师训练营 week13 - 学习总结

devfan

为微服务建一个简约而不简单的配置中心

架构师修行之路

微服务 etcd 配置中心

Week13

一叶知秋

详解 Python 的二元算术运算,为什么说减法只是语法糖?

Python猫

Python 编程 翻译

初露锋芒的AI战斗机,打开AI军备竞赛的潘多拉盒子

脑极体

PageRank 算法

李广富

数据分析指标-电商行业

阿飞

13周作业

方堃

Centos7 IP、名字、防火墙配置

yuanhang

centos7 防火墙 静态IP

架构师训练营 week13

devfan

Linux Shell编程

yuanhang

Shell

第十三周

Acker飏

架构师训练营Week13作业

Frank Zeng

极客大学架构师训练营

你所在的行业,常用的数据分析指标有哪些?

李朋

week13 总结

雪涛公子

Week 13 作业

鱼_XueTr

Study Go: From Zero to Hero

Study Go: From Zero to Hero

ASP.NET MVC 4中的单页面应用程序-InfoQ