Chapter 23 - Project DataService |
Project Structure
| DataService.dpr |
program DataService;
uses
WebBroker,
CGIApp,
DataWm in 'DataWm.pas' ,
DataService_TLB in 'DataService_TLB.pas',
DataRdm in 'DataRdm.pas' ;
begin
Application.Initialize;
Application.CreateForm(TWebModule1, WebModule1);
Application.Run;
end.
| DataWm.pas |
unit DataWm;
interface
uses
SysUtils, Classes, HTTPApp, DBClient, Provider, DB, DBTables, WSDLPub,
SOAPPasInv, SOAPHTTPPasInv, SoapHTTPDisp, WebBrokerSOAP;
type
TWebModule1 = class(TWebModule)
HTTPSoapDispatcher1: THTTPSoapDispatcher;
HTTPSoapPascalInvoker1: THTTPSoapPascalInvoker;
WSDLHTMLPublish1: TWSDLHTMLPublish;
private
public
end;
var
WebModule1: TWebModule1;
type
TMyProvider = class (TDatasetProvider)
public
constructor Create (AnOwner: TComponent); override;
end;
implementation
uses
InvokeRegistry, Midas, DataRdm;
constructor TMyProvider.Create(AnOwner: TComponent);
begin
inherited;
end;
initialization
InvRegistry.RegisterInterface(TypeInfo(IAppServer));
InvRegistry.RegisterInvokableClass (TDataServiceObj);
end.
| DataService_TLB.pas |
unit DataService_TLB;
interface
uses ActiveX, Classes, Graphics, Midas, StdVCL, Variants, Windows;
const
DataServiceMajorVersion = 1;
DataServiceMinorVersion = 0;
LIBID_DataService: TGUID = '{DAEA8F54-7BDA-4B0E-BA66-A589A545CABE}';
IID_IDataServiceObj: TGUID = '{3AB54780-6B56-4D31-8F29-86F69B013FFD}';
CLASS_DataServiceObj: TGUID = '{8CB4BA13-F15B-4659-972C-46B4E0195AB0}';
type
IDataServiceObj = interface;
IDataServiceObjDisp = dispinterface;
DataServiceObj = IDataServiceObj;
IDataServiceObj = interface(IAppServer)
['{3AB54780-6B56-4D31-8F29-86F69B013FFD}']
end;
IDataServiceObjDisp = dispinterface
['{3AB54780-6B56-4D31-8F29-86F69B013FFD}']
function AS_ApplyUpdates(const ProviderName: WideString; Delta: OleVariant;
MaxErrors: Integer; out ErrorCount: Integer; var OwnerData: OleVariant): OleVariant; dispid 20000000;
function AS_GetRecords(const ProviderName: WideString; Count: Integer; out RecsOut: Integer;
Options: Integer; const CommandText: WideString;
var Params: OleVariant; var OwnerData: OleVariant): OleVariant; dispid 20000001;
function AS_DataRequest(const ProviderName: WideString; Data: OleVariant): OleVariant; dispid 20000002;
function AS_GetProviderNames: OleVariant; dispid 20000003;
function AS_GetParams(const ProviderName: WideString; var OwnerData: OleVariant): OleVariant; dispid 20000004;
function AS_RowRequest(const ProviderName: WideString; Row: OleVariant; RequestType: Integer;
var OwnerData: OleVariant): OleVariant; dispid 20000005;
procedure AS_Execute(const ProviderName: WideString; const CommandText: WideString;
var Params: OleVariant; var OwnerData: OleVariant); dispid 20000006;
end;
CoDataServiceObj = class
class function Create: IDataServiceObj;
class function CreateRemote(const MachineName: string): IDataServiceObj;
end;
implementation
uses ComObj;
class function CoDataServiceObj.Create: IDataServiceObj;
begin
Result := CreateComObject(CLASS_DataServiceObj) as IDataServiceObj;
end;
class function CoDataServiceObj.CreateRemote(const MachineName: string): IDataServiceObj;
begin
Result := CreateRemoteComObject(MachineName, CLASS_DataServiceObj) as IDataServiceObj;
end;
end.
| DataRdm.pas |
unit DataRdm;
interface
uses
Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
DBClient, DataService_TLB, StdVcl, Provider, DB, DBTables;
type
TDataServiceObj = class(TRemoteDataModule, IDataServiceObj)
Table1: TTable;
DataSetProvider1: TDataSetProvider;
private
public
end;
implementation
initialization
TComponentFactory.Create(ComServer, TDataServiceObj,
Class_DataServiceObj, ciMultiInstance, tmApartment);
end.
| DataWm.dfm |
object WebModule1: TWebModule1
OldCreateOrder = False
Actions = <>
Left = 157
Top = 377
Height = 240
Width = 459
object HTTPSoapDispatcher1: THTTPSoapDispatcher
Dispatcher = HTTPSoapPascalInvoker1
WebDispatch.PathInfo = 'soap*'
Left = 64
Top = 48
end
object HTTPSoapPascalInvoker1: THTTPSoapPascalInvoker
Converter.Options = [soSendMultiRefObj, soTryAllSchema]
Left = 160
Top = 48
end
object WSDLHTMLPublish1: TWSDLHTMLPublish
WebDispatch.MethodType = mtAny
WebDispatch.PathInfo = 'wsdl*'
AdminEnabled = False
Left = 264
Top = 40
end
end
| DataRdm.dfm |
object DataServiceObj: TDataServiceObj
OldCreateOrder = False
Left = 510
Top = 133
Height = 150
Width = 215
object Table1: TTable
DatabaseName = 'DBDEMOS'
TableName = 'customer.db'
Left = 48
Top = 48
end
object DataSetProvider1: TDataSetProvider
DataSet = Table1
Constraints = True
Left = 104
Top = 56
end
end
|
|