【问题标题】:Extending WCF Interface with Plugins使用插件扩展 WCF 接口
【发布时间】:2010-08-08 14:39:03
【问题描述】:

我正在构建一个带有 Silverlight 前端的应用程序,该前端通过 WCF 与后端服务进行通信。我的服务有一个接口来处理与前端的所有核心通信。

后端可以使用各种插件进行扩展,我计划加载自定义 silverlight 模块,以便使用 prism 配置这些插件。问题是,这些插件将添加不属于基本 WCF 接口的附加功能。我想为我的所有通信维护一个端点(即不需要额外的路由器配置)。

我正在寻找有关如何处理此实现的一些想法。目前我的“最佳”想法是在我的核心接口中有一个函数,它接受函数名称和参数列表,并使用反射找到要在特定插件中调用的函数,我不喜欢这个有很多原因。

对于在单个端点上构建可扩展的 WCF 接口,您有什么建议?

谢谢

【问题讨论】:

    标签: c# silverlight wcf plugins interface


    【解决方案1】:

    我可以想到两种通常的处理方式:

    1. XML 合同 - 基本上,您的服务只不过是一个带有 XML 返回值的 XML 参数。然后,您可以解析或序列化/反序列化客户端和服务器之间的命令。因为您的合同只公开单个 XML,所以您在“内部”做什么取决于您。您可以为新方法传输模式以验证在客户端上构建的调用等操作。

    2. RESTful 服务 - 这是另一种简单的方法。因为 REST 契约是 URL,所以添加新扩展就像提供新的 URL 格式一样简单。您可以通过格式化程序与客户端沟通如何为扩展方法调用新调用,并在构建应用程序时管理这些调用。

    然而,实际上,我怀疑您的字体端是否能够处理所有边缘情况并在您扩展服务器端时动态构建新屏幕和验证。在这种情况下,我认为更好的方法是将 Silverlight 应用程序构建为使用 MEF 的模块应用程序。当您在服务器上有一个扩展时,您可以简单地为客户端提供一个扩展 XAP。您可以让服务器枚举插件目录中的 XAP 文件并将这些文件发送到 Silverlight 应用程序,这样当一个新的可用时,它可以动态加载这些文件。 XAP 将包含用于连接到扩展功能的新 WCF 合同的代码。

    【讨论】:

    • 谢谢,这正是我正在寻找的建议。我计划在前端使用 MEF,而 XML 或 REST 看起来都是不错的选择
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2010-09-21
    相关资源
    最近更新 更多