Breeze 为什么热毛巾包括微风?

Breeze 为什么热毛巾包括微风?,breeze,hottowel,Breeze,Hottowel,从表面上看,这听起来可能是一个愚蠢的问题,但为什么会包括这些问题呢 在过去的几天里,我一直在学习热毛巾及其依赖关系,据我所知,模板中没有任何内容实际使用Breeze。也许这会随着未来的发布而改变 当然,Breeze是一个很好的图书馆。但它必然要采用CRUD方法,并要求您以特定的方式设计ApicController。(元数据、保存更改等) 它还指导您使用实体框架。虽然这更像是一种软依赖,因为Breeze也显示了这一点,但它仍然可以引导您使用修改后的存储库模式实现类似的模式 如果您使用的是NoSQL

从表面上看,这听起来可能是一个愚蠢的问题,但为什么会包括这些问题呢

在过去的几天里,我一直在学习热毛巾及其依赖关系,据我所知,模板中没有任何内容实际使用Breeze。也许这会随着未来的发布而改变

当然,Breeze是一个很好的图书馆。但它必然要采用CRUD方法,并要求您以特定的方式设计ApicController。(元数据、保存更改等)

它还指导您使用实体框架。虽然这更像是一种软依赖,因为Breeze也显示了这一点,但它仍然可以引导您使用修改后的存储库模式实现类似的模式

如果您使用的是NoSQL数据存储或CQRS模式而不是CRUD,那么Breeze将变得非常难以使用。在这种样式下,有一些用于数据访问的替代库可以很好地工作,例如


但剩下的热毛巾非常棒!我特别喜欢杜兰达尔。因此,问题是,如果模板实际上没有进行任何数据访问,那么为什么要包含任何数据访问组件呢?最好在没有微风的情况下发货,如果最终用户想要使用微风,或者放大,或者其他任何东西,那么就这样吧。热毛巾的其余部分将继续作为一个伟大的水疗实施而闪耀。

马特-好问题。既然是我创造的,我想我应该回答:)

当我构建模板时,我的重点是提供足够的工具让人们使用正确的工具,以及足够的入门代码来指导工作。我不想让任何人破坏代码。我不是一个模板的粉丝,这些模板让你走上一条路,让你删除大量的文件和代码,改变方向。那些是样品

样品很好。事实上,示例可能非常优秀(就像其他模板一样,我觉得它们更像示例)。这些服务还有另一个目的:展示你如何做事

回到热毛巾模板…如果我包含使用Breeze的代码,我会尝试在客户端添加datacontext.js和model.js。它们将包含数据访问代码和在客户端上扩展模型的代码。然后我会尝试添加一个控制器、一些服务器端模型、一个ORM和一个数据库。一旦到了那里,我想在多个屏幕中使用这些数据,这会让我使用Breeze进行更多的淘汰和缓存。然后我可能会尝试添加编辑,这将导致更改跟踪。很快我就有了一个成熟的应用程序。或者更保守地说,我又有了一个样本。虽然这些方法将提供更多关于如何将这些组合在一起的指导,但它们不会帮助您“开始”使用一个模板,您可以在该模板中开始构建和添加自己的代码。如果我缺少这些功能,它仍然在走一条路,需要你改变我的做法

就目前的情况来看,HotTower与真正意义上的模板非常接近。您创建了一个新项目,然后就可以开始添加自己的代码了

你可能会争辩说(你可能会争辩)Breeze不应该在那里,因为我在模板中没有使用它。顺便说一句,我也不使用moment.js。不过,我认为它们都是优秀的库,如果没有它们,我不想构建基于CRUD的SPA。正如你所说,微风是灵活的,所以你不必走特定的道路

理解Breeze价值的最佳方法是构建一个有其功能但没有Breeze的应用程序。然后,您可以看到需要多少代码,以及需要多少代码。举一个这样的例子,请参见我在Pluralsight的中级水疗课程,我在那里做的就是:

所以你问“为什么是微风?”。。。因为我强烈推荐它做水疗


谢谢你的邀请,祝你好运

谢谢你的提问

作为《HT》的作者,约翰给出了一个答案。一、 作为Breeze项目的负责人,我倾向于同意他的观点:)

< HoToWEL为你建立一个基础。这不是建筑本身

它是针对特定类型的应用程序的基础,是基于特定的协作JavaScript和ASP.NET技术集的CRUD应用程序。微风是一个贡献者。。。但不是唯一的一个。Knockout具有MVVM设计和双向数据绑定,特别适合CRUD应用程序典型的数据输入任务

当然还有其他类型的温泉。有一类重要的应用程序主要提供信息,很少接受用户输入。这类应用程序并没有从数据绑定中获得太多好处,编写它们的人可能会对数据绑定抱有敌意,尤其是KO

我的观点是HT针对一个特定的应用程序类。。。一个碰巧非常成功的人,至少以持续的受欢迎程度来衡量。它为开发这些应用程序的人提供产品。它可能不是其他类型应用程序的正确起点

诚然,轻松实现Breeze的途径是通过WebAPI、EF和关系数据库。去掉这些,您可能会在服务器上编写更多的代码(在客户机上编写更多的代码)。这对你来说可能是一个完美的权衡

《微风》的作者希望这条路更容易走我不认为BreezeJS会让事情变得更难。我不明白你说的“微风变得很难使用”你试过了吗

您的客户端可以用您选择的任何方式与任何HTTP资源通信。使用现有的Web API控制器非常容易(尽管使用Breeze Web API控制器更容易)。如果愿意,您可以使用amplify.js(顺便说一句,您可以告诉Breeze使用amplify进行AJAX调用)。如果不想查询和保存数据,您甚至不必使用Breeze
EntityManager

剩下的BreezeJ可能对你仍然有价值。在弄清楚如何检索和存储数据以及您是喜欢实体变更集样式还是命令/查询样式之后,还有大量工作要做