将核心API的关键类/方法暴露给第三方开发人员的最佳方法是什么?

时间:2010-10-14 02:44:39

标签: c# design-patterns api architecture

我有一个我设计的应用程序,这个应用程序有一个相当不错的核心DLL,包含我的主视图的exe使用的API。我想允许其他开发人员访问此核心dll,但我不希望他们拥有与我一样多的访问权限,因为这会带来安全风险。暴露我的核心DLL的标准方法是什么?我应该看一下特定的设计模式吗?

我正在使用C#

编辑:我的问题有点含糊,所以这里有一些澄清

我的程序部署为引用core.dll的Windows exe。我希望其他人创建扩展,通过在/ extensions目录中加载dll,在启动时动态加载到我的程序中。第三方dll将继承/实现我的core.dll中的某些类/接口。我只想让第三方有限访问我的核心,但我想给我的exe额外访问核心。

我应该提一下,这是我第一次编写导入DLL的程序。也许这种允许用户添加扩展的方法是错误的。

3 个答案:

答案 0 :(得分:3)

  

如何修改/公开我的API   其他开发者?

故意让其他开发人员使用你已构建的API接触很多东西,可以分为两个方面:

  1. 资源(文档,示例等)使他们更容易理解(是的 - 基本上是SDK)。
  2. 构建,构建和部署您的解决方案,以便轻松实际使用。
  3. 示例包括:

    • 以适合重复使用的方式包装。
    • 使用其他人可以轻松遵循的命名约定和成员名称。
    • 文档,样本。
    • 如果您愿意修改源代码,请提供源代码(作为开源代码)。
      

    我想允许其他开发者   访问这个核心DLL也是我   不希望他们拥有尽可能多的访问权限   作为我,因为它将是一个安全   风险。

    好的,这样我们就可以进入第二个领域 - 实际的解决方案。

    你遇到的问题不是一个微不足道的问题 - 但它也很可行;我建议:

    您面临的最大问题是您正处于严肃的架构领域 - 您现在做出的决策将对解决方案的各个方面产生深远的影响。因此,您可能无法快速做出明智的决定。仍然 - 你必须从某个地方开始:)

答案 1 :(得分:2)

由于您使用的是C#,我会查看Microsoft的Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries并使用FxCop强制执行其中许多版本(最新版本here)。这不是你可能需要的全部,但它会帮助你朝着正确的方向前进。

另外,请查看同一作者免费提供的distillation框架设计指南。

答案 2 :(得分:2)

就API而言,“设计模式”与REST之类的内容更为相关。

  

我不希望他们拥有那么多   作为我访问,因为它将是一个   安全风险

然后我会(为了维护),在核心DLL的顶层加上额外的逻辑来防止这种情况。

问题是,“客户端”调用API,而不是核心DLL。

API如何访问Core DLL完全由您完全控制。只展示您希望的操作合同。