Чтение данных SQL Server через интернет
Генерируем класс-заместитель для удаленного объекта
Чтобы обратиться к компоненту Service Interface (Интерфейс службы), клиентское приложение должно создать класс-заместитель. Класс-заместитель напоминает копию удаленного объекта; он объявляет те же методы и публичные интерфейсы, но при вызове со стороны клиента он выполняет маршрутизацию вызова к удаленному объекту. Набор инструментальных средств разработки Microsoft .NET Framework SDK предоставляет инструмент SOAPSuds, который можно использовать для того, чтобы сгенерировать класс-заместитель.
- В меню Start (Пуск) выберите Programs, Microsoft .NET Framework 2.0 SDK, SDK Command Prompt (Все программы, Microsoft .NET Framework 2.0 SDK, SDK Command Prompt). Откроется окно командной строки.
- В командной строке введите следующие команды:
- cd \, чтобы перейти в корневой каталог диска
- md ClientApp, чтобы создать новый каталог для клиентского приложения
- cd ClientApp, чтобы перейти в папку ClientApp
- soapsuds -url:http://localhost/departmentservice/department.soap?wsdl -oa:DepartmentProxy.dll
Утилита SOAPSuds загружает автоматически сгенерированный инфраструктурой удаленного взаимодействия файл описания службы, который описывает каждый из методов, предлагаемых классом DepartmentServiceInterface. На основе этого файла SOAPSuds генерирует новую сборку с именем DepartmentProxy.dll, которая содержит класс, способный использовать удаленную службу.
Создаем клиентское приложение, которое будет вызывать удаленный объект
Для вызова удаленной службы мы можем использовать класс-заместитель DepartmentProxy.dll. Чтобы создать клиентское приложение и использовать класс-заместитель, выполните следующие действия:
- Запустите Visual Studio 2005 и создайте новый проект. В окне New Project (Создание проекта) выберите шаблон Windows Application (Приложение Windows). Код для этого примера можно найти в файлах примеров в папке 3tiers\ClientApp.
- Дайте проекту имя ClientApp и нажмите кнопку ОК.
- В окне Solution Explorer (Обозреватель решений) щелкните правой кнопкой мыши проект ClientApp и выберите из контекстного меню команду Add Reference (Добавить ссылку).
- В окне Add Reference (Добавление ссылки) на вкладке .NET выделите System.Runtime.Remoting и нажмите кнопку ОК.
- Снова щелкните на проекте ClientApp правой кнопкой мыши, чтобы добавить еще одну ссылку. В окне Add Reference (Добавление ссылки) перейдите на вкладку Browse (Обзор). Перейдите к папке C:\ClientApp и выделите сборку DepartmentProxy.dll, а затем нажмите кнопку ОК.
- В область конструктора формы Form1 добавьте элемент управления DataGridView из панели Toolbox (Панели элементов).
- В смарт-тэге DataGridView Tasks снимите флажки Enable Adding (Разрешить добавление), Enable Editing (Разрешить изменение) и Enable Deleting (Разрешить удаление).
- Нажмите клавишу F4, чтобы открыть окно Properties (Свойства). Выберите в форме элемент управления DataGridView и задайте для свойства Dock значение Fill.
- Добавьте в обработчик событий Form1_Load следующий код.
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim de As New DepartmentServiceInterface.DepartmentServiceInterface Dim departments As New DataSet departments = de.GetDepartments() DataGridView1.DataSource = departments.Tables(0) DataGridView1.AutoGenerateColumns = True End Sub
- Нажмите клавишу F5, чтобы скомпоновать и запустить приложение.
- Форма загрузится, и элемент управления DataGridView покажет полученный от SQL Server список всех отделов.
Хотя это может показаться слишком сложным (конечно, так много шагов!), в целом архитектура нашего примера .NET Remoting, показанная на рис. 5.3, достаточно проста.
И ASP.NET,. и .NET Remoting – это технологии среднего уровня, которые инкапсулируют набор компонентов и представляют компоненты как службы через интерфейс службы. Для развертывания SQL Server в безопасном окружении в серверной части СУБД можно использовать любое из этих двух решений, при этом удаленные клиенты смогут устанавливать соединения с приложением и извлекать нужные им данные.
Заключение
В этой лекции рассказывалось о том, как осуществляется доступ к данным SQL Server с удаленного клиентского приложения либо через открытие прямого доступа к SQL Server через интернет, либо посредством написания интерфейса службы среднего уровня. Прямое соединение через интернет обеспечивает больше гибкости, но одновременно подвергает безопасность вашей установки дополнительному риску. Использование архитектуры среднего уровня предоставляет серверу SQL Server защищенный интерфейс, повышает масштабируемость и производительность, а также упрощает задачи настройки конфигурации и обслуживания.