MDAC 2.5 SDK - OLE DB Providers
OLE DB Remoting Provider
Using the OLE DB Remoting Provider: A Closer Look
See Also
The OLE DB Remoting Provider enables those applications written to consume data from OLE DB providers to work with remote OLE DB data providers.
The Remoting Provider allows you to retrieve rowsets from remote data stores and update those rowsets when used in conjunction with other service components—both on the client side and on the server side—such as the Cursor Service for OLE DB and the Persistence Provider.
The following list describes the required components on each platform when using the Remoting Provider:
- The client Cursor Service provides a client-side manipulation of result sets both in two-tier and in three-tier scenarios. The Remoting Provider uses the Cursor Service to buffer remoted recordsets in its temporary table structures. This data is exposed as an OLE DB rowset implemented on top of a static, client-side cursor. The Cursor Service also maintains client updates in its cache. It can interact with the OLE DB Persistence Provider to marshal the rowset across process/machine boundaries. It also can submit updates to underlying OLE DB providers and obtain status information for the updates. It reconciles the status information about the individual rows submitted for update with the original rowset. The Cursor Service's update function uses an SQL query-based-update mechanism and works only against SQL-based OLE DB providers.
- The OLE DB Persistence Provider can save a recordset into a binary stream. It can also create a recordset from a binary stream of data. The Cursor Service component uses the OLE DB Persistence Provider to marshal recordsets by value over process/machine boundaries. The Remoting Provider obtains an IStream interface from the underlying communication protocol (DCOM or HTTP), and the recordset is persisted into that stream to be received at the other end.
- The OLE DB Remoting Provider as described in this guide.
In order for remote requests to be processed, two additional components are necessary on the server side:
- The ADISAPI component is the Remote Data Service (RDS) server-side stub that receives HTTP requests generated by the client-side Remoting Provider, which includes marshaling and unmarshaling of rowsets into and from binary streams with the help of the OLE DB Persistence Provider. The ADISAPI component DLL is the hook into Microsoft Internet Information Services (IIS). It provides the necessary services for the server-side Remoting Provider to allow create and update functionality.
- The DataFactory object works with the ADISAPI component in creating and updating rowsets. It provides read/write access to SQL-based OLE DB data stores but does not contain any validation or business rules logic.
The following illustration shows how these components interact.
For more information about the DataFactory object, see the topic "RDS Programming Model in Detail" in the ADO Programmer's Reference.