【问题标题】:What is the best way to marshall data in/out of the plug-ins?将数据编组入/出插件的最佳方式是什么?
【发布时间】:2011-08-18 01:45:06
【问题描述】:

我正在使用 MEF 和 EntityFramework 4 构建我的工作站代理应用程序。

该应用程序是一个简单的代理,在具有插件架构(以及许多 .dll 文件形式的插件)的计算机上运行。

每个插件都会查询自己的插件特定表。主程序(或代理)需要向插件传递信息,并从插件接收信息。

插件将使用 Entity Framework 4.1 来检索数据,因此它已经将数据格式化为对象(可能是重对象,因为它们与 EF 上下文相关联)。此外,我从数据库中提取的数据是一系列连接,因此数据与我已经创建的任何 POCO 身份/类都不匹配。

将数据编组入/出插件的最佳方式是什么?考虑到我正在使用 MEF 将各个部分联系在一起,并且插件中的数据已经有了对象。我应该创建一个新的 POCO 并将实体数据移入其中,然后对数组进行洗牌吗?我应该创建一个列表吗?我不仅对可以做什么感兴趣,而且对最佳实践感兴趣!

【问题讨论】:

  • 应用程序将如何处理从插件中获取的数据?我认为这是一些预定义的操作,因此针对接口(应用程序和插件知道的接口 - 可能在单独的 Commons 库中)进行编码是有意义的。
  • 谢谢奥马尔。我希望主应用程序将插件生成的结果保存到数据库中;我想我可以在[返回]上做到这一点。更多地考虑我的问题,我真正想知道的是跨库编组数据的最佳实践是什么。我最终创建了一个新的 POCO(没有 getter 和 setter),只包含我将要使用的字段,将它们添加到列表中,处理 EF 上下文并返回列表。
  • 您的方法对我来说很有意义,尽管我可能也会使用新的 POCO(或 POCO 列表)将数据发送到插件。插件不需要真正了解您的数据层,对吧?
  • 仅供参考 - 我的插件需要来自三个不同表的复杂数据。我的数据来自数据库,通过实体框架,我对其对象没有太多经验。我正在研究将 XML(作为字符串)传递给插件。每个插件都可以解析 XML 以获取所需的值。插件还将数据作为字符串返回(使用 XML)。我想这只是对来回传递数据的大量选项缺乏了解。

标签: .net entity-framework design-patterns mef poco


【解决方案1】:

这是一篇关于Data Transfer Objects 的好文章。它涉及您在此处使用 POCO 对象提出的要点。由于您构建具有进一步扩展和定制的明确意图的应用程序,我认为 POCO 对象是要走的路。否则,任何进一步的组件都需要依赖 EF,这可能对插件开发人员造成负担。使用 POCO/DTO 对象,您可以更好地控制发送的内容和发送的结构。

插件应该实现(虚拟?)基类或接口。我可能会选择接口,因为插件开发人员向他们的代码添加接口比添加基类更容易。

说真的,我并没有说你、Omar 和 Adventure 还没有说过的新东西。基本上我是说我认为你已经掌握了它:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 2014-07-21
    • 2017-04-05
    • 2012-03-04
    • 2012-11-27
    • 1970-01-01
    • 2021-12-13
    • 2017-03-26
    相关资源
    最近更新 更多