【问题标题】:Architectural guidance for an eBay-like "Contact Us" system with a decision "workflow"具有决策“工作流程”的类似 eBay 的“联系我们”系统的架构指南
【发布时间】:2011-11-02 19:44:13
【问题描述】:

我正在为一个应用程序创建一个新的支持中心和“自助”客户服务模块。 CIO 真的很喜欢 eBay 的“联系我们”页面的流程,基本上是这样工作的:

  • 首先,您从一组主题(例如购买、销售、eBay 上的帐户)中选择一个特定主题
  • 然后,根据您选择的主题,您将看到似乎是三种可变类型的信息之一(名称正是我在一些初步草图中所称的):
    1. “描述性”:显示富文本以及可能指向应用程序其他部分的链接。
    2. “选择”:显示附加主题列表
    3. “Action”:让用户查找项目并执行一些操作(例如取消)

通过一些实验,一个选项可以列出到其他选项、​​描述性文本块或操作部分。

我对合适的架构感到困惑。我选择的平台是 ASP.NET(遗憾的是,WebForms;我们不想在这里接触 MVC),因此“操作”区域必须是动态加载到占位符中的用户控件,但我更关心的是可能的数据库结构。我需要一种方法来知道每个主题是否导致上述三种类型之一,然后在页面上动态加载内容、链接列表或用户控件,这使事情变得有点棘手,更不用说非技术用户必须从某种管理面板更新和添加信息。

对做这样的事情有什么建议吗?我的截止日期不是很紧,但我不能花太长时间,否则我会被认为是在浪费时间,没有产生结果。

【问题讨论】:

  • 您的约束是 ASP.NET 还是特别是 ASP.NET 网络表单?
  • WebForms,很遗憾。此处不能介绍 MVC。

标签: c# asp.net architecture


【解决方案1】:

如果我个人这样做,我会根据需要推出一些 MVC3 控制器来处理工作流程步骤。不过,这似乎不适合你。

对于网络表单,我很可能会考虑使用 Windows Workflow Foundation 来处理这个问题(学习曲线在这方面比较陡峭)。这是使用 WF Flexible Web UI Workflow application through ASP.NET MVC & Windows Workflow Foundation 的一个很好的例子。它建立在 MVC 之上,但是您可以轻松地将 return Views() 替换为 return UserControls。

遵循这样的模型实际上会为您提供 MVC 模式。控制器指示流程非常适合工作流场景。

编辑:因为这似乎是不可能的,此时你最好的选择就是编写一个控制器类来手动管理流程(可能是一堆状态/if检查) 然后重定向用户或返回适当的用户控件。

【讨论】:

  • 我会看看,但老实说,我不认为我能获得批准引入 Workflow,或者地狱引入任何新的东西(我必须全力以赴获得批准才能使用 Linq Sql 而不是原始的无类型数据集 + sprocs) - 管理层似乎认为这是一组非常简单的页面/条件,所以我可能不得不以某种方式妥协并使我的版本非常简单化才能真正做到这一点.
  • 听起来你来到 SO 只是为了让自己对所有你不能做的事情感到难过。
  • 更像是希望有一个简单的方法来处理这个问题,我应该知道的更好:)
  • 所有途径中最合适的解决方案是Controller类指示流。
【解决方案2】:

如果您可以以某种方式存储“知识树”,例如可以组织所有选项/可能的操作、描述等的自定义 XML 文件。那么您可以根据用户的选择“遍历”它并显示适当的用户控件根据您当前所在的 XML 节点的内容动态生成内容。

然后,您的“管理工具”将需要更新/修改 XML 文件,而您的“公共”CMS 将在 ASPX 表单中呈现用户控件。

我参与的其中一个项目将这种方法用于 Intranet 的用户菜单 - 实际上是一个超链接/操作的知识库,分为多个类别,因此可以深入了解它们。每个元素都可以包含指向其他元素的链接 - 所以你有一个类似蜘蛛网的可导航链/工作流。

只要确保每个元素都有一个唯一的 ID(实现起来很简单),您总是可以通过 xpath 获取它。

通过让用户修改“工作副本”并在发布更改时保留实时 XML 文件的备份,您还可以获得在数据库中很难做到的版本控制/回滚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2012-02-20
    • 2010-10-12
    • 2021-11-26
    • 2013-02-18
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多