我需要一个简单的模式来完成上述操作。有几点需要注意:
1)我有一个类,我必须使用它来进行实际数据检索并返回 DataTable
2)我不关心支持所有可能的数据库类型的通用接口,我们坚持使用一种数据库类型。
3)我如何优雅地捕获错误并通知用户发生了错误。
4) 不要让我学习 MVC - 现在不是一个选择。
我对实际的图案设计很感兴趣。
我需要一个简单的模式来完成上述操作。有几点需要注意:
1)我有一个类,我必须使用它来进行实际数据检索并返回 DataTable
2)我不关心支持所有可能的数据库类型的通用接口,我们坚持使用一种数据库类型。
3)我如何优雅地捕获错误并通知用户发生了错误。
4) 不要让我学习 MVC - 现在不是一个选择。
我对实际的图案设计很感兴趣。
您想使用MVC模式将业务逻辑与表示分离(注意我不是在谈论ASP.NET MVC 框架)和DAO模式将业务逻辑与数据访问分离。
返回 DataTable 的类成为模型的一部分。您编写了一个层(每个域对象的 DAO),它获取您的 DataTable 并将其转换为您的各种域对象。您的 UI 不应包含任何除了向用户呈现输出之外的逻辑;从模型中检索数据的任何实际逻辑都在控制器层中处理,该层获取用户从模型中请求的数据并将其发送到适当的视图以将其呈现给用户。
异常应该在层边界处理;要么捕获并做一些事情(可能只是记录它并将用户发送到错误页面),要么在适当的情况下包装更高级别的异常。
不要让我学习 MVC - 现在不是一个选择。
您可以在不使用 ASP MVC 框架的情况下执行简单的 MVC 或 MVP 模式。介绍起来很简单。这是一个非常简单的示例MVP 示例
有许多模式可以接近您所描述的。我建议购买 Martin Fowler 的优秀著作《企业架构模式》,特别是第 14 章。Web 表示模式。您会发现,任何将表示、域(业务逻辑)和数据源分开的认真尝试都会导致您进入同一主题的许多变体之一。
MVC、MVP、可视化代理等都分解为三层,不同的是每一层的职责以及层之间的通信方式。
例如,被动视图模式基本上剥离了 UI 层与表示不直接相关的任何内容。如果某个条件为真,则典型示例是您要突出显示的字段。在被动视图中,表单仅包含确定是否应突出显示该字段的逻辑。触发此状态的业务规则将位于不直接依赖于实际视图的演示者/控制器层中。
就数据源层而言,主要好处是无法立即切换数据库。主要好处是对数据库模式的更改只会影响数据源层,不会扩展到应用程序的其余部分。如果您坚持使用数据集,一个好方法是Table Data Gateway模式。