2011-03-27 64 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改進它。如果有任何幫助歡迎和讚賞。