在我工作的公司,我们有一个用 .NET 开发的桌面应用程序,我们希望为其他软件开发人员开放一些部分。
我认为它就像其他软件可以访问的某种公共方法。有没有这方面的标准方法、最佳实践或其他经验?
我想你可以通过 Win32 调用、C/C++ 编程等来做到这一点,但我主要是一名 .NET 开发人员,并且拥有多年的编程经验,主要使用 VB.NET,但也使用一些 C#。我希望在 .NET 中找到一种方法来做到这一点。但用其他语言开发的软件应该可以访问它。
有两种方法可以解决这个问题。 第一个涉及使用插件/模块模式。 从这里开始为此。
第二种方法是通过记录良好的程序集简单地公开您的 API 逻辑。
您选择的方式实际上归结为您希望如何实施。 例如,Adobe Photoshop就很大程度上采用了插件模式。 MS Office 使用这两种插件并提供用于使用应用程序的对象接口。
更新: 只需将对象范围设置为 Public,即可公开 .Net 程序集中的对象以供外部应用程序使用。 这包括 Windows 窗体、业务对象、枚举等。
从外部开发者的角度思考一下。 他们需要拥有哪些信息才能成功扩展/控制您的产品? 无论是什么,请将其放入帮助文件中。
此外,还可以利用 .Net 的自动文档功能。 这包括添加 IDE 已经知道如何通过智能感知读取和显示的 xml 文档。 例如:
/// <summary>
/// Gets all active documents for the specified customer.
/// </summary>
/// <param name="customerId">The Id of the customer.</param>
/// <returns>A list of documents for this customer.</returns>
public static List<Document> GetDocuments(int customerId)
{
//... do something ...
}
创建一个 API 类,公开您希望人们访问哪些功能,并将其注册为 COM 互操作项目 -> 属性 -> 构建 -> 注册 COM 互操作
“通过公共 API 公开应用程序”并不是详细的需求定义。在设计任何东西之前,先获取详细的要求。
对于 API,我建议您从需求开始,然后继续使用案例。由于这是一个 API,因此您实际上应该使用建议的 API 编写一些代码,看看对其进行编程的感觉如何。您编写的代码应该涵盖您开始使用的用例。您甚至可以在单元测试中编写该代码,然后通过测试驱动开发和重构来创建 API。
但无论如何,由于用例关注的是用户将如何使用软件,它们将帮助您关注用户直接使用软件的哪些部分。一个用例可能会使用另一个用例;但如果用户不直接使用特定用例,则无需公开公开。
请注意,这也对我开发 Web 服务有帮助。用户直接访问的用例成为通过服务公开的操作。用户不直接调用的任何用例都将保持隐藏,作为实现。
开发公共 API 很大程度上取决于程序的功能。 如果您想要公开可供其他语言访问的 API,XML Web 服务通常是实现此目的的方法。 然而,这对于纯桌面应用程序可能不实用。