UWP / .NET Native和iOS上的Protobuf-net

问题描述 投票:8回答:1

我有一个基于.NET Standard 1.4的Xamarin.Forms应用程序,该应用程序使用protobuf-net在数据库中存储将在稍后发送到WCF服务的对象。

在Android和UWP上“托管”一切正常但是 - 在搜索了无法再访问的存储库,文章和博客文章之后,以及在尝试使预编译工具工作之后,但是失败了 - 我有一个简单的(可能)问题:如何让protobuf-net在UWP / .NET Native和iOS / Xamarin等“受限”环境中工作?

c# ios xamarin.forms protobuf-net .net-native
1个回答
17
投票

现在我没有一个很好的解决方案。我知道有些人已经让它成功了,但我在UWP / Native / iOS方面不够专业,无法为您提供可靠的“这里是成功之路”的指示。

UWP / .NET Native和iOS共享(如您所知)一个常见问题:缺少完整的运行时发射。我明白为什么会这样。这只是:棘手。

从历史上看,protobuf-net试图通过构建工具来解决这个问题,该构建工具重复通常在运行时完成的现有IL发射 - 作为构建时工具。这是丑陋和令人讨厌的,但它的确有效。的种类。为了解决一些平台限制问题,protobuf-net使用了一些IKVM工具来帮助解决这个问题,但随着.NET框架场景不断扩展,这基本上不可行。另外:IKVM工具现已放弃,不会被维护。

与此同时,研究一些新概念的动力越来越大:

  • 用于异步IO源的完整async / await:请注意,这对IL发射非常不友好,但在C#中实现起来几乎非常容易实现
  • “管道”/“渠道”/“流2” - 无论本周被称为什么;但是:在Kestrel中使用的新的无分配IO概念(我在早期阶段帮助将这个球放了一点,所以我很熟悉需要做什么) - 请注意,这也与async / await
  • 当然:以上所有与上一代有关

现在,我非常认为最好的前进方向是通过构建时工具切换到发布C#。我一再请求MS改进基于Roslyn的自动C#发射,但到目前为止:没有快乐(令人烦恼:asp.net的东西甚至有一个完全可用的概念验证,但它被搁置)。所以我现在正在思考:我们需要假设不会发生这种情况,并且基本上是独立编写的。这不一定像听起来那么复杂(并且:各种形式的codegen对我来说非常熟悉)。这里C#emit的优势在于我不需要对抗每个框架的复杂性 - 我只需要编译它(好吧,然后运行,显然)。

那么:什么阻碍了我?理论上:没什么。我只需要编写和部署这些东西。在现实中:生活,时间等等。我每天都会对影响我的事物进行优先排序,而现实是我不是那些平台的日常用户,这意味着我感觉不到你的痛苦感觉。但是:我清楚地听到你的声音,我正在努力提高应该解决这些问题的v3工作。我真的希望有一个关于这些事情的好故事 - 我的目标是通过转向C#-emit模型(至少对于pre-gen):它对我有帮助。如果它对我有帮助,我知道它不会是我所知道的阁楼/地下室中被遗忘的玩具,但很难找到找到麻烦的动机。

© www.soinside.com 2019 - 2024. All rights reserved.