как генерировать веб-сервис из wsdl

Вы можете использовать ChainMap , чтобы сначала сгладить свой список словарей, а затем применить модуль Counter , чтобы получить частоту имен для каждого месяца. Затем вы можете извлечь названия месяцев и соответствующие частоты и построить их с помощью гистограммы. Ниже приведен пример ответа с использованием предоставленных вами данных. Если вы хотите отсортировать названия месяцев по оси X, вы можете использовать ответ, предоставленный здесь .

from collections import Counter, ChainMap
import matplotlib.pyplot as plt

figure = plt.figure(figsize=(8, 6))

dictionary = [{"bob": "January"},{"Peter":"February"},{"Mary":"March"}, {"John":"March"}, 
                  {"Sully": "March"}, {"Kai":"April"} ,{"Jerry": "February"}, {"Polly":"may"}, 
                  {"Nina": "June"}, {"Mic": "July"}, {"Paul": "August"}, {"Ferry": "January"}]

dict_flat = ChainMap(*dictionary)

frequency = Counter(dict_flat.values()).most_common()
x, y = zip(*frequency)

plt.bar(x, y, width=0.5)
plt.show()

enter image description here

43
задан Neeraj Kumar 17 October 2017 в 10:10
поделиться

5 ответов

Неродной 1

open -> Visual Studio 2017 Developer Command Prompt

неродной 2

WSDL.exe  /OUT:myFile.cs WSDLURL  /Language:CS /serverInterface
  • /serverInterface (это для создания интерфейса из wsdl файла)
  • WSDL.exe (это использование для создания Classe из wsdl это идет с .NET
  • /: (имя выходного файла)

неродной 2

создают новый "Проект веб-сервиса"

неродной 3

, добавляют-> веб-сервис

неродной 4

копия весь код от [1 121] myFile.cs (сгенерированный выше) кроме [1 122] "классы использования" , например:

 /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")]
    [System.Web.Services.WebServiceBindingAttribute(Name="calculoterServiceSoap",Namespace="http://tempuri.org/")]

public interface ICalculoterServiceSoap {

    /// <remarks/>
    [System.Web.Services.WebMethodAttribute()]
    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/addition", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
    string addition(int firtNo, int secNo);
}

неродной 4

прошлое это в Ваш webService.asmx.cs пространство имен ) создает выше в неродной 2

неродной 5

, наследовали интерфейсный класс с Вашим классом веб-сервиса, например:

public class WebService2 : ICalculoterServiceSoap
0
ответ дан 26 November 2019 в 22:53
поделиться

К сожалению, волшебного решения для того, что вы ищете, не существует. Вот что вы можете сделать:

  • создать класс интерфейса с помощью этой команды в окне командной строки Visual Studio:

    wsdl.exe yourFile.wsdl / l: CS / serverInterface
    Используйте VB или CS для вашего языка выбор. Будет создан новый файл .cs или .vb .

  • Создайте новый проект веб-службы .NET. Импортируйте существующий файл в свой проект - файл, который был создан на шаге выше.

  • В вашем файле .asmx.cs в Code-View измените свой класс как таковой:

 public class MyWebService : System.Web.Services.WebService, IMyWsdlInterface
 {    
     [WebMethod]
     public string GetSomeString()
     {
         //you'll have to write your own business logic 
         return "Hello SOAP World";
     }
 }
71
ответ дан 26 November 2019 в 22:53
поделиться

Вы не можете гарантировать, что автоматически сгенерированный WSDL будет соответствовать WSDL, из которого вы создаете интерфейс службы.

В вашем сценарии вам следует разместить файл WSDL где-нибудь на своем веб-сайте, и пусть потребители используют этот URL. Вы должны отключить протокол Documentation в файле web.config, чтобы "? Wsdl" не возвращал WSDL. См. <протоколы> Элемент .

Также обратите внимание на первый абзац этой статьи:

Этот раздел относится к устаревшей технологии. Веб-службы XML и клиенты веб-служб XML теперь должны быть созданы с использованием Windows Communication Foundation (WCF) .

3
ответ дан 26 November 2019 в 22:53
поделиться

Я тоже столкнулся с этой проблемой в некотором коде, Насколько я понимаю свойства командной строки wsdl.exe, это именно то, что вам нужно.

- ADVANCED -

/ server

Server switch has been deprecated. Please use /serverInterface instead.
Generate an abstract class for an xml web service implementation using
ASP.NET based on the contracts. The default is to generate client proxy
classes.

С другой стороны: зачем вам создавать устаревшие технологические решения? Почему бы не создать эту веб-службу как службу WCF. Это текущий и более современный, гораздо более гибкий способ сделать это!

Marc


ОБНОВЛЕНИЕ:

Когда я использую wsdl / server в файле WSDL, я создаю этот файл:

[WebService(Namespace="http://.......")]
public abstract partial class OneCrmServiceType : System.Web.Services.WebService 
{
    /// <remarks/>
    [WebMethod]
    public abstract void OrderCreated(......);
}

По сути, это практически тот же код, который создается, когда вы добавляете файл ASMX в свое решение (в коде за файлом - yourservice.asmx.cs). Я не думаю, что вы можете приблизиться к созданию файла ASMX из файла WSDL.

Вы всегда можете добавить «yourservice.asmx» вручную - он действительно не содержит большого количества:

<%@ WebService Language="C#" CodeBehind="YourService.asmx.cs" 
      Class="YourServiceNamespace.YourServiceClass" %>
4
ответ дан 26 November 2019 в 22:53
поделиться

Вы можете сгенерировать классы прокси WS с помощью инструмента WSCF (Web Services Contract First) от thinktecture. com. По сути, ВЫ МОЖЕТЕ создавать веб-сервисы из wsdl. Создание asmx, может быть, и нет, но это легкое дело, не так ли? Этот инструмент прекрасно интегрируется в VS2005-8 (новая версия для 2010 / WCF называется WSCF-blue). Я использовал его много и всегда находил, что он действительно хорош.

1
ответ дан 26 November 2019 в 22:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: