ASP - Удаленная привязка данных с помощью службы удаленного доступа к данным
Удаленная привязка данных с помощью службы удаленного доступа к данным
Если веб-приложение обеспечивает клиентов возможностью доступа к данным, можно распределить обработку данных между клиентом и сервером с помощью службы удаленного доступа к данным (RDS). Компоненты RDS на стороне клиента направляют запросы к веб-серверу. Компоненты RDS на стороне сервера обрабатывают эти запросы и оправляют их системе управления базой данных (DBMS) с помощью объектов деловых приложений. DBMS отвечает на запрос, передавая данные на веб-сервер. Компоненты RDS на веб-сервере преобразуют данные в объект ADO Recordset. Производится разбор данных для передачи по сети на компьютер клиента, где они могут быть отображены элементами управления, определяемыми данными, например полем или полем с раскрывающимся списком.
Два основных объекта, которые будут использоваться для выполнения удаленной привязки — это RDS.DataControl и RDS.DataFactory. Сначала создайте копию объекта RDS.DataControl на компьютере клиента, вставив тег объекта на страницу HTML. Например:
<OBJECT CLASSID="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33" ID="RDSDC1">
<PARAM NAME="SQL" VALUE="SELECT Author, ID FROM Authors">
<PARAM NAME="CONNECT" VALUE="DSN=Pubs;">
<PARAM NAME="SERVER" VALUE=http://Bookweb/>
</OBJECT>
Приведенный выше тег объекта создает экземпляр объекта RDS.DataControl и устанавливает для него параметры SQL, Connect и Server. Если этот тег добавлен на страницу HTML, можно затем привязать объект управления данными к нескольким элементам управления, определяемым данными, на странице HTML. Например, приведенные ниже теги отображают таблицу, привязанную к объекту RDS.DataControl, описанному выше.
<TABLE id=Tasks DataSrc=#RDSDC1 WIDTH=100% BORDER=1 style="display: none">
<THEAD ALIGN=left>
<TR>
<TH><em>ID</TH>
<TH><em>Author</TH>
</TR>
</THEAD>
<TR>
<TD><DIV DATAFLD=ID></DIV></TD>
<TD><DIV DATAFLD=Author></DIV></TD>
</TR>
</TABLE>
С объектом RDS.DataControl связывается находящийся на сервере объект RDS.DataFactory, или компонент, реализующий бизнес-логику. Экземпляр объекта RDS.DataFactory может быть создан при первом создании на компьютере клиента объекта RDS.DataSpace, который затем с помощью метода CreateObject создает экземпляр объекта DataFactory на сервере. Данный процесс иллюстрируется сценарием в приведенном ниже примере.
Если доступ к данным должен обслуживаться объектом RDS.DataFactory, можно или создать специальный компонент, реализующий бизнес-логику, для связи с клиентом, или использовать непосредственно ADO из сценария для извлечения данных. В приведенном ниже примере специальный компонент Inventory предоставляет метод getQuantityonHand. Объект RDS.DataControl создает экземпляр Inventory на сервере и затем для извлечения записей вызывает метод getQuantityonHand.
<HTML>
<HEAD>
</HEAD>
<BODY>
<!-- RDS.DataControl -->
<OBJECT classid="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33" ID=ADC1></OBJECT>
<!-- RDS.DataSpace -->
<OBJECT ID="ADS1" WIDTH=1 HEIGHT=1 CLASSID="CLSID:BD96C556-65A3-11D0-983A-00C04FC29E36">
</OBJECT>
<SCRIPT LANGUAGE="VBScript">
Option Explicit
Sub GetRecords()
Dim objInventory, myRS
Set objInventory =
ADS1.CreateObject("Company.Inventory", _
"http://<%=Request.ServerVariables("SERVER_NAME")%>")
' Inventory exposes a method called
' getQuantityonHand that takes connection string and SQL parameters.
Set myRS = objInventory.getQuantityonHand _
("DSN=pubs;UID=sa;PWD=permission;","Select Quantity From Inventory")
' Assign the returned recordset to SourceRecordset.
ADC1.SourceRecordset = myRS
End Sub
</SCRIPT>
</BODY>
</HTML>
Те же вопросы, что и описанные в разделе Component Design Guidelines в документации IIS в пакете SDK операционной системы, относятся и к любому специальному компоненту, создаваемому для взаимодействия с RDS.DataControl. Например, следует гарантировать, что компонент поддерживает или двойную (Both), или замкнутую (Apartment) модель потоков.
Примечание. RDS заменяет Advanced Data Connector (ADC), который считается устаревшим. В частности, функциональные возможности ADC по удаленной обработке (возможность манипулирования и изменения наборов записей на компьютере клиента) были встроены в ADO как часть RDS.
Дополнительные сведения содержатся в разделе пакета SDK операционной системы, описывающем службу удаленного доступа к данным.