2011-03-27 59 views
2

我没有发现任何关于单点触控的wcf支持。我需要使用用户身份验证为iPhone创建Web服务。我想使用wshttpbinding。单点触控WCF(wshttpbinding)

单点触控支持wcf wshttpbinding吗?如果没有,我怎么能与认证,服务器端的寡妇(C#),客户端在iPhone上创建Web服务(MonoTouch的)

非常感谢

+0

如果Web服务是基于服务器的,为什么您需要客户端上的相同? – 2011-03-27 13:32:45

回答

5

单声道目前不支持WSHttpBinding,这是一个正在进行的工作,并且支持非常多斑点。

您可以通过HTTPS(来自.NET 1.0和.NET 2.0的Web服务堆栈)使用纯SOAP。

但是由于您刚刚开始使用REST服务,因此您最好使用带有JSon或XML返回值的REST服务。许多人现在使用Json作为这种连接的通用语言,因为它具有额外的优势,您可以使用相同的桥梁来创建基于HTML的应用程序,因为Json输出可以直接输入到浏览器的JavaScript中。

对于服务器,您可以使用类似ServiceStack:

http://www.servicestack.net

对于客户端,您可以使用解析其System.Json是一个非常低的水平和准系统堆栈手动JSON,或者你可以使用像Newtonsoft的Json解析器那样的东西,它带有一个完整的反序列化器和对象映射器。

0

我建议用ASP MVC创建Web服务,并给作为你可以用monotouch解析的XML文件。 你可以攻击你的web服务创建从零开始使用ASP获取流XML

4

在Monotouch的最新版本中,它确实有效。如果您有Visual Studio,则需要使用Silverlight 4.0 SDK生成WCF类,该SDK将位于Windows PC上。

下面是我用它来生成我的时间表类(在CMD壳运行在Windows中):

slsvcutil.exe http://localhost/QQQQQ/Timesheet.svc?wsdl /namespace:"*,General" /d:z:\desktop /noConfig /ser:DataContractSerializer 

那么这个拷贝到你的MonoTouch项目,并调用它像这样:

BasicHttpBinding binding = new BasicHttpBinding (settings.WCFBasicHttpSecurityMode()); 
var svc = new TimesheetServiceClient (binding, new EndpointAddress (settings.AddressServiceUrl())); 

注所有的服务调用都只是异步。你需要订阅他们的事件回调像这样:

svc.GetTimesheetsCompleted += GetTimeSheetsComplete; 
+0

我有问题,您如何设置凭据,同时在HTTPS上使用某种身份验证运行服务。而当我尝试你的解决方案时,我会在应用程序启动时收到“模块中的类无法加载”。 – Scarlaxx 2011-07-08 12:50:50

+0

当我尝试该方法时,我得到“Content Type text/xml; charset = utf-8不被服务支持”:-) – clement 2013-04-08 13:11:25

1

我想实现WCF到MonoDroid,也。我认为它和MonoTouch没有太大的区别。经过研究,我没有发现除了BasicHttpBinding之外的其他WCF绑定模式的supoort。

老实说,我并不擅长WCF,所以我只是随机尝试。我可以从字符串和字节[]等服务器获取消息,但是当我想要上传大量数据时,例如。图像或音频,包含大字节[]的上传消息必须限制在8192字节以内。这会导致我的上传失败。

现在我必须想办法从手机上解决大文件上传。

这真的是一个很大的遗憾和问题,而不是让所有的行为完全在WCF编码中实现。

Hope Mono改进它。如果有任何帮助欢迎和赞赏。