2015-09-05 35 views
1

我是新開發的Web服務。我正在嘗試爲應用程序創建後端(順便說一句,它是Windows 10通用應用程序)。我想要做的事很簡單:我希望我的應用程序要求服務執行某些操作,然後服務運行一些代碼並返回一些內容。換句話說,我想從我的應用程序中調用服務中定義的方法。創建和使用Web服務以調用Visual Studio 2015和c的方法#

我已經發現了大量的指南,但它們都可追溯到2000年初,並使用現在被認爲已過時的技術。

我設法做到到目前爲止

我創建使用WCF服務模板(Visual C#中.NET框架4)的新網站(文件 - >新建 - >新網站),加一個Web服務ASMX(右擊項目 - >添加 - >添加新項目 - > Web服務(ASMX)),然後我將一些webmethods添加到與web服務關聯的.cs文件中。

[WebMethod] 
public void MyVoidFunction() { //Do something } 

然後,在我的應用程序,我添加了一個服務參考web服務(右鍵點擊引用 - >添加服務引用 - >插入本地主機地址多達.ASMX - >點擊進入 - >分配一個命名空間 - >點擊確定)。現在,我可以做我的應用程序的東西與我的web服務:

ServiceReference1.WebServiceSoapClient obj = new ServiceReference1.WebServiceSoapClient(); 
await obj.MyVoidFunctionAsync(); 

注意ServiceReference1是我分配給WebService時,我說我的應用程序參照的命名空間。

這實際上運行MyVoidFunction()。但是我不能直接調用方法obj.MyVoidFunction(),我不能調用非void函數並獲取它們的返回值。

的問題

  • 如何應該有我創建的Web服務? asmx是我需要做什麼的正確模板?如果沒有,有人可以提供一些關於如何做到這一點的文檔,因爲我發現的所有內容都指向asmx並且可以追溯到2010年以前。
  • 有什麼方法可以直接調用web服務中定義的方法,而不使用await和自動生成FunctionNameAsync()方法?
+0

任何你喜歡WCF而不是REST的理由? – Saravanan

+0

@saravanan只是我發現的所有文檔都使用asmx或wcf。我在網上找到了一些指南,說明如何做到幾乎完全是我需要做的事情,但他們是從2002年開始的,我無法在VS 2015中複製同樣的東西... – user2668222

回答

1

由於Web服務的實現非常老舊,並且沒有關於此的新聞,所以您正在發現這麼舊的文檔。 如果你正在製作Windows 10應用程序,你應該堅持使用更新的技術,它應該是一個JSON API。 嘗試查找有關如何使用WebApi創建API的文檔,Azure爲此提供了一個產品(http://azure.microsoft.com/en-us/services/api-management/)。 在您的Windows 10應用程序中,使用HttpClient與NewtonSoft.Json一起使用此API來序列化和反序列化您的對象。

+0

你知道嗎?無論如何_without_天青?目前我無法使用該服務(甚至不提供免費服務......) – user2668222

+0

我建議Azure只是爲了表明這很常見,但是當您嘗試構建自己的服務時,我認爲最好的方法是與Web API。 – Luiz

+0

您可以嘗試的另一項服務是parse.com – Luiz

相關問題