Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何开始在.NET中创建应用程序API_C#_.net_Vb.net_Api - Fatal编程技术网

C# 如何开始在.NET中创建应用程序API

C# 如何开始在.NET中创建应用程序API,c#,.net,vb.net,api,C#,.net,Vb.net,Api,在我工作的公司,我们有一个在.NET中开发的桌面应用程序,我们喜欢为其他软件开发人员打开一些部分 我把它看作是其他软件可以访问的某种公共方法。在这方面是否有任何标准方法、最佳实践或其他经验 我想你可以用Win32调用、C/C++编程等来实现这一点,但我主要是一名.NET开发人员,有多年的编程经验,主要是用VB.NET编程,也有一些C#。我希望找到一种在.NET中实现这一点的方法。但它应该可以被其他语言开发的软件访问 致意/ Magnus开发公共API在很大程度上取决于程序的功能。如果您想公开一个

在我工作的公司,我们有一个在.NET中开发的桌面应用程序,我们喜欢为其他软件开发人员打开一些部分

我把它看作是其他软件可以访问的某种公共方法。在这方面是否有任何标准方法、最佳实践或其他经验

我想你可以用Win32调用、C/C++编程等来实现这一点,但我主要是一名.NET开发人员,有多年的编程经验,主要是用VB.NET编程,也有一些C#。我希望找到一种在.NET中实现这一点的方法。但它应该可以被其他语言开发的软件访问

致意/
Magnus开发公共API在很大程度上取决于程序的功能。如果您想公开一个其他语言可以访问的API,XML web服务通常是实现这一点的方法。但是,对于仅限于桌面的应用程序来说,这可能并不实用。

有两种方法可以实现这一点。第一个涉及使用插件/模块模式。为此

第二种方法是通过有良好文档记录的程序集公开API逻辑

您选择的方式实际上归结为您希望如何实现它。例如,Adobe Photoshop在很大程度上使用了插件模式。MS Office使用这两个插件,并为使用应用程序提供对象接口

更新: 只需将对象范围设置为Public,即可将.Net程序集中的对象公开给外部应用程序使用。这包括windows窗体、业务对象、枚举等

从外部开发人员的角度考虑一下。为了成功扩展/控制您的产品,他们需要哪些信息?不管是什么,把它放在帮助文件中

另外,利用.Net的自动文档功能。这包括添加xml文档,IDE已经知道如何通过intellisense读取和显示。例如:

/// <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 ...
}
//
///获取指定客户的所有活动文档。
/// 
///客户的Id。
///此客户的文档列表。
公共静态列表GetDocuments(int customerId)
{
//…做点什么。。。
}
“通过公共API公开应用程序”不是详细的需求定义。在设计任何东西之前,先了解详细的需求

对于API,我建议您从需求开始,然后继续使用用例。由于这是一个API,您实际上应该使用建议的API编写一些代码,以了解编写它的感觉。您编写的代码应该涵盖您开始使用的用例。您甚至可以在单元测试中编写代码,然后通过测试驱动的开发和重构来创建API

但是无论如何,由于用例关注用户将如何使用软件,它们将帮助您关注用户直接使用软件的哪些部分。一个用例可以使用另一个用例;但是如果用户不直接使用特定的用例,那么这个用例就不需要公开


请注意,这也帮助我开发了web服务。用户直接访问的用例成为通过服务公开的操作。用户不直接调用的任何用例都将作为实现保持隐藏。

创建一个API类,公开您希望人们能够访问的函数,并为COM互操作项目->属性->构建->为COM互操作注册它。

嗯,我真的不确定如何阅读这个答案,感觉是OOT吗?我的问题不是关于要在web上访问的web服务或公共API。它是关于一个本地桌面应用程序的,合作伙伴公司喜欢在这里访问我们软件中的一些功能。不管怎样,谢谢。同样的原则也适用。重要的是,您需要公开应用程序的某些部分,因为某些用例在没有这些用例的情况下是无法完成的。通过关注用例,您只会暴露出必要的内容。有趣的是,我们将对此进行研究。感谢您提供有关该模式的提示。关于“文档化良好的程序集”,我希望能从中找到更多信息,也许是一些参考代码。查看Ghost doc以获得制作XML文档的良好VS插件,并查看sandcastle以构建文档的HTML版本,这样使用api的人就不必费力地从源代码获取文档。