首先,我们必须首先就一件事达成一致——
如果您没有 JavaScript 经验,那么第一次使用 Breeze 从服务器获取数据可能会很棘手
让我们看看一些原因以及如何克服这一挑战的示例,或者跳过非必需阅读并讨论使用 Breeze.js 或任何客户端应用程序时的安全性 -
<!--
If you think this next section is 'Too Long' : 'Don't Read'
and are just interested in security, skip down until
you see 'Why is Breeze.js secure?'
-->
<section role="TL:DR">
微风.js 上的文档总是在更新和改进,但作为一个社区,我们可以改进以了解更多关于如何利用微风.js。这里有一些提示方法以及如何在客户端应用程序中设置微风.js 的一些基本场景 -
基本场景
从 Web API 控制器操作获取数据 -
您可以将 Breeze.js 设置为在使用 Web API 路由时使用它自己的元数据 -
http://www.breezejs.com/documentation/web-api-routing
http://pluralsight.com/training/Courses/TableOfContents/building-single-page-applications-breeze
使用 EF / Breeze.WebApi 从 Web API 控制器操作中获取数据
您可以将 Breeze.js 设置为在 VS2012/13 中使用 ASP.NET MVC 5 / Web API 2 项目。如果您想了解如何使用服务器端 Breeze.WebApi 作为帮助程序,请查看此列表中的链接或 PluralSite.com 等在线教育网站 -
http://www.breezejs.com/samples
http://www.pluralsite.com
在示例中,您将了解如何使用当前使用的 85% 的 Web 技术。这包括 Angular、Durandal、MongoDb、Node、Entity Framework、Require、Knockout、Ruby、Twitter Bootstrap、Backbone 等等……等等……
了解微风的工作原理 -
http://learn.breezejs.com/
从完全解耦的 SPA 中访问服务器 -
为什么要花时间建立自己的客户端数据库并创建对象图或使用不快速照明的映射库?JavaScript ORM 正在迅速风靡一时,因为为什么要不断重建轮子?微风怎么能做到?
http://www.breezejs.com/samples/edmunds
http://www.breezejs.com/samples/espn
两个很好的例子,完全解耦的 API 可以被客户端技术使用,而无需将客户端的东西绑定到服务器端的任何特定堆栈。
为什么 Breeze.js 是安全的?
无论数据是什么或如何生成,您都不应该将任何数据暴露给外界。如果您在客户端或服务器端有一个应用程序在返回数据之前未正确验证其用户,那么您如何确保在查看客户端技术之前正确验证?
使用 saveChanges() 发回数据时会怎样?
在极少数情况下,我会设计一个让浏览器自由漫游以发布/更新我的数据库的应用程序。一种可能是,如果要更改的内容处于非常早期的开发周期中,我正在测试获取和发布数据,并且设置了业务层及其允许的内容(可能通过单元测试验证)以允许不受限制地读取/写入数据.
但是将基于浏览器的应用程序转移到生产环境呢?
我永远不会在我没有阅读过并且 100% 确定该文件已准备好签署的文件上签名。我也永远不会将代码从开发或 QA 环境传递到生产环境,除非我使用的技术堆栈确保满足我的要求。如果使用 ASP.NET MVC 和 Session 存储用户信息是您的应用程序应该采取的方向,那么使用 [Authorize] 属性装饰您的控制器操作。如果您有另一种形式的安全性,那么您需要始终保持所暴露数据的适当安全级别。
永远不要相信基于浏览器的应用程序会为您提供非恶意内容,即使在 99.99% 的情况下 - 0.01% 可能是压垮骆驼的最后一根稻草。