【问题标题】:Why is Grpc.Core NuGet package so big?为什么 Grpc.Core NuGet 包这么大?
【发布时间】:2020-07-22 02:11:27
【问题描述】:

最新的 Grpc.Core NuGet 包大小高达 150 MB。它似乎在其一生中稳步增长。以下是几个例子:

  • v1.17.1(2018 年 12 月)48.34 MB
  • v2.23.1(2019 年 8 月)68.11 MB
  • v2.30.0(2020 年 6 月)150.28 MB

也许这不是一成不变的,但随便举个例子,Entity Framework Core 包为 859 KB。

我很好奇这个包裹里到底有什么东西让它这么大。对于创建简单 C# 服务的人来说,是否有一些东西不是完全必要的?

【问题讨论】:

  • 它很大,因为里面有很多东西,“可能有些东西对于创建简单 C# 服务的人来说不是完全必要的” - 的当然。
  • 查看一些创建简单客户端和服务的示例,您会注意到它们针对更细粒度的包,例如 Grpc.Net.Client 等
  • 是的,在发布我的问题后,我发现我可以从 Google.Protobuf 和 Grpc.Core.Api 的组合中得到我想要的。

标签: c# nuget grpc


【解决方案1】:

包含库和构建脚本的软件包的核心功能总计不到 2 MB。包如此大的原因在于它包含 LinuxWindowsMac OSX 的运行时文件,以及 的本机库iOSAndroid。让我们看一下包内容的详细信息,但只有前两三个目录级别。

  • 构建 [8 KB]
    • MonoAndroid10
    • net45
    • Xamarin.iOS10
  • 库 [1.9 MB]
    • net45
    • netstandard1.5
    • netstandard2.0
  • 运行时 [137.5 MB]
    • Linux [113.4 MB]
    • 赢 [12.4 MB]
    • osx [11.7 MB]
  • 原生 [424.6 MB]
    • 安卓 [164.3 MB]
      • x86 [56.3 MB]
      • arm64-v8a [54.3 MB]
      • armeabi-v7a [53.7 MB]
    • ios [260.3 MB]

您可能想知道为什么移动运行时比 WindowsMacOS 的运行时大得多。事实证明,对于 Android,有用于三种不同架构的本地库,每个大约 50 MB,对于 iOS,不仅有一个 *_csharp_ext 库,还有一个完整的 @987654323 @ 仅 260 MB 的库。对于 Linux,有两个用于 x86 和 x64 的库,分别为 44.8 MB 和 68.6 MB。但是,我无法解释为什么上述库的大小比 WindowsMacOS 的对应库大得多。

该软件包可能涵盖的内容远远超出您项目中的实际需要,您可能希望使用更适合您的场景的特定语言软件包,如 Grpc repository 中所建议的那样。

【讨论】:

  • Linux 和“本机”(移动)运行时比 Windows 和 macOS 运行时大得多的原因仍然令人惊讶。
  • @KonradRudolph 我添加了一些关于这些大小差异的更多细节。
猜你喜欢
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 2017-09-17
  • 2021-11-17
  • 1970-01-01
  • 2021-08-10
相关资源
最近更新 更多