#c# #web-services #soap
#c# #веб-сервисы #soap
Вопрос:
От меня требуется прослушивать запросы от веб-сервиса на C # и отвечать на них на C # .. каков подход к этому?
Комментарии:
1. Веб-службы обычно не выполняют вызовы, они принимают вызовы. Вы хотите создать веб-сервис? Не хотите пояснить?
2. я уже создал веб-сервис …. мне нужен клиент в C#.net
Ответ №1:
Я предполагаю, что у вас уже есть веб-сервис, который вы хотите использовать. Существует несколько примеров использования веб-сервисов в Интернете (например: использование веб-сервисов из приложения WinForms).
Добавление веб-ссылки
Во-первых, вам нужно добавить веб-ссылку на ваш проект C #. В VS2005 это можно сделать, щелкнув проект правой кнопкой мыши и выбрав «Добавить веб-ссылку», а также указав URL веб-службы. В VS2008 или новее есть пара дополнительных нажатий, как описано здесь.
После того, как вы это сделаете, VS сгенерирует для вас все необходимые прокси-классы с методами как для синхронного, так и для асинхронного вызова, которые вы можете использовать, как если бы экземпляр объекта был создан локально.
Просмотр сгенерированных классов
Например, если ваш веб-сервис имеет единственный метод ( 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;
}
}
Чтобы просмотреть содержимое созданного пространства имен, дважды щелкните веб-ссылку в обозревателе решений (она должна находиться внутри папки с именем «Веб-ссылки»). Это откроет обозреватель объектов.
Синхронное использование сгенерированных классов
Самый простой способ использовать ваш класс — создать экземпляр и вызвать метод:
// 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
Ответ №2:
Я бы посоветовал взглянуть на это, чтобы начать.
Ответ №3:
Если ваш вопрос таков: обязательно ли писать веб-сервисы на C #, ответ «нет». Вы можете писать веб-сервисы на многих языках, включая Java, VB.NET и даже COBOL.NET .
Если ваш вопрос таков: должны ли веб-службы быть написаны на том же языке, что и программы, которые их используют, ответ снова будет «нет», при условии, что ваши веб-службы не находятся в том же проекте Visual Studio, что и клиент (ы).
Комментарии:
1. Даже если веб-сервис написан на C #, нет необходимости писать клиент также на C #. Это может быть все, что может взаимодействовать с веб-службами. В Visual Studio вы можете ссылаться на веб-службу, просто щелкнув правой кнопкой мыши свой проект — на любом языке — и выбрав «Добавить ссылку на службу». Это сгенерирует прокси для веб-службы для вас, и ваш клиентский код просто вызовет этот прокси.
Ответ №4:
Выберите «Добавить ссылку на сервис» в обозревателе решений (щелкните правой кнопкой мыши на вашем проекте), а затем добавьте URL вашего веб-сервиса, который вы хотите использовать, в адресную строку и скажите «Перейти».
Клиент должен быть создан автоматически из Visual Studio.
Комментарии:
1. Спасибо! я добавил это, но моя последняя проблема заключается в том, как вызывать функции в службе?