0

我计划实现一个 ASPNET 应用程序来学习 MVC 的东西,我正在考虑使用以下架构:ASPNET MVC 4 WebApplication 在前端使用 knockout.js 并在服务器端使用 ASPNET WebApi Controller 方法进行设置/通过实体框架获取 SqlServer 数据库数据。通过这种方式,我也可以从(未来的)移动应用程序调用 ASPNET WebApi URL。这种架构有意义吗?

4

2 回答 2

4

请注意,尝试使用相同的 Web API 来驱动 javascript 客户端和移动客户端是一个非常具有挑战性的提议。在为 javascript 客户端构建 Web API 时,客户端和服务器之间存在大量“带外”耦合是很常见的。每当您看到交付的 apiapplication/json并且客户端必须提前知道该 json 文档的内容时,您都可以告诉这一点。

这种方法适用于几乎可以同时更新 Web API 和网站的网站。但是,对于需要在部署之前将更新提交到应用商店以供批准的移动应用程序,要做到这一点并不容易。

此问题的一个常见症状是开发人员被迫创建 API 的新版本,以便现有的移动客户端可以继续工作,同时针对全新的 API 推出新的移动客户端。当您是 API 的唯一使用者时,定期对 API 进行版本控制并不是一个大问题。当第三方 API 消费者参与其中时,它开始变得令人讨厌。

就个人而言,除非您看到构建 SPA 样式应用程序的重大战略优势,否则我不会费心创建 API 来驱动您的网站。

我建议您清楚地了解为什么要使用 API 来驱动您的网站,而不是仅仅遵循当前的“时尚”。

于 2013-04-07T20:45:27.403 回答
1

Asp.Net MVC 框架简史

ASP.Net MVC 是建立在 Microsoft .Net Framework 之上的新框架,用于开发 Web 应用程序。该框架实现了 MVC 模式,有助于提供代码分离并为测试驱动开发 (TDD) 提供更好的支持。Asp.Net MVC 是一个轻量级且高度可测试的开源框架,用于构建高度可扩展且设计良好的 Web 应用程序。以下是 ASP.NET MVC Framework 的已发布版本历史列表及其功能。

Asp.Net MVC1

于 2009 年 3 月 13 日发布

在 .Net 3.5 和 Visual Studio 2008 和 Visual Studio 2008 SP1 上运行
带有 WebForm 引擎
Html 助手的模式架构
Ajax 助手
路由
单元测试

Asp.Net MVC2

2010 年 3 月 10 日发布

在 .Net 3.5、4.0 和 Visual Studio 2008 上运行& 2010
强类型 HTML 助手意味着基于 lambda 表达式的 Html 助手
模板化助手
支持数据注释 属性
客户端验证
UI 助手,带有自动脚手架和可定制模板
基于属性的客户端和服务器上的模型验证
覆盖 HTTP 方法动词,包括 GET、PUT 、发布和删除
将大型应用程序划分为模块的区域
异步控制器

Asp.Net MVC3

于 2011 年 1 月 13 日发布

在 .Net 4.0 和 Visual Studio 2010 上运行
Razor 视图引擎
改进了对数据注释的支持
远程验证
比较属性
无会话控制器
子动作输出 缓存
依赖解析器
实体框架 代码优先支持
部分页面输出缓存
ViewBag 动态属性,用于将数据从控制器传递到视图
全局操作过滤器
通过不显眼的 JavaScript、jQuery 验证和 JSON 绑定提供更好的 JavaScript 支持
使用 NuGet 在整个平台上交付软件和管理依赖项
对 Razor 到 Visual Studio 的良好 Intellisense 支持

Asp.Net MVC4

于 2012 年 8 月 15 日发布

在 .Net 4.0、4.5 和 Visual Studio 2010SP1 和 Visual Studio 2012 上运行
ASP.NET Web API
对默认项目模板的增强
使用 jQuery Mobile
显示模式的移动项目模板 异步控制器 捆绑
的任务支持 支持 Windows Azure SDK Asp.Net MVC5
于 2013 年 10 月 17 日发布 在 .Net 4.5、4.5.1 和 Visual Studio 2013 上运行 一个 Asp.Net Asp.Net Identity ASP.NET Scaffolding 身份验证过滤器 - 在授权之前运行ASP.NET MVC 管道中的过滤器 MVC 模板中的引导 程序 ASP.NET Web API2














致谢:Shailendra Chauhan 先生

于 2014-03-23T05:01:58.250 回答