【问题标题】:Using RestSharp on IOS Xamarin Monotouch在 IOS Xamarin Monotouch 上使用 RestSharp
【发布时间】:2014-03-17 15:56:48
【问题描述】:

我正在开发一个将 Yammer 与我们的移动产品(IOS - C# Xamarin Monotouch)集成的项目。底层技术是使用 Yammer Rest Calls 进行集成。为此,我们正在使用 RestSharp。

对 REST 服务的调用非常直接 创建一个 RestClient 对象 创建一个 RestSharp.RestRequest 使用其余客户端执行请求

但是我发现在 IPAD 上调用 REST 服务平均需要大约 5 -6 秒。 IPAD 使用的是开放网络。在 Windows 应用程序中使用 rest sharp 和 .Net 进行相同的调用速度很快。

有什么线索吗?任何人都在 IOS 上遇到过相同的 RestSharp 性能问题。

问候 席德

【问题讨论】:

  • 回复量大吗?与桌面相比,iOS 设备上 JSON/XML 的序列化和反序列化相当慢。
  • 响应没有那么大。我正在做一个得到。而且我相信放缓甚至没有达到反序列化的程度。我在执行请求之前和之后都有日志,费用似乎是电话。然后我使用 Newtonsoft JSON 将 JSON 响应转换为相当快的 C# 对象。
  • 您是否测试过 WebClient 执行 GET 需要多长时间?
  • 我曾尝试在一个小型示例应用程序中使用 HttpWebRequest 和 HttpWebResponse 但没有效果。它仍然是一样的。但是,如果将 NSUrlConnection.Start 与连接委托类一起使用,我可以看到巨大的差异。但是,如果我沿着这条路走下去,我怎么能尝试使这个调用同步。新来的这让我很头疼。
  • 参见下面的示例 HttpClient 实现。它在功能上与 RestSharp 相似,但不嵌入 JSON 序列化程序。尽管我建议使用异步,但您可以轻松地将其修改为同步调用。

标签: xamarin restsharp


【解决方案1】:

这是一个使用 HttpClient 的示例 Json 客户端:

https://github.com/sami1971/SimplyMobile/blob/master/Core/SimplyMobile.Web/JsonClient.cs

您需要将 HttpClient 传递给它,为此您可以使用组件商店中的 ModernHttpClient,它使用本机 HTTP 实现:http://components.xamarin.com/view/modernhttpclient

如果您想按原样使用该类,也可以插入您的 JSON 序列化,它们可以从 Plugins 文件夹中找到。对于 iOS,有通常的嫌疑人; Json.NET、ServiceStack.Text 以及您的标准 MS 运行时序列化程序。 ServiceStack 是序列化器中最快的。

编辑:由于这是赞成的,我想补充一点,现在 NuGet 上有 XLabs.Web 组件,我基于这个早期的源代码。与 XLabs.Serialization 序列化程序一起使用。

【讨论】:

    猜你喜欢
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多