插件中输入/输出数据的最佳方法是什么?

13
我正在使用MEF和EntityFramework 4构建工作站代理应用程序。
该应用程序是一种简单的代理,它具有插件体系结构(以.dll文件的形式存在许多插件)并在计算机上运行。
每个插件将查询其自己特定于插件的表。主程序(或代理)需要向插件传递信息,并从插件接收信息。
插件将使用Entity Framework 4.1检索数据,因此它将已经将数据格式化为对象(可能是重量级对象,因为它们与EF上下文相关联)。另外,我从数据库中检索回来的数据是一系列连接,因此这些数据不匹配我已经创建的任何POCO标识/类。
最佳的入出插件数据的方式是什么?考虑到我正在使用MEF将这些部件连接起来,而且插件中已经有了数据对象。我应该创建一个新的POCO并将实体数据移动到其中,然后重新排列数组吗?还是应该创建一个List?我不仅对可以做什么感兴趣,更关注最佳实践!

应用程序将如何处理从插件获取的数据?我认为这是一些预定义的操作,因此针对接口进行编码(应用程序和插件都知道的接口 - 可能在单独的“Commons”库中)是有意义的。 - Omar
谢谢Omar。我希望主应用程序将插件生成的结果保存到数据库中;我想我可以在[Return]上完成这个操作。思考了一下我的问题,我真正想知道的是跨库数据编组的最佳实践是什么。最终,我创建了一个新的POCO(没有getter和setter),只包含我要使用的字段,将它们添加到列表中,释放EF上下文,并返回该列表。 - s0ftimage
你的方法对我来说很有道理,不过我可能会使用新的 POCO(或 POCO 列表)将数据发送到插件。插件实际上不需要知道你的数据层的任何信息,对吧? - Adventure
只是提供信息 - 我的插件需要来自三个不同表格的复杂数据。我的数据源自数据库,通过Entity Framework,而我对其对象并没有太多经验。我正在研究将XML(作为字符串)传递给插件。每个插件都可以解析XML以获取所需的值。插件还会返回数据作为字符串(带有XML)。我想这只是因为我不理解来回传递数据的无数选项。 - s0ftimage
1个回答

1

这是一篇关于数据传输对象的好文章。它涉及到了你在这里提出的POCO对象的要点。由于你正在构建一个具有进一步扩展和定制意图的应用程序,我认为POCO对象是正确的选择。否则,任何进一步的组件都将需要依赖EF,这可能会给插件开发人员带来负担。使用POCO/DTO对象,您将对发送什么以及以什么结构发送有更多的控制权。

插件应该实现(虚拟?)基类或接口。我可能会选择接口,因为-再次强调-对于插件开发人员来说,添加接口比添加基类更容易。

实际上,我没有说出任何新东西,你、Omar和Adventure已经说过了。基本上我是在说我认为你已经很好地掌握了它 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接