我正在.Net / Mono中创建一个在线服务,该服务的前端将位于各种移动平台上,后端可能基于Windows Azure。为了与服务器进行通信,我最喜欢WCF,它似乎更好地使用双工通道(流量似乎很关键)。但是当我尝试编译Android应用程序(WCF客户端是一个可移植的libray)时,我遇到了一个错误:
Error 10 Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'System.ServiceModel.Duplex, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'System.ServiceModel.Duplex.dll'
at Xamarin.Android.Tuner.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(List`1 assemblies, AssemblyDefinition assembly, Boolean topLevel)
at Xamarin.Android.Tasks.ResolveAssemblies.Execute() TaxiOnline.Android
它只能由以下行引起:
private readonly InstanceContext _callbackInstance;
请告诉我如何配置Android应用程序以消除此错误。双工通道会更好,但不是特定于平台的。我需要一个可移植的服务器通信代码。目前的目标API为14(适用于Android 4.0 +)。
答案 0 :(得分:0)
在Mono project中,显示的源代码支持双工通道 Xamarin.IOS和Xamarin.Android都基于Mono,但不确定 Xamarin团队在基于Mono创建这两个项目时切断双工通道功能是什么原因。
甚至.Net核心在Xamarin之后很晚才创建,但现在.Net核心已经支持Microsoft.NETCore.UniversalWindowsPlatform v5.2.0中的双工通道。这意味着,你仍然可以使用UWP或UWP与Xamarin.Forms创建一个双工通道项目。但是Xamarin.IOS和Xamarin.Android仍然没有。实际上已经有人在Xamarin forums中询问了双工频道功能几年了。但是Xamarin团队仍然无视它。可能太忙了,或者可能是微软的风格:一切都太晚了或者来得太晚了迟到了。
但是,仍然有一些人在Xamarin的Bugzilla上询问此功能,如果您仍有希望,可以投票或讨论:Request add WCF Duplex Channel support for Mono(for Xamarin.Android and Xamarin.IOS)
此外还有一个关于它的讨论(与WCF和Xamarin团队):Could you guys let some of the team members go to update WCF of Xamarin.Android and Xamarin.iOS?