Чтение данных SQL Server через интернет
Технология удаленного взаимодействия Microsoft .NET Remoting
Инфраструктура Microsoft .NET предоставляет различные технологии для обеспечения удаленным клиентам возможности установить соединение с компонентами на стороне сервера.
Если использовать веб-службы ASP.NET, как в предыдущем разделе данной лекции, клиентское приложение будет осуществлять обмен данными с помощью формата SOAP через интерфейс сервиса.
Microsoft .NET Remoting - это еще одна технология, которая позволяет удаленным приложениям осуществлять обмен данными с компонентами на стороне сервиса. Microsoft .NET Remoting позволяет настраивать используемый формат данных или протокол передачи данных. Например, вместо XML и SOAP можно использовать двоичный или любой другой пользовательский формат, а вместо протоколов HTTP или TCP - другой протокол по своему выбору.
Главное отличие между веб-службами ASP.NET. и технологией .NET Remoting –заключается в том, что .NET Remoting использует не сервис-ориентированную архитектуру, а удаленный вызов процедур (RPC) объект-объект.
Создаем объект .NET Remoting
Построим пример, используя в качестве основы кода пример из предыдущего раздела. Повторите действия с 1 по 4 из предыдущего раздела, а затем выполните следующую последовательность действий:
- После создания компонента DepartmentDataAccess необходимо предоставить компонент интерфейса сервиса. В этом примере мы создадим интерфейс сервиса .NET Remoting. В Visual Studio 2005 выберите из меню File (Файл) Add, New Project (Добавить, Новый проект). Приложение для этого примера можно найти в файлах примеров в папке 3tiers\Remoting.
- Выберите в диалоговом окне New Project (Создание нового проекта) шаблон Class Library (Библиотека классов) и дайте проекту имя DepartmentServiceInterface. Нажмите кнопку ОК.
- В окне Solution Explorer (Обозреватель решений) щелкните правой кнопкой мыши проект DepartmentServiceInterface и выберите из контекстного меню команду Add Reference (Добавить ссылку).
- В окне Add Reference (Добавление ссылки), которое показано ниже, перейдите на вкладку Projects (Проекты), выберите проект DepartmentDataAccess, а затем нажмите кнопку ОК,
- Замените код в файле Class1.vb следующим кодом:
Public Class DepartmentServiceInterface Inherits MarshalByRefObject Public Function GetDepartments() As System.Data.DataSet Dim departmentsDL As New DepartmentDataAccess.DepartmentDataAccess() Return departmentsDL.GetAllDepartments() End Function End Class
- Скомпонуйте проект.
Последний компонент, который нужно создать – это несущее приложение. Когда мы создавали веб-службу ASP.NET, мы сконфигурировали ее так, чтобы она могла размещаться и выполняться на веб-сервере, например, Microsoft Internet Information Server (IIS). В следующем примере мы сконфигурируем объект .NET Remoting так, чтобы он тоже мог размещаться на сервере IIS.
Настраиваем объект .NET Remoting под размещение на IIS
- Создайте и настройте виртуальный каталог для размещения сборок в IIS.
- Создайте конфигурационный файл web.config для настройки инфраструктуры Remoting.
- Сгенерируйте класс-заместитель для удаленного объекта.
- Создайте клиентское приложение, которое будет вызывать удаленный объект.
Создаем и настраиваем конфигурацию виртуального каталога в IIS
С IIS в качестве среды размещения наше удаленное приложение может использовать механизм обеспечения безопасности IIS, протоколы передачи данных и встроенные механизмы обработки запросов. Установите сборки из компонента DepartmentServiceInterface в виртуальный каталог IIS:
- Создайте новый каталог с именем DepartmentRemote на диске C.
- В каталоге C:\DepartmentRemote создайте новую папку с именем bin.
- Из меню Start (Пуск) выберите команду Control Panel (Панель управления). В Control Panel (Панели управления) выполните двойной щелчок на значке Administrative Tools (Администрирование), В окне Administrative Tools (Администрирование) дважды щелкните значок Internet Information Services.
- В окне приложения для управления Internet Information Services нажмите значок (+), чтобы развернуть узел компьютера, затем разверните дерево узла Web-Sites (Веб-узлы), после этого щелкните узел Default Web Site, как показано ниже: (см. рис. вверху следующей страницы).
- Из контекстного меню выберите команды New, Virtual Directory (Создать, виртуальный каталог).
- В окне мастера Virtual Directory Creation Wizard (Мастер создания виртуальных каталогов) нажмите кнопку Next (Далее).
- В окне Virtual Directory Alias (Псевдоним виртуального каталога) введите в качестве имени псевдонима DepartmentService и нажмите кнопку Next (Далее).
- В окне Web Site Content Directory (Каталог содержимого веб-узла) введите или найдите через окно Browse (Обзор) путь к каталогу C:\DepartmentRemote в текстовом поле Directory (Каталог), а затем нажмите кнопку Next (Далее).
- В окне Access Permissions (Права доступа) снимите все флажки, кроме Execute (Выполнение). Нажмите кнопку Next (Далее), чтобы перейти в последнее окно мастера.
- Нажмите кнопку Finish (Готово).
- Щелкните правой кнопкой мыши на вновь созданном виртуальном каталоге DepartmentRemote и выберите из контекстного меню команду Properties (Свойства).
- В окне DepartmentService Properties (DepartmentService: свойства) перейдите на вкладку ASP.NET и измените номер версии ASP.NET на 2.Х.Х.Х, как показано на следующем рисунке: (Числа могут быть разными в зависимости от установки, но убедитесь в том, что это та же версия, что и версия Visual Studio, которую вы используете для компиляции сборок.) Затем нажмите кнопку OK, чтобы закрыть окно.Совет. Чтобы узнать номер версии Visual Studio, в окне Visual Studio выберите из меню Help (Справка) команду About Microsoft Visual Studio (О программе Microsoft Visual Studio).
- В Проводнике Windows скопируйте все содержимое вложенных каталогов bin/debug, в которых вы сохранили проект DepartmentServiceInterface (автор использовал каталог по умолчанию, который предлагает Visual Studio 2005: C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\DepartmentDataAccess\DepartmentServiceInterface ) в папке C:\DepartmentRemote\bin. Получившиеся файлы показаны на рисунке.
Создаем конфигурационный файл web.config для настройки инфраструктуры удаленного взаимодействия
- При помощи Notepad (Блокнота) создайте новый файл с именем web.config в каталоге C:\DepartmentRemote.
- Отредактируйте файл web.config, добавив в него следующий код XML (который можно найти в файлах примеров в папке 3tiers под именем web.config ).
<configuration> <system.runtime.remoting> <application> <service> <wellknown mode="SingleCall" type="DepartmentServiceInterface.DepartmentServiceInterface, DepartmentServiceInterface" objectUri="department.soap" /> </service> </application> </system.runtime.remoting> </configuration>
- Сохраните файл web.config.
Этот XML-файл задает конфигурацию инфраструктуры удаленного взаимодействия. Он объявляет новую службу с именем department.soap, которая соответствует классу DepartmentServiceInterface. DepartmentServiceInterface в сборке DepartmentServiceInterface. Параметр Mode="SingleCall" показывает, что для каждого запроса будет создан новый экземпляр этого класса.