XML Web сервисы представляют собой фундаментальные строительные блоки для распреленных вычислений в Internet. XML Web сервис представляет собой объект или класс, который развернут в Internet, доступ к которому вы можете получить программным путем через типичные вызовы методов. XML Web сервисы предоставляют функциональность и доступ к данным между платформами и сквозь разнотипные соединения. Наиболее важный аспект XML Web сервисов заключается в том, как они используют HTTP и SOAP, функциональность, доступную через бранмауэры (firewalls). Вы можете вызвать XML Web сервис вне зависимости от платформы, на которой они запущены, вследствие того, что HTTP и SOAP работают независимо от вашей компьютерной платформы. В некоторых случаях, это может предоставить функциональность, которая недоступна под распределенным COM.

Вы можете создать XML Web сервисы и обратиться к ним через Web. ВЫ можете использовать Visual FoxPro для создания XML Web сервиса, или можете использовать Visual FoxPro для получения доступа к XML Web сервисам, созданных в других программных языках.

Эта репетиция объясняет, как создать COM сервер и опубликовать его в качестве XML Web сервиса. В дополнение к этому, она будет вести вас через использование вашего вновь созданного XML Web сервиса. XML Web сервис предоставит список потребителей из таблицы, где потребители отвечают определенным требованиям. Список посылается, как XML строка, которая затем помещается в курсор с помощью класса XMLAdapter.

Эта репетиция содержит следующие разделы:

Expand image Необходимые условия

Для этой репетиции требуется приведенное ниже:

  • Microsoft Internet Information Services (IIS)

  • SOAP

  • Visual FoxPro COM Servers

SOAP автоматически инсталлируется при инсталляции Visual FoxPro. IIS представляет собой необязательный компонент для Windows 2000 и автоматически инсталлируется на платформе Windows 2000 Server. IIS обслуживает ваши XML Web сервисы из вашего виртуального каталога пользователям в Internet. Его виртуальный каталог ссылается на место на вашем жестком диске, в котором вы поместите ваши XML Web сервисы. Вы используйте Visual FoxPro для создания COM объектов. После того, как ваши COM объекты будут созданы, вы сможете использовать построитель "Visual FoxPro XML Web Service builder" для публикации их в ваш виртуальный каталог.

Expand imageInternet Information Services

IIS предоставляет ссылку на местонахождение вашего XML Web сервиса пользователям, получающим доступ к ним через Internet. Для публикации XML Web сервиса, вы должны создать виртуальный каталог в IIS, который содержит необходимые файлы Web Services Description Language (.wsdl). Эти файлы создаются мастером "Web Service Wizard" из вашего COM компонента.

Для создания виртуального каталога

  1. В гланом каталоге Visual FoxPro ..\Program Files\Microsoft Visual FoxPro VersionNumber, создайте папку с именем Web Services.

  2. В панели управления Windows Control Panel, выполните двойной щелчок на иконке Administrative Tools, и затем выполните двойной щелчок на иконке Internet Information Services.

    Откроется окно Internet Information Services, отображая управляющий элемент "tree" с левой стороны, в котором размещается список Internet information services вашего компьютера.

  3. Выполните правый щелчок на узле Default Web Site.

  4. Щелкните на пункте New, и затем на Virtual Directory для того, чтобы открыть мастер "Virtual Directory Creation Wizard".

  5. Следуйте инструкциями мастера и укажите в первом шаге созданную вами папку Web Services как ваш виртульаный каталог.

    Этот виртуальный каталог ссылается на папку Web Services, в которой вы будете хранить все созданные вами файлы XML Web сервиса.

Expand image Создание COM сервера

Так как XML Web сервис представляет собой файл библиотеки DLL или исполняемый файл (.exe), вы должны использовать COM сервер, как основу вашего XML Web сервиса. COM сервер в Visual FoxPro представляет собой файл с расширением .dll или .exe, содержащий пользовательский класс, основанный на объекте Session. Пользовательский класс указан при его определении, как OLEPUBLIC. Это выказывает функциональность, которая может быть использования и многократно другими приложениями через автоматизацию.

