【问题标题】:Developing a short-term web-based data entry UI开发基于 Web 的短期数据输入 UI
【发布时间】:2011-01-25 15:21:12
【问题描述】:

假设您必须快速构建一个在 Web 浏览器中工作的数据输入 UI,它必须与业务层交互,而业务层必须与数据层交互。

您只想连接到业务对象,而不是直接连接到数据库。

UI 的大部分视图都是简单的 CRUD 操作,在网格内进行编辑/更新。

但有些屏幕会更复杂,代表多对多关系。

在 ASP.NET 中实现这一目标的最快方法是什么?

(注意:开发速度是高优先级,代码质量和可重用性是低优先级。)

【问题讨论】:

    标签: asp.net architecture user-interface data-entry


    【解决方案1】:

    这取决于应用程序的复杂性。我会使用 Linq to Sql。但是使用 Linq to Sql 并没有必要在业务层和数据访问层之间提供良好的抽象。但我发现使用 Linq to Sql 可以快速从存储中检索数据并将其显示在屏幕上。

    另外,如果您想要快速的 UI,请查看动态数据网站。这也使用 Linq to Sql 或实体框架。

    您必须考虑的一个问题是,如果您需要良好的设计或 RAD。

    【讨论】:

      【解决方案2】:

      为简单起见,您可以使用一些经过时间测试的控件和对象:

      • 用户界面层:GridView 用于显示和提供用于编辑和删除数据的链接。单击编辑链接可能会打开一个新的 Asp.net 网页,其中包含用于插入和更新记录的 FormView。使用 ObjectDataSource 链接业务逻辑层的方法以创建/读取/更新/删除记录。

      • 业务逻辑层:除了创建 CRUD 方法外,您可能需要使用轻量级可序列化数据传输对象在不同层之间传递数据,并使用自定义映射器在其他层之间传输数据。

      • 数据访问层:Linq to Sql 可能使数据访问和操作变得快速而轻松。

      【讨论】:

        【解决方案3】:

        如果开发速度是主要优先事项,那么就按照你所知道的去做。

        例如,如果您知道 ado.net/enterprise 库,那么就使用它。如果你知道 Entity Framework 或 LINQ,那就走那条路吧。

        如果没有对您的技能进行总结,任何人都无法告诉您启动和运行某项工作的最快方法。

        【讨论】:

        • 我认为,既然我们已经投资了动态数据,那么最好还是坚持下去。至少我们会做出决定。
        【解决方案4】:

        我用同样的方式为我的公司写过很多这样的小商业编辑器,让它快速工作,如果它被使用或需要改进,我稍后会处理。

        启动一个新的 asp.net 项目。将类库添加到解决方案并从 asp.net 应用程序中引用它。

        Asp.Net 应用程序

        • 使用母版页和主题
        • 对数据列表和命令按钮使用中继器进行选择和删除。
        • 中继器也适用于内部列表,请注意 OnItemDataBound 和 OnItemCommand。
        • 使用面板来保存列表和编辑器,编写一些逻辑来控制何时查看编辑器以及何时查看列表。
        • 如果逻辑通用,则制作一些新编辑器可以使用和覆盖的基本页面。

        类库

        • 添加您的业务对象
        • 添加 Linq to Sql 类并根据需要添加数据库对象。

        【讨论】:

          【解决方案5】:

          实体框架 + ASP.NET 动态数据?

          【讨论】:

          • 这绝对是在 Asp.net 中实现这一目标的最快方法。
          • 有趣的是,您想出了与我们开始使用的完全相同的组合。我问这个问题是因为我想看看还有哪些其他选择。目前,这两种技术都存在很多问题。实体框架 - 无法对工作表上的关系进行简单更新;这在 Linq 中绝对是儿童游戏!动态数据 - 对我们的需求非常不灵活。我们希望在网格视图中插入。做不到。我们只想更新有变化的列。做不到。不得不编写一个复杂的 hack 来解决这个问题。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多