원격 데이터 서비스로 원격 데이터 바인딩

웹 응용 프로그램이 클라이언트에 데이터를 액세스할 수 있는 능력을 주면 원격 데이터 서비스(RDS)로 클라이언트와 서버로 해당 데이터의 처리 작업을 분산시킬 수 있습니다. 클라이언트쪽 RDS 구성 요소는 웹 서버로 쿼리를 보냅니다. 서버쪽 RDS 구성 요소는 이 요청을 처리하고 비즈니스 개체를 사용하여 DBMS(Database Management System)로 요청을 보냅니다. DBMS는 요청에 응답하여 데이터를 다시 웹 서버로 보냅니다. 웹 서버에 있는 RDS 구성 요소는 이 데이터를 ADO Recordset 개체로 전송합니다. 클라이언트에 전송하기 위해 데이터가 분석되고 네트워크를 통해 클라이언트 컴퓨터로 다시 보내집니다. 여기서 이 데이터는 입력란이나 콤보 상자같이 데이터 인식 컨트롤로 표시될 수 있습니다.

원격 데이터 바인딩을 수행하기 위해서는 RDS.DataControl과 RDS.DataFactory 개체를 주로 사용합니다. 첫째, 개체 태그를 HTML 페이지에 삽입하여 클라이언트 컴퓨터에 RDS.DataControl 개체의 사본을 작성합니다. 예를 들면 다음과 같습니다.

<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 페이지에 있는 여러 개의 데이터 인식 컨트롤에 바인드할 수 있습니다. 예를 들어 다음 HTML 태그는 위의 RDS.DataControl 개체에 바운드된 HTML 표를 표시합니다.

<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.DataSpace 개체를 작성하여 RDS.DataFactory 개체의 인스턴스를 작성하고 이 개체는 CreateObject 메서드로 서버에 DataFactory 개체의 인스턴스를 작성합니다. 다음 스크립트는 이 프로세스를 보여줍니다.

RDS.DataFactory 개체에 의해 데이터 액세스 요구를 제공받을 수 없는 경우에는 사용자 지정 비즈니스 구성 요소를 작성하여 클라이언트와 통신하거나 또는 ASP 스크립트에서 직접 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>

Platform SDK의 IIS 설명서에 있는 구성 요소 디자인 지침에 설명되어 있는 문제가 RDS.DataControl로 통신하기 위해 작성하는 사용자 지정 데이터 비즈니스 구성 요소에도 적용됩니다.

참고   원격 데이터 서비스(RDS)는 지금은 사용되지 않는 고급 데이터 커넥터(ADC)를 대신합니다. 특히 ADC 원격 기능(클라이언트에서 레코드 집합을 조작하고 수정할 수 있는 기능)은 ADO 내에 RDS로 통합되었습니다.

자세한 내용은 Platform SDK의 원격 데이터 서비스 설명서를 참조하십시오.


© 1997-2001 Microsoft Corporation. All rights reserved.