感谢您提出问题。
John,作为 HT 的作者,提供了一个答案。我,作为 Breeze 项目的负责人,我倾向于同意他的观点 :)
HotTowel 为您奠定了基础。它不是建筑物本身。
它是针对特定类型应用程序的基础,即基于一组特定的协作 JavaScript 和 ASP.NET 技术的 CRUD 应用程序。Breeze 是贡献者……但不是唯一的贡献者。Knockout 具有 MVVM 设计和 2 路数据绑定,特别适合 CRUD 应用程序典型的数据输入任务。
当然还有其他种类的SPA。有一类重要的应用程序主要呈现信息并接受很少的用户输入。这样的应用程序并不能从数据绑定中获得太多好处,而且编写它们的人通常会对数据绑定特别是 KO 怀有敌意。
我的观点是,HT 针对特定类别的应用程序……至少在以持续流行度来衡量时,这种应用程序恰好非常成功。它为构建这些应用程序的人提供商品。它可能不是其他类型应用程序的正确起点。
确实,通往 Breeze 的捷径贯穿于 Web API、EF 和关系数据库。拿走这些,您可能会在服务器上编写更多代码(在客户端上编写更多代码)。这可能是您的完美权衡。
Breeze 的作者希望使这条路径更容易。我不认为 BreezeJS 让它变得更难。我不明白你的说法“微风变得很难使用”。你试过了吗?
您的客户端可以以您选择的任何方式与任何 HTTP 资源进行通信。使用现有的 Web API 控制器非常容易(尽管使用 Breeze Web API 控制器更容易)。如果您愿意,可以使用 amplify.js(顺便说一句,您可以告诉 Breeze 使用 amplify 进行 AJAX 调用)。如果您不想,您甚至不必使用 BreezeEntityManager
来查询和保存数据。
BreezeJS 的其余部分可能对您仍然有价值。在您弄清楚如何检索和存储数据以及您更喜欢 Entity-ChangeSet 样式还是 Command/Query 样式之后,还有很多工作要做。
你必须找到这些问题的答案:
- 您将如何将原始 JSON 数据塑造成可绑定的对象?
- 您将如何保留这些对象并在多个屏幕上共享它们,而不需要对服务器进行冗余往返?
- 将地址绑定到 StatesAndProvinces 的组合框时,您将如何从一个对象导航到相关对象?
- 您将如何跟踪变化?
- 你将如何验证它们?
- 当应用程序“墓碑”时,您将如何将部分或全部数据存储在本地存储中?
即使您不希望它为您查询和保存,Breeze 也可以帮助您完成这些琐事。
如果你的回答仍然是“我会自己做所有这些,谢谢”......好吧,从你的 HotTowel 项目中删除 Breeze 就像这样简单:
Uninstall-Package breeze.webapi