我很想将 Breeze 与 AngularJS 结合使用。然而,我的经理担心产品的成熟度及其发展方向。
是否有任何文件可以传递给我的经理,以向他保证 Breeze 在未来仍然存在。风险如何。现在有多少人开始使用 Breeze <> AngularJS 并且存在风险。如果没有更多的微风怎么办,如果有的话,还有什么选择。
我可以理解你的经理的担忧。我们都在尝试对技术进行合理的押注。这并不容易。当您开始认为供应商的规模是一个很好的指导时……他们放弃了一项主要技术(我想到了微软的 Silverlight 和Google Reader,但例子不胜枚举)。没有任何保证。
我们知道什么?
IdeaBlade(Breeze 的制造商)自 2002 年以来一直从事数据管理业务(我是创始人,所以我知道)。这并不能证明我们明天会在这里。它确实证明了我们有持久力并且知道如何经营企业。
Breeze 已经制作了一年多,大约 6 个月前发布了它的第一个版本。同样重要的是,设计和实施是 10 多年构建和销售商业产品 (DevForce) 以应对相同挑战的成果。这说明了产品的成熟度。在现实世界客户的持续压力下,我们吸取了很多教训。我们有一个很好的机会,我们已经从你还没有看到的错误中恢复过来。
当像我们这样规模的营利性公司将其大部分最好的工程和产品营销资源投入到 Breeze 中时,它就体现了承诺。这对我们来说是一个巨大的赌注和巨大的投资。我们不能轻易离开它。你的经理会知道的。
Breeze 是 MIT 许可和开源的。我们无法改变,也不想改变。原则上,我们可以分拆商业版本并放弃进一步开发开源分支。但是(a)这必须具有商业意义,而在主要是免费的 JavaScript 库的时代,它并不具有商业意义,并且(b)任何人都可以分叉当前代码并维护它。
Breeze是公开开发的。你看到我们在做什么,因为我们正在做。
Breeze 文档比您在大多数付费产品中找到的更广泛。它比您在大多数 JavaScript 库中找到的要领先得多……包括您提到的一个。这有关系吗?我们在构建商业产品方面有着长期的经验……足够长的时间来理解“比特”只是技术产品的一部分。你决定。
微软虽然对 Breeze 足够好,可以在他们的单页应用程序网页上展示它,并与 IdeaBlade 合作开发可与 Visual Studio 一起使用的基于 Breeze 的应用程序模板。Breeze 不是 Microsoft 产品。但它已经跨越了一个门槛,足以让微软以这种方式舒适地展示它。这很重要。
我们应该发布我们的路线图。它部分是由您通过用户语音和堆栈溢出问题提出的建议驱动的。Angular 支持在这些论坛中非常受欢迎。这也是由我们对市场机会的解读所驱动的……Angular 再次成为明智的战略选择。
我们与 Angular 产品团队有着良好的关系,共同致力于推进单页应用程序的开发……。这种关系的一些成果:Breeze/Angular 模板和我在 Google Mt. View Campus 上关于 Angular 和 Breeze 的演讲。
把我放在你的位置上,我也想知道我的替代方案是什么。Ember.Data 是另一个基准。据我所知,不适用于 Angular。但它确实告诉您很多关于复杂数据管理的挑战以及如何充分解决这些挑战。
“自己建造”总是有可能的。如果你想知道那是什么样的,请四处看看。或者用你的头脑和你的经验。你有多少次能够比一个致力于它十年的团队更好地编写自己的框架?也许你可以。你所要做的就是说服老板。
让我们假设你可以。仅仅因为你可以并不意味着你应该。您也可以编写自己的“Angular”。基础设施开发是最有效地利用您的人才吗?还是应该将您的时间和精力重新投入到具有感知客户价值的应用程序开发上?
也许最谨慎的做法是使用 API 将 Breeze 内容封装在服务层中,该 API 具有您希望应用程序组件与之通信的抽象。如果出现问题,您已将问题隔离到您的服务层。我们所有的示例都采用这种方法:查找名为“datacontext”和“dataservice”的模块。
目前,我们的 Angular 支持并未扩展到缺少 ECMAScript 5 对 getter/setter 属性支持的浏览器……正如 FastReload 所观察到的那样。我们没有计划解决这个问题。我们的研究告诉我们,大多数构建单页应用程序 (SPA) 的人都针对给定 EC5 浏览器的移动场景。我严重怀疑这种以 JavaScript 为中心的应用程序能否在旧版浏览器上充分发挥作用。但是你应该和你的经理讨论你为什么要走这条路以及你想接触谁。如果您需要在较旧的浏览器上运行,我不会打赌 Breeze 会帮助您使用 Angular 应用程序。您可以考虑切换到我们的 Hot Towel/Knockout/Breeze 堆栈,该堆栈适用于旧版浏览器;请参阅Pluralsight 上的 John Papa 的“单页应用程序快速入门”课程。
Angular 依赖脏检查来检测变化,而 Breeze 依赖于内部事件。这些是不同的方法;它们不是不相容的。例如,Angular 将自身挂钩到 DOM 事件和 XHR 回调中。Angular 团队了解我们在做什么,他们也不认为我们不兼容。您必须注意规则(例如,在适当的时候调用 $scope.$apply)。这对 Angular 开发人员来说不是新闻。
您需要微风功能吗?取决于你在做什么。以下是 Breeze 在 Angular 中找不到的一些功能:客户端查询语言、对象图导航、更改跟踪(与更改检测不同)、模型验证、客户端缓存、临时密钥生成/解析,以及捆绑/交易保存。这不是对 Angular 的批评。这意味着我们有不同且互补的重点领域。Angular 专注于应用程序逻辑和表示,而 Breeze 专注于与持久数据模型相关的事务。
似乎作者公开开发了这个项目 6 个月,第一个发布版本是 0.53。如果我们假设他们确实有 2 天的迭代(有点与发布后的迭代长度相关),那么应用程序大约有 1 年的历史。
两位主要作者是他们CTO
的VP Tech
公司Idea Blade。
该公司成立于 2004 年。
除此之外,我没有看到任何路线图,也没有看到将继续进行的项目的承诺。我认为只要它被使用,只要他们的公司获得利润,他们就会开发它。请注意,该公司销售“企业”产品;所以他们可能会改变想法来停止开源项目,也许不会,但没有承诺。
对我来说有两个主要问题,
Todo-Angular 在现代浏览器中运行,例如 IE9、IE10,以及最近的 Chrome、Safari、Firefox 和 WebKit 浏览器。Breeze 不支持在缺少 ECMAScript 5 属性 getter 和 setter 的旧浏览器中运行的 AngularJS 应用程序。
虽然,我很感激不支持<IE9
,如果你要向你的老板解释,那么这将是一个问题。还有一件事,breeze
依赖于getters
and setters
,也就是change listeners
angular 做相反的事情:dirty checking
. 他们采用完全不同的方案,因此很可能会在这里和那里存在兼容性问题。
我严格的个人结论是不要使用它。主要是因为在使用 Angular 时,无论如何您都不需要大多数功能。随着项目的发展,它可能是一种负担,而不是对项目的支持。