2009-02-24 2 views
0

Немного долго, но, короче, чем первый вариант :)Потребляя Web Services - переход от ручного метода автоматической одной с помощью третьей стороны при условии WSDL

У нас есть небольшое приложение VB.net, что в основном вытягивает информацию от нашей dBase, а затем экспортировать эту информацию в файл .xls. Из этого .xls-файла в домашних агентах вручную обновите службу первичной публикации (которая поддерживает наш текущий инвентарь) с информацией, содержащейся внутри. Информация очень простая, состоящая, для удобства обсуждения, «Номер детали», «Описание» и «Количество на руке».

Обычно мы обновляем эту информацию один раз в неделю, но новый пересмотренный контракт с этой услугой листинга теперь требует ежедневного обновления, чтобы поддерживать статус «платинового» поставщика.

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

Служба листинга предоставила нам следующие WSDL: один для увеличения нашей инвентаризации, один для уменьшения нашего инвентаря, один для добавления инвентаря и один для удаления инвентаря.

До этого момента я запрограммировал сохраненную процедуру, которая генерировала экспортированную информацию. этот SP теперь делает некоторую внутреннюю математику, чтобы выяснить, был ли результат транзакции на «вчерашнем» «Увеличение», «Уменьшение», «Добавить» или «Удалить». Эти результаты затем добавляются в таблицу результатов в новом столбце с именем «СЕРВИС». Затем эту новую информацию извлекают из dBase с помощью vb.net и импортируют в таблицу данных для анализа.

С этой таблицей данных я могу теперь прокручивать каждую строку, глядя в колонку «СЕРВИС» и в зависимости от информации, содержащейся в этой ячейке, вызывает соответствующую веб-службу.

Я добавил все веб-ссылки на мой проект и создал классы прокси для каждого веб-сервиса.

Вторая проблема заключается в том, что я не знаю, как на самом деле назвать фактический веб-сервис. Ниже небольшой фрагмент кода

' loads data into the 'AviationDataBaseResult.ILS_ARRAY_2' table. 
Me.ILS_ARRAY_2TableAdapter.Fill(Me.AviationDataBaseResult.ILS_ARRAY_2) 

' Start the looping process 
For Looper = 0 To RowCount - 1 
    If Me.AviationDataBaseResult.ILS_ARRAY_2.Rows(Looper).Item("Service") = _ 
     "Increase" Then 
     ' Call Appropriate Web service 
    End If 
' More If..Then's ensue, one for each service 
Next 

' More code ensues 

Я понимаю, что это стало довольно долго наматывается, в основном потому, что в любой день у меня есть 25 FF открытых вкладок, и никто из них не соглашаясь друг с другом. Добавить еще одну морщину; рассматриваемые WSDL используют много сложных типов в сложных типах, как вы предполагали, других сложных типов. Я просмотрел множество примеров и еще не нашел тот, который занимается сложными типами и как их обрабатывать. Любая помощь, направленная на то, чтобы указывать мне в правильном направлении, «куда идти, чтобы найти то, что мне нужно знать», очень ценится.

Если какая-либо другая информация требуется, я был бы более чем счастлив предоставить вам столько, сколько смогу. Если мои мыслительные процессы и логика плохо подходят для того, чтобы делать то, что мне нужно делать, я более чем счастлив услышать это. Будучи относительно новым для vb.net, я стал довольно искусным в том, чтобы потреблять скромный пирог.

Спасибо за ваше время.

ответ

0

я должен был бы увидеть фактические WSDL, чтобы знать, как конкретно назвать эти услуги. Однако в целом, если вы назвали веб-ссылку «WebRef», а если услуга называется «Сервис», а если операция «Операция», то вы должны сделать следующее:

Using svc As New WebRef.Service 
    Dim parameter As New ComplexType 
    parameter.Property1 = value1 
    parameter.Property2 = New Property2Type 
    parameter.Property2.SubProperty1 = value12 
    ' ... 
    svc.Operation(parameter) 
End Using 
0

Если вы импортировали WSDL и сгенерировали прокси-серверы, это просто становится вопросом создания прокси-сервера (вы должны увидеть новое пространство имен, которое вам было предложено при создании прокси-сервера), а затем вызвать методы.

Вы собираетесь должны выполнить отображение между вашими данными и типами, что веб-сервис ожидает, и в то время как утомительно, не должно быть трудно.