Jump to content

NamoRamana

Members
  • Content Count

    28
  • Joined

  • Last visited

Everything posted by NamoRamana

  1. NamoRamana

    COM server to MARS

    Newbie here.. We have a lot of COM+ server components ( > 30 COM dlls developed in Delphi 2006) in the present system. We are evaluating to convert them in Delphi Rio based some REST server, preferably keeping the endpoint signatures the same (to make minimum changes in a huge delphi client application). It will be a huge undertaking, apart from unicode etc related conversion (64-bit conversion will be the next step; after successful 32bit upgrade). I was wondering if MARS can ease this server migration? - in MARS, can I install multiple resources under the same server ? Idea here is that, each com server dll will act as own resource and its public methods will be the endpoints. For the better code management, is it possible to keep each resource code in its separate delphi project? how complex will be the installation of the REST server and these multiple resources, if we host them in IIS? - in current COM servers, Many of the method calls make heavy use of OleVarients as input and output paramas. Is there anything in MARS/REST that can keep those method signature same ? - in current COM env, we see some heavily used components slow down the end-user response a lot (sometimes, we have to reboot the host server). Do you think, MARS based REST service can handle a lots requests to a resource(I don't have request numbers)? Sorry for the lot of heavy questions. Your response/strategy/recommendation to tackle this upgrade will be helpful. Thank you :).
  2. NamoRamana

    Delphi 10.3.2 - IdObjs not found

    Trying to recompile old code in Delphi 10.3.2 and getting error: 'IdObjs not found'. Also code insight shows red line under TIdThreadList. Does Delphi Rio (10.3.2) missing any indy libraries? Any indy libraries merged/renamed in later delphi versions? interface uses IdContext, Classes, SysUtils, IdCustomTCPServer, StreamUtils, IdTCPConnection, IdYarn, IdObjs, IdComponent; type TRequestType = (rtNone, rtGetFileList, rtGetFile, rtGetMasterHash, rtDisconnect); TResponseType = (rstNone, rstFile, rstString, rstStringList); TGetMasterHash = procedure (var AHash : string) of object; TGetFileList = procedure (var AFileList : TStrings) of object; TGetFile = procedure (const AFilename : string; var AStream : TStream) of object; TBytesSent = procedure (AByteCount : integer) of object; TSyncContext = class(TIdContext) private FOnGetMasterHash: TGetMasterHash; FOnGetFileList: TGetFileList; FOnGetFile: TGetFile; FOnBytesSent: TBytesSent; FBytesSentTotal : integer; protected procedure WriteResponseHeader(AResponseType : TResponseType; ASize : Int64); function ReadRequestHeader : TRequestType; procedure DoGetMasterHash; virtual; procedure DoGetFileList; virtual; procedure DoGetFile(const AFilename : string); virtual; procedure DoBytesSent(AByteCount : integer); virtual; procedure DoWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Integer); procedure DoWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Integer); public constructor Create(AConnection: TIdTCPConnection; AYarn: TIdYarn; AList: TIdThreadList = nil); override;
  3. NamoRamana

    Delphi 10.3.2 - IdObjs not found

    Original code was written in Delphi 2006.. But I think, I found the solution (untested). Somewhere Remy B. wrote that IdObjs and IdSys(??!!) has been obsolete. So the changes I made to above code were like: - Removed IdObjs from "interface uses" - Derived TSyncContext from TIdSeverContext (instead of TIdContext) - And changed the constructor signature to use TIdContextThreadList interface uses IdContext, Classes, SysUtils, IdCustomTCPServer, StreamUtils, IdTCPConnection, IdYarn, IdComponent; //IdObjs, type TRequestType = (rtNone, rtGetFileList, rtGetFile, rtGetMasterHash, rtDisconnect); TResponseType = (rstNone, rstFile, rstString, rstStringList); TGetMasterHash = procedure (var AHash : string) of object; TGetFileList = procedure (var AFileList : TStrings) of object; TGetFile = procedure (const AFilename : string; var AStream : TStream) of object; TBytesSent = procedure (AByteCount : integer) of object; TSyncContext = class(TIdServerContext) private FOnGetMasterHash: TGetMasterHash; FOnGetFileList: TGetFileList; FOnGetFile: TGetFile; FOnBytesSent: TBytesSent; FBytesSentTotal : integer; protected procedure WriteResponseHeader(AResponseType : TResponseType; ASize : Int64); function ReadRequestHeader : TRequestType; procedure DoGetMasterHash; virtual; procedure DoGetFileList; virtual; procedure DoGetFile(const AFilename : string); virtual; procedure DoBytesSent(AByteCount : integer); virtual; procedure DoWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); procedure DoWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64); public //constructor Create(AConnection: TIdTCPConnection; AYarn: TIdYarn; //AList: TIdThreadList = nil); override; constructor Create(AConnection: TIdTCPConnection; AYarn: TIdYarn; AList: TIdContextThreadList = nil); override;
×