1

我需要将包含 256kb 到 18Mb 数据的对象从 android 设备发送到 WCF 服务。我刚刚发现了 protobuf.net 并同意这是要走的路。我发现显示在 android 上使用 protobuf 的大多数示例都旨在进行如下查询:

www.webservice.com/API/MaxItems=10。我需要一种将整个 BLOB 发送到我的网络服务的方法,而不仅仅是参数。谁能指出我使用 android 2.3.3 和 WCF.Net 进行编码的正确方向?

我的情况如下:

Webservice 正在为使用 .Net 和 Silverlight 的客户端以及 android 平台上的客户端提供服务。Webservice 将使用 protobuf 将来自文件系统和 SQL 的数据提供给客户端。提供的数据将包含基本类型和较小的二进制块。4-50Kb 作为 protobuf 对象。将有 17 个函数以基本类型为参数,6 个函数以 protobuf 对象为参数。其中一个函数将采用一个 protobuf 对象,该对象具有 4 byte[],总和最大为 18Mb。

服务数据的特性使 protobuf 成为完美匹配。

WebService API 的要求之一是将所有这些功能保存在一个接口中。

4

1 回答 1

1

就个人而言,我认为在这种情况下(使用 android 等)你最好的选择是使用常规的内存序列化来创建一个 BLOB,然后使用任何可用的工具(http-post、WSE、套接字等)发送它BLOB,并在另一端反序列化。让 WCF 拥有序列化/反序列化是一个巨大的痛苦,特别是如果您没有使用完整的 .NET。如果需要,这种方法还应该可以很容易地在传输类型之间完全切换,因为您并没有真正要求 WCF 做很多事情。

于 2012-04-20T11:44:28.403 回答