Для этого примера COM сервера, вы создаете пользовательский класс, который сообщает некую общую информацию. Вы пишите программу, которая создает класс с одним методом, компилируете проект, содержащий этот класс в COM сервер и, затем, публикуете его в качестве XML Web сервиса.

Для создания COM сервера

  1. В меню File Visual FoxPro щелкните на New.

  2. В диалоговом блоке New щелкните на Project и, затем, на New file. Сохраните проект с именем myWServ1.

  3. На закладке All Project Manager, разверните узел Code, щелкните на Programs и, затем, щелкните на New.

  4. Скопируйте приведенный ниже код в окно редактирования программ.

      CopyCode imageСкопировать код
    DEFINE CLASS ShowCustomers AS Session OLEPUBLIC
       PROCEDURE CustomersInGermany AS String
          LOCAL loXMLAdapter AS XMLAdapter
          LOCAL lcXMLCustomers AS String
    
          loXMLAdapter = CREATEOBJECT("XMLAdapter")
          
          OPEN DATABASE "C:\Program Files\Microsoft Visual FoxPro 9\" ;
             + "Samples\Northwind\northwind.dbc"
    
          USE customers
          SELECT * ;
             FROM customers ;
             WHERE country LIKE "Germany%" ;
             INTO CURSOR curCustomers
    
          loXMLAdapter.AddTableSchema("curCustomers")
          loXMLAdapter.UTF8Encoded = .T.
          loXMLAdapter.ToXML("lcXMLCustomers")
    
          CLOSE DATABASES ALL
    
          RETURN lcXMLCustomers
       ENDPROC
    ENDDEFINE

    Эта программа определяет один класс, ShowCustomers, который имеет один метод - CustomersInGermany.

  5. В меню File щелкните на Save.

  6. В диалоговом окне Save As дайте программе имя myWServ1 щелкните на Save.

  7. Закройте окно редактирования.

  8. В Project Manager щелкние на Build.

  9. Выберите Multi-threaded COM server (dll) и щелкните на OK. В диалоговом окне Save As найдите каталог Web Services, который вы создали под главным каталогом Visual FoxPro. Сохраните DLL под именем myWServ1.dll в этом каталоге.

ЗамечаниеЗамечание

Если DLL сохранена в каталоге, к которому IIS/SOAP не могут обратиться, то в результате вызова WebService получите ошибку SOAP error "Class not registered."

Visual FoxPro сейчас скомпилировал файл myWServ1 в COM сервер с именем myWServ1.dll. Теперь вы можете опубликовать XML Web сервис.

Expand image Создание и публикация XML Web сервиса

Из файла myWServ1.dll, созданного в предыдущей процедуре, новый файл Web Services Description Language (.wsdl) будет сгенерирован при публикации XML Web сервиса. Файл .wsdl представляет собой XML файл, который описывает XML Web сервис и содержащиеся в нем классы.

Для добавления компонентов, необходимых для превращения вашего COM сервера в XML Web сервис, ввы должны скомпилировать COM сервер, как XML Web сервис. После того, как вы укажите установки в Web Services Publisher, Visual FoxPro создаст SOAP файлы, необходимы для превращения вашего COM сервера в XML Web сервис, опубликует их в вашем вирутальном каталоге и зарегистрирует новый XML Web сервис в IntelliSense.

Для компиляции и публикации XML Web сервиса

  1. В меню Tools щелкните на Task Pane.

  2. В Task Pane Manager щелкните на XML Web Services.

  3. В XML Web Service Tools выберите Publish Your XML Web Service.

  4. Если файл myWServ1.dll не перечислен в поле COM Server, щелкните на командной кнопке (...) и выберите myWServ1.dll.

  5. Щелкните на Advanced для отображения диалогового блока Visual FoxPro XML Web Services Publisher.

  6. Убедитесь, что бокс Listener URI отображает ваш виртуальный каталог. Если такой не существует, щелкните на командной кнопке (...) и выберите ваш виртуальный каталог.

  7. Щелкните на закладке Methods и убедитесь, что выбран CustomersInGermany.

  8. Щелкните на таблице Namespaces, заместите tempuri.org именем вашего домена во всех поля и щелкните на OK.

    Если у вас нет своего собственного домена, вы можете оставить для этого примера tempuri.org неизмененным.

  9. Щелкните на OK для того, чтобы закрыть Visual FoxPro XML Web Services Publisher.

  10. Щелкните на Generate.

    Visual FoxPro сгенерирует файлы XML Web сервиса. После завершения генерации XML Web Services Publishing Results появится диалоговое окно, отображающее список сгенерированных файлов - файл .wsdl, ISAPI или ASP listener, чтобы вы смогли проверить, что файлы сгенерированы должным образом.

