При работе с большим wsdl мы можем обрезать его?

Далее, в ответе Расима Авчи, приведенный ниже код иллюстрирует сгенерированный код из UIMap. Тестируемая программа представляла собой проект Windows Forms, содержащий форму с ComboBox.

[GeneratedCode("Coded UITest Builder", "15.0.26208.0")]
public class UIForm1Window : WinWindow
{

    public UIForm1Window()
    {
        #region Search Criteria
        this.SearchProperties[WinWindow.PropertyNames.Name] = "Form1";
        this.SearchProperties.Add(new PropertyExpression(WinWindow.PropertyNames.ClassName, "WindowsForms10.Window", PropertyExpressionOperator.Contains));
        this.WindowTitles.Add("Form1");
        #endregion
    }

    #region Properties
    public UICbStartDateWindow UICbStartDateWindow
    {
        get
        {
            if ((this.mUICbStartDateWindow == null))
            {
                this.mUICbStartDateWindow = new UICbStartDateWindow(this);
            }
            return this.mUICbStartDateWindow;
        }
    }

    public UICbEndDateWindow UICbEndDateWindow
    {
        get
        {
            if ((this.mUICbEndDateWindow == null))
            {
                this.mUICbEndDateWindow = new UICbEndDateWindow(this);
            }
            return this.mUICbEndDateWindow;
        }
    }
    #endregion

    #region Fields
    private UICbStartDateWindow mUICbStartDateWindow;

    private UICbEndDateWindow mUICbEndDateWindow;
    #endregion
}

[GeneratedCode("Coded UITest Builder", "15.0.26208.0")]
public class UICbStartDateWindow : WinWindow
{

    public UICbStartDateWindow(UITestControl searchLimitContainer) : 
            base(searchLimitContainer)
    {
        #region Search Criteria
        this.SearchProperties[WinWindow.PropertyNames.ControlName] = "cbStartDate";
        this.WindowTitles.Add("Form1");
        #endregion
    }

    #region Properties
    public WinComboBox UICbStartDateComboBox
    {
        get
        {
            if ((this.mUICbStartDateComboBox == null))
            {
                this.mUICbStartDateComboBox = new WinComboBox(this);
                #region Search Criteria
                this.mUICbStartDateComboBox.SearchProperties[WinComboBox.PropertyNames.Name] = "cbStartDate";
                this.mUICbStartDateComboBox.WindowTitles.Add("Form1");
                #endregion
            }
            return this.mUICbStartDateComboBox;
        }
    }
    #endregion

    #region Fields
    private WinComboBox mUICbStartDateComboBox;
    #endregion
}

На рисунке ниже показана иерархия управления. Это ясно показывает UICbStartDateWindow как родительский для ComboBox.

enter image description here

Как видите, сгенерированный код должен следовать тому, что описано в ссылке из ответа Расима Авчи. [118 ]

6
задан Dennis C 1 January 2009 в 08:24
поделиться

6 ответов

Короче говоря, Ваши ответы не являются "Никаким инструментом, но Вы можете DIY".

Я желаю, чтобы был простой инструмент, может сделать это, потому что мой WSDL содержит слишком многих неиспользованная функция и схема структуры данных.

Если я могу автоматизировать его, WSDL-> обрезал WSDL->, генерируют клиентские классы тупиков. Ничто неиспользованное не будет сгенерировано, никакое неправильное употребление, никакие требуемые обслуживания, мы не затронем сгенерированный код, и я могу действительно сфокусироваться на коде который используемый. Меньший JAR, короче XML анализируют время. Если WSDL будет обновлен, то я буду, должен был только восстановить клиентские классы тупиков и выполнить модульный тест.

Я пытался держаться вдали от вызванного человека. Это занимает время, легко чтобы получить ошибку и иметь для восстановления каждый раз каждого небольшого изменения на исходном WSDL.

Я не являюсь сведущим на схеме WSDL. Я думаю, что это может быть сделано XSLT?

4
ответ дан 9 December 2019 в 20:50
поделиться

Размер WSDL окажет нулевое влияние на производительность..., если Вы не загрузите его и/или анализируете его для каждого запроса. И если Вы делаете последнего, не делать. Это должно только быть обработанным, когда сервис изменяется, и сервис должен всегда изменяться совместимо с продолжающейся поддержкой старых сообщений (по крайней мере, в течение некоторого перекрывающегося периода времени).

Необходимо полагать, что обработка WSDL изменение программы и делает это, поскольку Вы были бы любой выпуск, с управлением версиями и тестированием, и т.д.

2
ответ дан 9 December 2019 в 20:50
поделиться

Вы могли просто вручную удалить <wsdl:operation> элементы, соответствующие методам, в которых Вы не нуждаетесь и видите, достаточно ли это. Необходимо смочь удалить те элементы без касающейся остальной части файла.

1
ответ дан 9 December 2019 в 20:50
поделиться

Нет никакой потребности обрезать WSDL. Если Вы установлены при потере работоспособности по этому пути, просто удаляете что-нибудь в тупиковых классах, в которых Вы не нуждаетесь. Просто удостоверьтесь, что протестировали его, поскольку Вы идете, чтобы удостовериться, что все все еще работает.

1
ответ дан 9 December 2019 в 20:50
поделиться

Я не использовал инструменты, о которых Вы говорите, но можно успешно выполнить методы веб-сервиса без кода, когда-либо касающегося файла WSDL.

Это походит на хорошее время для запущения быстрого теста. Сократите все из файла WSDL кроме того, что необходимо выполнить один из более простых методов, которые Вы планируете использовать. Ссылка, что копия WSDL вместо этого. Если это работает, Вы знаете, что сделать затем!

1
ответ дан 9 December 2019 в 20:50
поделиться

Физический размер WSDL не должен иметь значения, генерируете ли Вы клиентские классы тупиков во время компиляции (например, через ОСЬ wsdl2java.), Если Вы загружаете WSDL и анализируете его для каждого запроса затем, время загрузки, вероятно, затмит время синтаксического анализа. Рассмотрите кэширование файла локально, если время загрузки становится проблемой. Если время синтаксического анализа становится проблемой, можно хотеть рассмотреть обрезку файла или кэширование проанализированных объектов. Используйте уход при кэшировании или обрезке файла, поскольку необходимо будет интегрировать любые изменения, когда поставщик выпустит новый WSDL. Полагайте, что обновление Вашего кэшировало/обрезало WSDL каждый раз, когда сервис перезапущен или в некотором интервале.

1
ответ дан 9 December 2019 в 20:50
поделиться
Другие вопросы по тегам:

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