2015-09-05 54 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

相关问题