К этому моменту вы создали и опубликовали ваш XML Web сервис. Любой, кто имеет доступ к виртуальному каталогу, установленному вами ранее, может использовать HTTP для обращения к опубликованному вами XML Web сервису.

Expand image Тестирование XML Web сервиса

После того, как вы опубликовали ваш новый XML Web сервис, вы должны протестировать его, чтобы убедиться, что он работает корректно. Visual FoxPro предоставляет механизм для тестирования XML Web сервисов, который доступен в панели XML Web Service в Task Pane Manager. Механизм теста отобразит любые результаты, возвращаемые из XML Web сервиса, используемые XML схемы и ошибку обратной связи.

Для тестирования XML Web сервиса

  1. В меню Tools Visual FoxPro щелкните на Task Pane.

  2. В Task Pane Manager щелкните на XML Web Services.

  3. В Explore an XML Web Service щелкните на ShowCustomers в боксе Service Name.

  4. В боксе The following methods are supported by this XML web service щелкните на CustomersInGermany.

    В этом боксе будут перечислены все доступные методы для XML Web сервиса.

  5. Щелкните на Test this XML Web Service.

Если тестирование прошло успешно, появится окно Web Service Test Results. Оно отобразит результаты, возвращенные XML Web сервисом и вы сможете увидеть файл .wsdl, ассоциированный с XML Web сервисом. Если при тестировании произошла ошибка, окно Web Service Test Results отобразит информацию об ошибке.

Expand image Использование XML Web сервиса

Вы используете XML Web сервис таким же образом, что и любой COM Server: выставить на показ функциональность приложения другому приложению. В следующей процедуре вы создаете программный файл для доступа к вашему XML Web сервису и используете Toolbox для получения требуемого кода, который должным образом ссылается на XML Web service .

Для использования XML Web сервиса

  1. В меню File Visual FoxPro щелкните на New.

  2. В диалоговом окне New выберите Project и щелкните на New file. Сохраните проект под именем wsTest.

  3. На закладке All Project Manager разверните узел Code, выберите Programs и, затем, щелкните на New. В меню Tools Visual FoxPro щелкните на Toolbox.

  4. В Toolbox щелкните на My XML Web Services.

  5. Щелкните и перетащите ShowCustomers XML Web сервис из Toolbox в командное окно.

    Тем самым вы добавите правильный код для вашего XML Web service.

  6. В окне редактирования, ниже строки с текстом "Call your XML Web service here" вставьте приведенный ниже код.

      CopyCode imageСкопировать код
    LOCAL lcXML, lcAlias AS String
    LOCAL loXMLAdapter AS XMLAdapter
    
    lcXML = loShowCustomers.CustomersInGermany
    
    loXMLAdapter = CREATEOBJECT("XMLAdapter")
    loXMLAdapter.LoadXML(lcXML)
    
    lcAlias = loXMLAdapter.Tables.Item(1).Alias
    loXMLAdapter.Tables.Item(1).ToCursor()
    
    SELECT(lcAlias)
    BROWSE
    CLOSE DATABASES ALL
  7. В меню File щелкните на Save.

  8. В диалоговом окне Save As дайте программе имя WebServiceTest и щелкните на Save.

  9. Закройте окно редактирования.

  10. В Project Manager выберите программный файл WebServiceTest и щелкните на Run.

    Появится окно просмотра (browse) с таблицей всех потребителей из Германии, выбранными из базы данных Northwind. Этот курсор будет заполнен из XML, поставляемым из вашего XML Web сервиса с помощью класса XMLAdapter.

Для получения более подробной информации о Web сервисах, смотрите описание Web сервисы и компоненты. Для получения более подробной информации о COM серверах, смотрите описание Как: создать сервер автоматизации.

Expand image Смотрите также

Прочие ресурсы

Репетиции