2011-03-08 37 views
0

我正在编写Web应用程序的管理组件。管理任务涉及对复杂对象的CRUD操作。管理部分设计决策

该对象有很多部分,每个部分有许多类别,每个类别都有很多子类别。

管理员应该能够对任何级别的对象进行更改。例如。添加/编辑/删除部分,类别或子类别。

我正在使用MVC3,并发现三种可能的解决方案,使前端。

  1. 使用Razor视图引擎
  2. 使用jQuery插件模板列出的项目和使用JQuery用户界面对话框做创建/编辑屏幕。
  3. 使用jQrid在父/子网格中显示数据,jQgrid提供了内建的创建/编辑/删除操作。

我无法决定哪个是最好的方法,谁能请摆脱一些光?

回答

2

这是一个相当宽泛的问题,少数人可能会提出它是主观的,但围绕您的设计有许多考虑可能会让您倾向于某个决定或另一个决定。

Razor视图引擎允许您保持您的UI在服务器脚本方面非常轻,但仍然可以让您在服务器端执行很多繁重的工作(尤其是数据绑定)。就你的jQuery和CSS而言,它可能需要较少的前端编码。

jQuery模板是“下”的下一步。他们仍然保持应用程序逻辑和表示之间的合理程度的解耦,但需要更多的前端编码,而这些前端编码可能仍需要JsonResult调用的更多支持。根据您公开数据的方式,您可能会发现,使用jQuery模板在UI和呈现方面提供的灵活性比您可能拥有的要高。

jQGrid并非真正用于管理子实体(对象)的嵌套程度。它当然会起作用,但可能更适合于比你想在这里使用的数据更干净的数组。如果你采用这个设计路线,我会建议你可能会开放一个痛苦的世界。

总而言之 - 没有任何进一步的细节可以使用 - 我会根据您的UI需求,推荐您正在考虑的前两种选择之一。

+0

据我所知,管理组件的用户界面需求非常低,我想我现在会坚持用剃刀来控制球。我也同意你的看法,使用jqGrid来显示嵌套的子网格并不是它的设计目的。谢谢 – Will 2011-03-08 12:12:04

1

在我看来,你所描述的树木方式之间的选择应该取决于另外两个方面:1)你在所有技术中的技术诀窍和2)时间和舒适因素。你是否需要更快速和更肮脏的解决方案,或者你想要一般地定义后端?时间因素越重要,你越应该根据目前的知识做出选择。

我可以建议你一种我个人比较喜欢的方式。我喜欢将数据和业务接口与网站上的数据可视化分开。因此,我设计了具有用户权限和授权的RESTful WFC服务,并实现了站点的整个业务逻辑。我发布WCF服务作为我网站的一部分(详情请参阅here)。如果需要的话,可以编写单元测试来测试WCF服务作为网站的核心。

有了WCF服务后,您可以选择您的网站的演示文稿部分。我个人知道并喜欢jqGrid。它具有许多功能,可以让您在网站上创建非常舒适的GUI。管理组件的网格可以同时具有工具栏搜索和高级搜索。根据列进行排序,调整网格列的大小,使用拖动重新排序,隐藏不需要的列等都可以非常容易地实现。 advanced searching或/和toolbar searching的数据过滤将需要更多时间在服务器上进行编程,但是您可以在所有网格中使用此功能。重要的是,为了能够使用服务器端分页和过滤,您应该使用包含分页,排序和过滤信息的方法来扩展Web服务的接口。

如果您决定使用jqGrid,您的MVC Views可以包含大多数空表格和每个网格一个JavaScript。 JavaScript将使用调用WCF服务填充网格的jqGrid。在ASP.NET MVC中,你大多可以构造菜单和工作流,它可以是用户依赖的(取决于站点上的用户权限)。

所以我认为你应该根据你有的要求,你所有的技术知识,时间因素和舒适性要求来自己做出选择。在所有情况下,您需要决定如何设计站点以显示并修改所有类别,子类别和其他分层和依赖对象。

+0

我对所有三种技术感到满意,在有人向我介绍JQuery模板插件之前,我肯定会使用Razor。该应用程序非常简单,团队决定使用MVC作为前端,并为后端使用Data dll,因此WCF在这里不是一个选项(尽管我完全同意你在RESTful WS上的使用)。感谢您的链接:) – Will 2011-03-08 12:08:02

+0

@Will:如果您决定使用jqGrid,那么您可以实现控制器操作,该操作以与WCF相同的方式返回JSON。在操作中,您可以始终使用HTTP POST或使用HTTP POST/PUT/DELETE/GET取决于操作。这只是行为方法的一个附加属性。因此,无论您使用REST风格还是不使用仅MVC问题或带WFC的MVC都是独立的。 WCF对我的使用主要是设计决定。你描述的所有树木方式我也考虑过。您的选择应该基于您的要求。 – Oleg 2011-03-08 12:21:29