我最近提议使用swashbuckle将swagger集成到我们的web-apis中,以便在内部向我们的工程师公开APIs功能。出于我们的目的,swagger在生产中没有意义,因为apis是后端的.....作为一个企业环境,API的数量是巨大的,我可以预见两个主要问题:
组装的大小约为2.6MB:假设有数百个集成了swahbuckle的apis,我们所有应用程序的大小突然增加了4.5倍。一个不合理的打击。看看swashbuckle.core,我怀疑大部分大小来自于捆绑的swagger-ui。是否有可能将swagger-ui从swashbuckle中解绑出来,转而允许通过单独的nuget包添加swagger-ui。
swashbuckle中捆绑的swagger-ui有每个api都有自己的swagger-ui实例。对swagger-ui所做的任何定制都不会对其他项目产生影响,除非你也对每个单独的api项目进行了这样的更改,从而增加了工作量并减少了可维护性的机会。我们集中托管swagger-ui,并进行定制,允许开发人员在本地(localhost)尝试他们的swagger实现,因此受swashbuckle集成swagge-ui的影响很大,如果可以选择通过单独的nuget包拉动swagger-ui,效果会好得多。
有没有什么东西可以解决上面的问题,或者我们最好的机会只是简单地分叉和前进,而不是不得不维护它?
发布于 2016-09-13 22:48:12
在nuget中,Swashbuckle是作为一个单独的程序集提供的,正如您所提到的,这个程序集非常大。
它实际上捆绑了用于从程序集中呈现Swagger-UI的所有必需的库(例如,jQuery,BackBone...)
下载Swashbuckle使您可以在不嵌入任何库的情况下构建directly from Github,并最终在Swashbuckle.Core/Bin文件夹中作为一个130kb的文件,比nuget版本小20倍。
Swashbuckle的所有功能都保持不变(这是Swagger-UI渲染的一部分,但如果不在SwaggerConfig.cs文件中使用EnableSwaggerUi,这不是问题)
在这种情况下,你只需要获得最新版本的Swashbuckle Github repo,而不需要分支它(因为它直接从它那里工作),这意味着no maintenance。
https://stackoverflow.com/questions/32751161
复制相似问题