我需要在C#中收听来自Web服务的请求,然后在C#中回复它们。那是什么方法?
答案 0 :(得分:4)
我假设您已经拥有了您希望使用的Web服务。有关Web上消费Web服务的几个例子(例如:Consuming web services from a WinForms app)。
首先,您需要在C#项目中添加 Web引用。在VS2005中,您可以通过右键单击项目并选择“添加Web引用”,然后提供Web服务的URL来执行此操作。在VS2008或更高版本中,described here会有一些额外的点击次数。
完成此操作后,VS将为您生成所有必需的代理类,并提供同步和异步调用的方法,您可以使用这些方法,就像对象在本地实例化一样。 / p>
例如,如果您的Web服务只有一个方法(DoSomething
),并且位于www.example.com/MyService.asmx
(也称为“MyService”),则Visual Studio将创建一个名为“MyService”的类看起来像这样:
namespace MyNamespace // <-- this is the name you choose when you
{ // added the web reference
public class MyService : SoapHttpClientProtocol
{
// synchronous execution
public void DoSomething()
{
}
// async execution
public void DoSomethingAsync()
{
}
// callback event for async execution
public event DoSomethingCompletedEventHandler DoSomethingCompleted;
}
}
要检查生成的命名空间的内容,请在解决方案资源管理器中双击您的Web引用(它应位于名为“Web引用”的文件夹中)。这将打开对象浏览器。
使用您的类的最简单方法是创建一个实例,并调用方法:
// create a new instance of the service
MyService service = new MyService();
// invoke the method
service.DoSomething(); // <-- this will block the thread until completed
要使用异步版本,您可以附加事件处理程序:
// create a new instance of the service
MyService service = new MyService();
// attach the event handler
service.DoSomethingCompleted += MyEventHandler;
// invoke the method asynchronously
service.DoSomethingAsync(); // <-- this will be invoked on a background thread
答案 1 :(得分:1)
我建议看This开始。
答案 2 :(得分:1)
如果你的问题是:Web服务必须用C#编写,答案是“不”。您可以使用多种语言编写Web服务,包括Java,VB.NET甚至COBOL.NET。
如果您的问题是:Web服务必须使用与使用它们的程序相同的语言编写,只要您的Web服务与Visual Studio项目不在同一个Visual Studio项目中,答案就是“否”。客户端(一个或多个)。
答案 3 :(得分:1)
从解决方案资源管理器中选择“添加服务引用”(右键单击您的项目),然后将要使用的WebService的URL添加到Adresss栏并说“Go”。
应该从Visual Studio自动创建客户端。