问题
使用Knockout 2.0.1,Upshot.js和Entity Framework 4.3构建应用程序的最佳实践是什么?
技术堆栈
我们的技术堆栈目前看起来像:
•SQL Server 2008 R2 •ASP.NET MVC3(使用C#)和Entity Framework 4.3(使用Code-First) •jQuery 1.7.2 •jQuery-UI 1.8.2 •淘汰赛2.0.1 •Upshot.js beta
背景(许多其他开发人员可能会在这里替换他们自己的项目。)
我们正在开发一种新的Web应用程序,其中用户体验非常重要。该申请涉及许多密切相关的实体。由于各种原因,非常希望使这些实体中的许多或大多数存在于相同的一般视觉上下文中(并且很可能在相同的“页面”上)。此外,多个页面元素需要与服务器进行频繁的通信。
虽然我们最初打算将ASP.NET MVC4用于表示层,但我们很快就认为这可能不是最好的方法。在努力使MVC成为我们想要的东西之后,我们基本上得出结论,我们最好的方法是将几乎所有UI逻辑移动到客户端,只是将JSON数据来回传递给服务器。单页应用程序似乎非常适合我们客户的需求。
我们一直在评估Knockout,但由于我们的ASP.NET MVC Controller(使用JSON Action方法)公开的实体(在JavaScript中)所需的工作量,我们一直没有完全“出售”它。对于超过100个不同的实体,这种手动映射会非常痛苦!
在看到Steve Sanderson在TechDays Netherlands(http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2159)上发表关于“单页应用程序”的精彩演讲之后,我们认为圣诞节来得早。 Knockout + Upshot似乎是完美的解决方案。在没有花费任何合理时间思考的情况下,我们立即通知客户我们将对UI工具集进行一些调整。
当我们开始深入研究伴随任何实际应用程序的更微妙的架构问题时,我们意识到实现方法和最佳实践的示例很少甚至更少
我们已经汇编了许多棘手的建筑问题,这些问题都在寻求答案。我们非常感谢您提供的任何想法或解决方案。
在upshot和.NET之间进行通信的最佳机制是什么?
根据Denver Developer在他的博客文章“挖掘到Upshot.js”(http://denverdeveloper.wordpress.com/2012/03/07/digging-into-upshot-js/)的说法,有三个数据Upshot.js公开的提供者。这些是:
•“默认为DataProvider()并使用/ Submit方法和您提供的操作来使用jQuery的$ .ajax方法获取数据。 •下一个是riaDataProvider() - 与第一个类似,但它使用/ json / SubmitChanges方法和/ json / {your opertion}来获取数据 •最后我们还有odataDataProvider() - 这个是完全不同的,因为它目前不支持更新数据 - 它是只读的。“
哪个数据提供商更好 - 默认数据提供商或RIA数据提供商?推荐哪一个?
如何配置控制器来管理传入和传出数据?
我们的理解是WebAPI控制器只能有一个“Get”方法。如果我们可能会对服务器执行几百个不同的查询(不包括过滤器变体),这是否意味着我们需要200个不同的控制器类?如果是这样,这是否支持使用upshot的riaDataProvider()以外的数据提供者?
如何访问并绑定可用于Upshot的元数据?
Upshot的一个假定好处是能够查询通过数据注释公开的元数据。 (至少这是我们目前的理解。)如何访问字符串长度,默认值,显示名称,描述信息以及是否需要字段的实体属性的元数据?
哪个客户端验证库应该与Knockout和Upshot一起使用?
据推测,使用标准jQuery验证需要在所有表单输入字段上绑定“uniqueName”。似乎不鼓励使用jQuery Validation。 Knockout插件页面(https://github.com/SteveSanderson/knockout/wiki/Plugins)列出了两个验证插件 - “Knockout.Validation”和“Knock-Knock Validation”。对于一般用途,推荐使用什么工具或插件进行Knockout验证?
Upshot如何处理层次结构中的对象创建和更新?
当upshot将数据写回服务器时,它是否会自动处理父母及其子女的同时添加,这可以在Entity Framework中完成?我们假设答案是肯定的,但这不是我们已经测试过的。
答案 0 :(得分:0)
正如所建议的那样,我将这篇文章分成几个小问题。