实现业务对象的一个WinForms MVP应用程序

本文关键字:一个 WinForms MVP 应用程序 业务 对象 实现 | 更新日期: 2023-09-27 18:07:37

我正在从头开始构建一个新系统,并致力于应用程序的设计。我正在寻找可行的方法来建模我的领域对象。

项目的一些细节——这将是一个相当大的数据输入WinForms应用程序,集成到ESRI ArcMap(一个GIS应用程序)中。数据访问必须经过ArcMap自己的数据访问层——数据通过游标样式访问来检索和保存。这不是获得数据的问题,但据我所知,这排除了ORM工具作为实体框架和NHibernate,因为我不能直接与数据库交互。

WinForms应用程序将遵循MVP监督控制器模式-视图将绑定到模型。演示者也将修改模型。所以Domain对象应该支持以下内容:

  • 更改通知
  • 变更跟踪。至少我想知道我的模型是否改变了。

我的选项到目前为止:

  1. 手工写POCOS 。+优点/缺点:
    • +应该是可行的
    • +可兼容业务逻辑
    • +绑定
    • -大量的手工工作
      • - INotifyPropertyChange接口的变更通知。
      • -通过IsDirty属性更改跟踪,必须手动维护。
  2. ADO。由POCOs封装的。NET数据集。+优点/缺点:
    • +更改通知"for free"
    • +更改跟踪"for free"
    • +绑定
    • -感觉有点乱

我已经排除的:

  • 实体框架-我在。net框架3.5,所以没有代码优先的支持。据我所知,处理域逻辑是非常混乱的——事件处理程序。

还有其他好的选择吗?也许是代码生成(对工具有什么建议吗?),一些框架?至理名言,建议?

实现业务对象的一个WinForms MVP应用程序

我的poco只是"愚蠢的"数据传输对象,它们不包含任何业务逻辑。它们也不是我的模型,因为它们是另一组更接近我的UI的简化对象。我只是在我的数据访问层中填充我的dto数据,将它们传递给我的服务层来处理业务逻辑,但它们只被传递给我的演示器/控制器,以通过模型向我的UI中填充我需要的足够的信息。对于您的场景,我认为这将更合乎逻辑,因为您必须通过ArcMap的数据访问层。您可以将数据保存在表示层中,并在那里进行更改跟踪。

阅读这本书这比你需要知道的还要多