为WinForms MVP应用程序实现Business Objects

时间:2011-09-02 15:41:51

标签: c# winforms mvp domain-object

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

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

WinForms应用程序将遵循MVP Supervising Controller模式 - 视图将绑定到模型。 Presenter也将修改模型。所以Domain对象应该支持以下内容:

  • 更改通知
  • 更改跟踪。在最低限度,我想知道我的模型是否已经改变。

到目前为止我的选项:

  1. 手写POCOS 。 +优点/ -Cons:
    • +应该可行
    • +可以适应业务逻辑
    • +可绑定
    • - 很多手工作业
      • - 通过INotifyPropertyChange界面更改通知。
      • - 通过IsDirty属性进行跟踪,必须手动维护。
  2. 由POCO包装的ADO.NET数据集。 +优点/ -Cons:
    • +免费更改通知“
    • +更改跟踪“免费”
    • +可绑定
    • - 感觉有点凌乱
  3. 我排除了什么:

    • 实体框架 - 我在.net Framework 3.5上,所以没有Code First支持。据我所知,处理域逻辑非常混乱 - 事件处理程序。

    还有其他好的选择吗?也许代码生成(关于工具的任何建议?),一些框架?智慧的话,建议?

2 个答案:

答案 0 :(得分:0)

我的POCO只是“愚蠢”的数据传输对象,它们不包含任何业务逻辑。它们也不是我的模型,因为它们是另一组更接近我的UI的哑巴对象。我只是在我的数据访问层中为我的DTO充满了数据,将它们传递到我的服务层以处理业务逻辑,但它们只传输到我的演示者/控制器,以便通过模型将我需要的足够信息提供给我的UI 。对于您的场景,我认为这更合乎逻辑,因为您必须通过ArcMap的数据访问层。您可以将数据保留在表示层中,并在那里更改跟踪。

答案 1 :(得分:0)

Read this book 它甚至超过你必须知道的