Веб-сервис SOAP и C#

#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. Спасибо! я добавил это, но моя последняя проблема заключается в том, как вызывать функции в службе?