unigui Developer Manual 2016 FMSoft Co. Ltd.

Size: px
Start display at page:

Download "unigui Developer Manual 2016 FMSoft Co. Ltd."

Transcription

1

2 2 Table of Contents Foreword 0 Part I Introduction 4 Part II Installation 5 1 System... Requirements 5 2 Installation... Instructions 6 3 Sencha... Touch Installation 14 4 Running... Demos Part III Technology Overview 1 Unified... GUI 21 2 Web... Sessions 22 3 Deployment... Options 23 4 Forms... and Modules 25 Application... MainForm 25 LoginForm MainModule ServerModule ServiceModule DataModules Fram es Special... Objects 31 UniApplication... Object 31 UniSession... Object 32 UniServerInstance... Object Part IV Developer's Guide 1 Creating... a New unigui Application 33 Standalone... Server Project 35 Standalone... Server / ISAPI Module Project 35 ISAPI Module... Project 37 Window s Service... Project 37 2 Application... Design Considerations 38 General Design... Concept 38 Web Application... Scalability 41 Create Resource... on Demand 41 Database Connections Third party... Com ponent Libraries 42 Reporting Tools FastReport ReportBuilder Using a Report... Server 46 Creating Controls... at Runtim e 46 Object Lifetim... e Managem ent 46

3 Contents 3 3 Client-side... Scripting 46 4 Web... Deployment 47 Sencha License... Considerations 47 unigui Runtim... e Package 48 Adjusting... Paths 49 Standalone... Server 52 Window s Service ISAPI Module IIS IIS IIS 7 and Later ISAPI and CGI... Restrictions 80 Apache SSL Configuration Obtain a SSL... Certificate from an Authority 84 Generate a... Self-Signed Certificate 85 Configure... SSL Parameters 88 Adjusting... Folder Access Rights 90 5 Stress... Test Tool 91 Introduction Usage Recording... a Session 92 Running the... Stress Test 94 Server Flood... Protection Considerations 97 Additional... Settings 98 Index 99

4 4 1 Introduction unigui is a Web Application Framework for Delphi. C++ Builder development is also supported for RAD Studio owners. unigui features a rich set of visual controls for developing stateful Web applications. Development process which is very similar to developing regular VCL applications. unigui Web applications can easily be run and debugged directly in Delphi IDE which makes development process very easy and straightforward. unigui extends Web application development experience to a new dimension. In this new dimension productivity is the primary goal. unigui allows developer to focus on application business logic rather than working on web application development details such as working directly with HTML, JavaScript, XML Templates, and other web technologies. unigui will save many valuable development hours which in turn helps to considerably reduce project development, deployment and support costs. This makes unigui a perfect tool for small development teams which have a limited resources to spend on development details. unigui is also perfect for large teams who need to deliver enterprise scale projects in a limited time scale. Deployment is another serious step in Web application development process. With unigui deployment is very easy and straightforward. Developers can choose one of the available options for deployment; Such as, Windows Service, Standalone Server or ISAPI Module. ISAPI modules can be deployed using Microsoft IIS, Apache Web Server for Windows or any other compatible ISAPI enabled Web server. unigui uses Sencha Ext JS and Sencha Touch libraries for client side rendering. These libraries are considered as one of the industries leading frameworks to create RIA applications. unigui combines powers of Ext JS with RAD capabilities of Delphi which probably is the fastest way of creating a RIA applications in Delphi. unigui encapsulates Ext JS classes inside a special set of Delphi controls which enables developers to create feature rich web applications without a need to learn client side scripting and working on UI details on client side, so valuable development time can be spent on business logic rather than working on repetitive UI design details which can be time consuming and technically demanding tasks.

5 Introduction 5 unigui application in Delphi 10 Seatle IDE Web Application running inside a brow ser 2 Installation 2.1 System Requirements Supported Delphi* versions are Turbo Delphi, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE-XE8 and Delphi 10 Seatle. C++ Builder is supported but not tested with all Versions. unigui does not require any special hardware or OS configuration. A typical unigui installation will occupy MB of HDD space. Note 1: Requirement for runtime environment can be very different and will be discussed under deployment topic. Note 2: In order to install unigui for C++ Builder you need to have RAD Studio IDE installed. Installing C++ Builder alone is not enough. Please see Installation Instructions for details. *All Delphi versions must be installed with latest available updates and service pack s.

6 6 2.2 Installation Instructions Installation instructions for unigui (Delphi and C++ Builder**) Before installing a new version remove all design packages from Delphi and uninstall unigui from Windows Program Add/Remove. After re-compiling an application with this new version, "ext" folder must be re-deployed to PCs running new version of your application or you can simply re-install the newly introduced Ext JS runtime package which can be downloaded from Downloads page. **Note for C++ Builder: You need RAD Studio IDE to install unigui for C++ Builder. 1) Download the latest unigui Setup from customer portal. You will notice that there are two versions for of setup: FMSoft_uniGUI_{Edition_0.XX.0.YYYY}_Beta.exe o This is the one which will be installed on developer PC for development purpose only. FMSoft_uniGUI_{Edition_runtime_0.XX.0.YYYY}.exe o This one is only for deployment purpose and will be installed on your server PC which your unigui apps will run. 2) Enter required information. Make sure entered address is same as address registered in customer portal.

7 Installation 3) Accept the license agreement by pressing next. 4) Enter your license key in memo field as shown below. 7

8 8 Note: Starting from version license keys are directly obtained from an activation server. You can easily get your license key by pressing the Get License Key button. This will fill the License Key area with an appropriate key. Alternatively you can get your license key by clicking on the blue link: Web link to license key... This will open a browser window which will open a page containing your key. You can paste the key in License Key area. After key is acquired you can press Continue... button and proceed to the next step. It is also possible to save your acquired license key in a local file and use it next time you re-install same edition and version of unigui.

9 Installation 9 5) Select an installation folder. Default installation folder is [ProgramFiles]\Fmsoft\Framework \. 6) Select Delphi version(s) you want to install unigui library. You must be sure that Delphi is not running while installation is in progress. Current version of installer will not warn you about this.

10 10 7) Press Install to start and complete the installation process. 8) Start Delphi and open the project group for your Delphi version. e.g. unigui2016group (Delphi XE6). **Additional step for C++ Builder: Instead of Delphi IDE open project in RAD Studio IDE.

11 Installation 11

12 12 9) In project manager there are 11 Delphi packages. Build all packages starting from SynEdit_Rxxxx.bpl. **Additional step for C++ Builder: Before building packages, for each individual package please go to Options->Linker and Select/Set Generate all C++Builder Files.

13 Installation 13 If you are installing the Plus Edition you will see three additional files related to Mobile development in project group: 10) After building all packages install design time packages by right-clicking and selecting Install in following order: SynEdit_D20xx.bpl uniguixxdcl.bpl uniguixxchartdcl.bpl uniguixxmdcl.bpl (Plus/Complete Editions only) Several new components will be installed:

14 14 Com plete Edition only **Additional notes for C++ Builder: After starting a new C++ project you must disable Linker->Dynamic RTL. Currently building with Run Time Packages doesn't work properly. You must statically link all libs and create a single EXE. (Simply unselect Build with runtime packages option.) New C++ projects are created without a resource (.RES) file. As a result project has no default Icon. This issue will be fixed in next releases. Combo VCL/ISAPI projects are not supported for C++ Builder. 2.3 Sencha Touch Installation Note: This step is only required for unigui Plus Edition. For other editions you can sk ip this step. Current version of commercial unigui Plus with Sencha Touch support, does not distribute Sencha Touch files. ( unigui Complete is the edition which deploys Sencha Touch.) You must download it from Sencha Touch web site. Here are the instructions: Please download Sencha Touch from here. What you need from package is the folder named touch which will be extracted under touch commercial folder. You must copy touch folder to same folder your Sencha Ext JS folder resides. For example if your folder structure looks like:..\unigui\dcu..\unigui\demos..\unigui\ext You must copy touch folder to..\unigui. So after copying it should look like below:..\unigui\dcu

15 Installation 15..\uniGUI\Demos..\uniGUI\ext \uniGUI\touch Running Demos Demos are a good place to start and become familiar with framework's basics quickly. Fortunately unigui comes with plenty of example projects which can fully demonstrate all aspects of unigui including all standard and advanced features. Almost all of unigui demos are compatible with all supported versions of Delphi. A few demos may not compile on earlier versions of Delphi because of language incompatibilities and lack of new features introduced in newer versions of Delphi. Running demos is a very simple task and quite identical to run any VCL application except unigui application will run inside a browser. In order to run a demo in Delphi IDE go to File->Open and point location to where unigui demos are located. Normally under <install folder>\fmsoft\framework \unigui\demos\... Select demo folder named AllFeaturesDemo and open mdemo.dpr. In IDE select Project->Build mdemo and build the project. After a successful build press Run and you will notice a new icon will appear in tray At this stage a firewall warning may appear in desktop asking for permission to allow unigui application to listen its dedicated port. Please grant required permission to firewall.

16 16 Now in order to run a web session please open one of compatible browsers such as FireFox, Chrome, IE9+, Safari or Opera. In Browser address bar type below address: unigui application running You can terminate running application server bu right-clicking on tray icon and selecting shutdown from pop-up menu. If your unigui edition contains support for mobile application you can run demos you can follow same principles to run mobile application demo. This time please select and open mdemo.dpr from..\touch\allfeatures folder.

17 Installation 17 You can open Mainm.pas in IDE to see how mobile designer looks in IDE. It looks a bit different than standard Form designer and modified to reflect look and feel of a mobile device. unigui Mobile w eb application in IDE Now you can run application server by building project and running it. Again a new tray icon will appear. You can test or debug a mobile web session in an ordinary desktop browser or directly run it on a mobile device. On desktop you need a fully HTML5 compatible browser. Fortunately all modern browsers come with extensive support for HTML5. In Browser address bar type below address:

18 18 You will notice that address will be automatically redirected to a new address: unigui m obile app in Google Chrom e brow ser You can also run on a mobile device by simply opening a browser window and type a proper address. This time you need to enter IP address of PC which is running demos and also make sure your mobile device and PC are connected to same LAN.

19 Installation unigui w eb application running on a sm artphone 19

20 20 3 Technology Overview Developing a Rich Internet Application (RIA) is one of the challenging fields in software development. Tasks such as handling user sessions, tracking view state, updating web controls, handling AJAX calls and etc. can be very challenging if your development tool doesn't automatically handle all of these for you. unigui Web application framework makes developing stateful Web applications easier than ever. unigui extends Web Application development experience to a new dimension. Each unigui application can be considered both as a standard Delphi VCL application which uses web as its presentation layer. unigui enables developers to create, design and debug their Delphi applications as if they are developing regular desktop applications and then choose one of the available options for web deployment. unigui itself is not a single library. For Web front-end unigui relies on well known Sencha Ext JS JavaScript library. Thanks to Ext JS for enabling unigui to provide a high end, visually perfect and fully AJAX enabled web front-end. unigui uses same Form oriented application model available in a typical VCL application. This means your application will be consisted of many forms which all belong to same session. This will enable developers to follow same principles and design patterns they were following in designing standard desktop application. This will highly reduces learning curve which can be very steep for other web application frameworks. Especially for those which need developers' direct interaction with UI design details, CSS code, HTML code, XML templates and JavaScript code. This means that a Delphi developer with little web knowledge can start developing web application using unigui out of the box. While unigui enables developers to develop web applications with little knowledge for web technologies, it is always recommended for developers to fully become familiar web underlying web technologies which are used in general in the web and used in particular in unigui, such Ext JS framework. Becoming familiar with Ext JS framework will open door to a new world which developers can customize their web application in a war which wouldn't be possible otherwise. unigui allows developers to directly write JavaScript client side event handlers for Ext JS controls. This advanced feature allows developers to directly allow interaction between client side screen elements without a need to communicate with the server. In general each unigui application is a standard Delphi executable powered with specialized modules which all together turn the application into a full featured web server. Among these modules we can count Session Manager, Web HTTP Server, ISAPI Handler, Cache Eraser and Server Module. These modules cooperate to create sessions, handle Ajax calls, create web UI and manage session lifetime. All these actions happens completely transparent to developers.

21 Technology Overview Unified GUI unigui stands for Unified Graphical User Interface or Unified GUI in short. It is called unified because it allows same UI experience in all devices with a web browser. Regardless of device, OS, CPU and display same level of user experience can be achieved on all devices with a compatible web browser. It allows a great freedom in choosing client devices. Client device can be anything from a Windows PC, OSX device to a PC with any flavor of Linux or even a Raspberry Pi! Of course, this feature is not something unique to unigui. This level of independency from platform is something that any web application can provide except that unigui enables you to create web applications which are very close to desktop applications in look and feel.

22 Web Sessions Web Sessions are main elements of a unigui web application. Each time a user opens a new instance of web application a new session on server is created. Each session will remain active in server until user terminates it or a timeout condition occurs. Each session keeps a complete state of running web application. That's why unigui sessions are called stateful. You can consider each session as a private copy of your web application which co-exists with other sessions in server's address space. Each session is isolated from other sessions and each web request is automatically redirected to its respected session. Each session has a unique "Session Id" which is used to distinguish it from other sessions. Session Id is assigned upon creation of session and included in each Ajax request, so request can be directed to correct session. Below diagram represents internal structure of a unigui server. Each unigui server has a single copy of ServerModule which is created once per server, along with multiple sessions which are dynamically created and destroyed according to user activity. A unigui session contains a specialized DataModule called MainModule which is automatically created for each session. Also a Form named MainForm is created which apparently is main entry point of web application. MainForm can be preceded with a LoginForm which provide a reliable and secure way for user login. As expected each session can contain several additional DataModules and Forms..

23 Technology Overview Deployment Options unigui supports all major deployment options available for Windows platform. 1.Standalone Server Basic method of deployment is Standalone Server. In this mode application server runs directly like a desktop application. It is also the mode used for debugging application. After running application executable it will minimize itself to tray icon and will run until manually terminated by user. See below pic: unigui Standalone Server A standalone application can be accessed from browser by simply typing: Where 8077 is dedicated port number which your application is bound. It can easily be modified from ServerModule. Standalone mode is only recommended for debugging purpose. Since it runs as a desktop application it will be terminated as soon as current user is logged off. It also will not start automatically after a restart. This mode is best for debugging purpose. When your app runs in debug mode you can set breakpoints, pause, go to cursor and use all other advanced debugging features of Delphi IDE to debug your application just like any other VCL application. Apparently, this method is not recommended for production environment, as it doesn't automatically run when OS restarts. Also it can be easily terminated by an unauthorized user intervention. 2. Windows Service Another deployment method is Windows Service. By creating a unigui Windows Service application you can deploy your application as a standard Windows Service application. This method is one of the preferred method for use in a production environment. Windows Services are integrated part of OS and they run automatically each time system restarts. This will guarantee required availability expected from a web application. A Windows Service application can be accessed from a browser with same method as Standalone server described above. Which means each Windows Service application requires a dedicated port. 3. ISAPI Module Last available deployment option is ISAPI Module. This method is introduced in Microsoft IIS server. It is available from early versions of IIS and it is based on Windows DLL technology.there are other web servers such Apache which also support loading ISAPI modules. ISAPI modules differs from other two options which discussed above in many aspects. First of all it doesn't contain with a built-in web server as opposed to Standalone Service and Windows Service which both embed a web server to serve incoming HTTP requests. In ISAPI mode IIS server is the HTTP server and ISAPI module performs as an application only. You can easily create ISAPI module application using unigui Wizards in Delphi IDE. Compiling an ISAPI unigui application will output a DLL file instead of an EXE file.this DLL file must be deployed to IIS server which is described in detail in section ISAPI Module under Web Deployment section. unigui DDLs support all IIS versions starting from IIS 5.1 and above. ISAPI modules gives developer the freedom of deploying many modules in same server without a need to choose a different port for each application. It also take benefits from all advanced security features available in Microsoft IIS.

24 24 Running an ISAPI application is as easy as calling below Url in your browser: if you have multiple apps under same folder you can call them by simply specifying a different DLL name:

25 Technology Overview Forms and Modules Unlike a VCL application which can contain only a single form, a unigui application is created with a specialized form named MainForm and two data modules MainModule and ServerModule. Other form type which has a special meaning in unigui is LoginForm Application MainForm Application Main Form or MainForm is the first displayed form when a web session starts. In general MainForm is first form of your application which is used to navigate to other forms using menus or other navigation tools. MainForm is automatically created when a new project is created. Each web session has its own private copy of MainForm and closing a MainForm will terminate the session. A blank MainForm MainForm is registered in initialization section of unit so unigui can distinguish it from other forms. initialization RegisterAppFormClass(TMainForm); end.

26 LoginForm LoginForm is another special Form type which is solely used for login purpose. If your application contains a LoginForm it will the first form displayed when a web session starts. A LoginForm can be created from unigui Wizard by following this path: File->New->Other->Delphi Projects->uniGUI for Delphi->Form. unigui Wizard Create a Login Form This action will create a blank LoginForm which looks identical to a regular form:

27 Technology Overview 27 A blank LoginForm Sam ple LoginForm design A LoginForm is a descendant of a built-in class named TUniLoginForm. Each application can only has one LoginForm. After adding LoginForm your application will show this form as default form when a new session starts. You need to add controls, event handlers and etc. to implement required functionality. Login behavior is controlled using Form's ModalResult. If LognForm returns mrok it means a successful login which will proceed to MainForm. When ModalResult returns mrcancel it will terminate application. So what you need to do is to validate user input and once there is a valid combination of user name and password you must return mrok as ModalResult. procedure TUniLoginForm1.UniButton1Click(Sender: TObject); begin ModalResult := mrok; // Login is valid so proceed to MainForm end; procedure TUniLoginForm1.UniButton2Click(Sender: TObject); begin ModalResult := mrcancel; // Invalid Login exit from app end; Once user is logged in and MainForm is displayed, there are two ways to terminate the session. You can terminate the session and return to LoginForm by returning mrok as ModalResult or terminate the session by returning mrcancel. For security reasons existing session is always terminated before displaying the LoginForm. i.e. each new login.starts a new session by default.

28 MainModule Application MainModule MainModule can be considered as heart of each session. It is a special purpose DataModule which is automatically created and added to project each time a new project is created. MainModule has a many important roles in a unigui application. Some of these roles are not visible to the developers. For developers MainModule can be a used a central module to place session's shared resources, such as database connections, shared variables and etc. For example, you can declare public variables in MainModule's public section and then access it from other forms in session. Below example demonstrates a common practice in unigui to share data among various forms in a session. Since each session has its private copy of MainModule it will be ensured that each form will access its private set of data in its session. TUniMainModule = class(tuniguimainmodule) private { Private declarations } public { Public declarations } ausername, apassword: string; end; Later you can access these variables from other forms in application: procedure TMainForm.UniButton1Click(Sender: TObject); begin UniLabel1.Caption := UniMainModule.aUserName + ' ' + UniMainModule.aPassword; end; Also see Web Sessions ServerModule unigui ServerModule

29 Technology Overview 29 Each unigui application contains a special data module named ServerModule which is the core module of the application. It is a singleton, which means it is created only once per application. It is mainly used to configure various server settings. ServerModule will be covered in more details in other sections ServiceModule A ServiceModule is only created when project type is Windows Service. It a descendant of Delphi's standard TService class. It allows to configure Windows Service related parameters including service name, service type and etc DataModules unigui supports adding DataModules to project. This will allow developers to design their app like a standard VCL application divide application business logic among several DataModules. The important thing to remember is that while unigui DataModules are identical to standard VCL DataModules in nature, they must be created using unigui wizard to ensure each session will have its own private copy of that DataModule. If DataModule is created using standard IDE wizard that module will not be compatible with unigui session management system so it should be avoided. Using unigui w izard to create a new DataModule

30 Frames unigui has complete support for frames. Frames must be created using unigui IDE wizard. Using unigui w izard to create a new Fram e An em pty unigui Fram e

31 Technology Overview 3.5 Special Objects UniApplication Object 31 UniApplication returns an instance of TUniGUIApplication for current session. For each session UniApplication's main role is to be owner for MainForm, MainModule and all other forms and DataModules which belong to current session. It is globally available and can be accessed inside unigui control event handlers. UniApplication has several useful properties which can be used to obtain various information regarding the associated session. For example, url parameters, client screen width, client screen height, device type, information related client PC and cookies. For each session an instance of UniApplication is created and all forms and data modules in projects will be owned by this instance UniApplication. When a form is created in code its owner must be set as UniApplication too. procedure TMainForm.UniButton2Click(Sender: TObject); begin with TUniForm2.Create(UniApplication) do ShowModal(); end; UniApplication itself is actually a function which returns the correct instance of TUniGUIApplication for current session: unit uniguiapplication; interface function UniSession: TUniGUISession; function UniApplication: TUniGUIApplication;... For this reason UniApplication should only be accessed inside an event handler which is fired from a unigui control. procedure TMainmForm.UnimButton1Click(Sender: TObject); begin if upandroid in UniApplication.UniPlatform then ShowMessage('This is an Android device!'); end;

32 UniSession Object UniSession returns an instance of TUniGUISession class for current session. It contains all information related to a session. Among these there are important information such as IP Address, User Agent, Host Address, Platform related data and etc. UniSession also contains important methods which can be used to control a session. For example you can call Terminate method to terminate a session: procedure TMainForm.UniButton2Click(Sender: TObject); begin UniSession.Terminate; // Terminate current session end; procedure TMainForm.UniButton2Click(Sender: TObject); begin UniSession.UrlRedirect(' // Redirect current window to a new locati end; Like UniApplication, UniSession object has a valid instance only when accessed from a unigui control event handler. Here we are referring to controls which belong to a session. For example, a TUniButton instance always belongs to a session. procedure TMainForm.UniButton2Click(Sender: TObject); var IPAddress : string; begin IPAddress := UniSession.RemoteIP; // We are in an event handler from a TUniButton, so UniSes end; In below example accessing UniSession object will cause an access violation because UniThreadTimer is not an unigui control and its events are not associated with any session. UniThreadTimer events run asynchronously in a separate thread. procedure TMainForm.UniThreadTimer1Timer(Sender: TObject); var IPAddress : string; begin IPAddress := UniSession.RemoteIP; // this will cause an access violation error because there end; It can be confusing that how UniSession can be a global object and still hold different values when accessed from different sessions. The answer is that just like UniApplication, UniSession is actually a global function declared in uniguiapplication.pas. This function returns correct session instance when called inside an event handler. unit uniguiapplication; interface function UniSession: TUniGUISession; function UniApplication: TUniGUIApplication;...

33 Technology Overview UniServerInstance Object UniServerInstance is a global function defined in uniguiserver.pas and returns the global instance of ServerModule object which is a singleton. There are some reasons that we have used a function instead of a variable here. One reason is to make sure that UniServerInstance is accessed as read only. unit uniguiserver; interface function UniServerInstance: TUniGUIServerModule;... 4 Developer's Guide 4.1 Creating a New unigui Application Creating a new unigui project is quite easy. All needed is to point Delphi IDE to unigui Application Wizard. Select File->New ->Other

34 34 Select unigui for Delphi -> Application Wizard Select a Project Type

35 Developer's Guide Standalone Server Project A Standalone Server project is the most simple type of a unigui project. It creates an application which runs similar to a desktop application. i.e.application is started and terminated by user. This type of application is best for debugging purpose. Below is the sample DPR file for a typical newly created Standalone Server project. Also see Deployment Options. program Project1; uses Forms, ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule}, MainModule in 'MainModule.pas' {UniMainModule: TUniGUIMainModule}, Main in 'Main.pas' {MainForm: TUniForm}; {$R *.res} begin Application.Initialize; TUniServerModule.Create(Application); Application.Run; end Standalone Server / ISAPI Module Project This type of project is a combo project which has a dual type. It can both be a Standalone server and an ISAPI Module. This type of project is very good to start with if ISAPI Module deployment will be targeted for use production. You will be able to convert your Standalone server to an ISAPI DLL by simply commenting out the first line of DPR file. Also see Deployment Options.

36 36 {$define UNIGUI_VCL} // Comment out this line to turn this project into an ISAPI module' {$ifndef UNIGUI_VCL} library {$else} program {$endif} Project1; uses uniguiisapi, Forms, ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule}, MainModule in 'MainModule.pas' {UniMainModule: TUniGUIMainModule}, Main in 'Main.pas' {MainForm: TUniForm}; {$R *.res} {$ifndef UNIGUI_VCL} exports GetExtensionVersion, HttpExtensionProc, TerminateExtension; {$endif} begin {$ifdef UNIGUI_VCL} Application.Initialize; TUniServerModule.Create(Application); Application.Run; {$endif} end. By default above project will produce an EXE file which is an Standalone server. If you change the first line of project it will turn into an ISAPI module. Later you can convert it back to Standalone EXE mode by removing the comment from first line. Here is how it works. Steps to convert a combo project to an ISAPI DLL: 1. Open DPR file. 2. Change first line of DPR file to: {.$define UNIGUI_VCL} 3. If your Delphi edition is XE2 or newer then you need to close your project and open it again. (This step is not needed if your Delphi version is older than XE2) 4. Build your application. 5. DLL file will be created in related folder. Steps to convert a combo project back to Standalone mode: 1. Open DPR file. 2. Change first line of DPR file to: {$define UNIGUI_VCL} 3. If your Delphi edition is XE2 or newer then you need to close your project and open it again. (This step is not needed if your Delphi version is older than XE2) 4. Build your application. 5. Your project will be compiled to EXE file again.

37 Developer's Guide ISAPI Module Project If you plan to start an ISAPI Module project and choose it as the default deployment method you can select this type of project. It is apparent from the DPR file that this project will produce a DLL when it is compiled: For deployment options plesee see ISAPI Module section. ISAPI modules can be deployed to Microsoft IIS server or Apache server for Windows. Also see Deployment Options. library Project1; uses uniguiisapi, ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule}; {$R *.res} exports GetExtensionVersion, HttpExtensionProc, TerminateExtension; end Windows Service Project Another deployment method for production environment is Windows Service. It creates a standard Delphi Windows Service project with few modifications to allow creation of a unigui ServiceModule. Service projects allows creation of standard Windows Service executables which can be installed like any regular Windows Service. A Windows Service is automatically started by OS and it is always available as long as server OS is running. This provides a high level of availability for unigui application. Also see Deployment Options. program Project1; uses SvcMgr, ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule}, MainModule in 'MainModule.pas' {UniMainModule: TUniGUIMainModule}, Main in 'Main.pas' {MainForm: TUniForm}, ServiceModule in 'ServiceModule.pas' {UniServiceModule: TUniGUIService}; {$R *.res} begin if not Application.DelayInitialize or Application.Installing then Application.Initialize; Application.CreateForm(TUniServiceModule, UniServiceModule); Application.Run; end.

38 Application Design Considerations There are certain aspects which make a unigui web application different from a desktop application. A desktop applications is designed to run as a single instance on desktop and it is able to use all system resources available to it. Most of the time this will result in poor application design, as developers don't see a need to optimize resource usage. With advancement of computer technology new systems are equipped with more resources with each new model. 10 years ago PCs with 128mb of RAM where considered as entry level while today this limit is upgraded to at least 2 GB of memory. This may lead developers to adopt wrong practices when designing applications which overuse of system resources. Unlike a desktop application where a single user session runs inside a single process, a web application is where several user sessions run in same process instance. In this case resource management can be a vital task which should be taken seriously. Another important difference is shared resources. Again in a desktop application all resources are dedicated to same user session while in a unigui web application resources are shared among several user sessions. Any mismanagement in resources may affect web application server's health which may lead to server instability. One example for resource mismanagement is memory leaks. In a desktop app memory leaks can be a serious issue if desktop app runs for a very long period of time. SInce desktop apps are mainly used for a few hours per day, mainly working hours, such memory leaks will not lead to serious issues. However, in a web application memory leaks can seriously affect server stability in a short period time. Web application servers are intended to work in a 24/7 manner, so any resource management related issue can build-up over time and cause server to run out of resources. Such conditions can lead to applictaion server instability and eventually to server crash. When discussing shared resources it is good to mention memory corruption problems. Again, in a desktop application memory corruption issues can remain undetected for a long time because such corruptions may not produce dangerous side-effects, but in a web application memory is allocated and disposed at a very high rate in multiple threads, so any sort of memory corruption can lead to serious server instability and erratic application behavior. Finally, a unigui web application is a heavily multi-threaded environment where multiple sessions can be executed in simultaneous threads. As a result, components used in unigui must be fully multi-thread proof. Components which are not compatible with mult-threaded environment will cause serious issues which again will lead to instability of web server General Design Concept Each unigui application is created with a MainForm, a MainModule and a ServerModule. As described before MainModule and MainForm are created in a per session basis while ServerModule is a singleton. Additional to MainModule you can add extra DataModules to your application. A LoginForm can also be added if needed. MainModule is automatically created with your application and internally it performs many important tasks. MainModule is best place to place shared resources for a session. Here by saying shared resources we refer to resources which are shared among a session's forms and DataModules. A database connection is a good example for shared resources. We can consider each session as a separate copy of web application, so like a regular application you need a separate database connection for each application instance. In unigui this can be achieved by placing the connection component on DataModule, so a connection will be created when a new

39 Developer's Guide 39 session is started and destroyed when session is terminated. This will guarantee that each session will use its private copy of database connection. Another example for shared resources can be shared data structures. For instance, each session may need to keep a shared record which holds information about current user. All other forms and DataModules in application should be able to access this structure when needed. Consider below data structure defined in unit MainModule.pas: type TUserInfo = record Name, Surname : string; UserId : Integer; end; Above structure needs to be accessible from other forms in current session, so we must define it as a public property in TUniMainModule: TUniMainModule = class(tuniguimainmodule) private { Private declarations } FUserInfo: TUserInfo; public { Public declarations } property UserInfo: TUserInfo read FUserInfo; end; Above structure will be populated with real user data when user logs in. MainForm can access UserInfo as following: procedure TMainForm.UniFormCreate(Sender: TObject); begin UniLabel1.Caption := UniMainModule.UserInfo.Name + ' ' + UniMainModule.UserInfo.Surname; end; You can see that it can be easily done by accessing UserInfo property of UniMainModule object. Since each session has its private copy of UniMainModule each form in session will access correct instance of UserInfo record. At this point it is good to remind that one should avoid using shared global objects in unigui. For example, one could define TUserInfo as a global variable in MainModule: unit MainModule; interface... var UserInfo: TUserInfo; And access it in MainForm: procedure TMainForm.UniFormCreate(Sender: TObject); begin UniLabel1.Caption := UserInfo.Name + ' ' + UserInfo.Surname; end;

40 40 Above code actually works during initial tests because as long as there is only one active session UserInfo will not be shared and application seems to behave correctly! However, as soon as multiple sessions logs in application starts to behave in a strange way. Such design flaws may remain undetected where few sessions are active at a time, but with an increased load side effects of intial design flaw will become more visible while it may not be easy to spot the source of the problem. For this, it is very important to stick with a correct design pattern from the beginning. Likewise, putting components on ServerModule must be avoided. As described before, ServerModule is a singleton and it will not be created for each session, so for example, putting a database Connection component on ServerModule may work when there are few sessions, but with more sessions you will get unexpected errors which are difficult to detect and debug. Application ServerModule

41 Developer's Guide Web Application Scalability When it comes to web application development, scalability is one of the most important topics. Web applications are designed to server many users. While for some apps 10 simultaneous users can be the maximum, for other application 100 can be the minimum. It is one of the major differences between a desktop app and a web application. A desktop app is designed for one user only but a web application is designed for multiple users. As number users grow scalability issues may start to show. Many of such issues are related to flawed application design. A web application is designed to serve multiple simultaneous sessions which means more system resource usage with more sessions. Consider that you are porting a desktop application to web application. In your desktop application you have datasets and grids which load all available rows from a table. Now assume that each time a new session starts thousands of rows are fetched from the table and populated in a dbgrid. Consider that the dataset and grid may consume up to a few megabytes of memory each time table is opened. It will pose no issue if it was a desktop application, as all system resources could be dedicated to the desktop app. However, in web application each new session will consume this amount of memory. In this case if you have 100 active sessions and each session consumes 10MB of ram, total consumed memory will be 100 x 10 = 1,000 MB = 1 GB. As you can see memory consumption can easily become huge if your sessions are not optimized for resource usage. This shows importance of resource optimization for applications where scalability is important. There can be cases where scalability doesn't have the highest priority. For example, if you develop a web application for s system with up to 10 users, scalability is not an issue, but for a web application where 100 users is the minimum resource management should be done in a way to make sure your application will never run out of resources. Stress Test Tool can be a great assist in finding scalability issues. Running a stress test can precisely show the maximum amount of memory that your server will consume when certain number of sessions are running. It can be used to test your web application in a worst case scenario and see if it can pass the test under such rare conditions. If your application can pass the stress test it can be deployed to production environment. unigui itself is optimized in many aspects to deal with resource optimization issue. To give some examples, it stores bitmaps in cache files, creates forms when called and destroys them when user closes them, keeps ImageLists in cache file and etc. Likewise, developers should consider adopting a Create Resource on Demand principle to optimize resource usage. One good example can be database tables and related datasets. In a classical Delphi approach a developer may place the connection component and all related datasets on a DataModule, but in unigui it would cause that all datasets be created each time a new session starts. This will pose even more problem if datasets are Active by default. In unigui correct approach is to place connection component on MainModule and place the datasets on related forms or on a temporary DataModule. When you place a dataset on a form, it will be created when form is shown and destroyed when form is closed. This approach will optimize memory usage related to datasets Create Resource on Demand This is an approach which must be followed when designing a scalable web application. The general rule here is to create resource sensitive objects when they are needed not before and destroy them when they are no longer needed.one example is database tables. As described in previous section db tables can load many rows at once which can increase memory usage with

42 42 increased number of rows. It is true especially with memory datasets. Delphi's built-in TClientDataset is an example for memory datasets. In order to make sure dataset is created and loaded with data when it is needed, it is good to place the dataset on a form or frame where db-aware controls exist. Each time user needs to visit that form, form is created and shown along with tables and db aware controls. When user closes form dataset will be freed and used memory is sent back to application memory pool. Same method can be applied to reporting tools. Instead of putting report component on MainModule it can be created just before generation of report and destroyed right after report is generated and saved in a temporary file Database Connections Connections to a database is another resource which should be taken into consideration when it comes to application scalability. As recommended, for each session a connection object should be placed on MainModule. A new instance of connection object will be created when a new session is initiated, so in a typical scenario each session will establish a new connection to the database server. Th,s can pose an issue with scalability if database server can only serve limited number of simultaneous connection. It is the case with many database servers. Some of them have a default limit of a few hundred while some other can handle thousands of connections or more. Again, database connection must be treated as limited resources and your app should not reach the upper limit. You can configure your server to serve a higher number of simultaneous connections, but it is not to the correct way of dealing with this problem. There are ways to deal with this issue: 1. Enabling Connection Pooling. Connection pooling is a method to re-use database connections with same properties. Some database libraries implement pooling by default while others don't implement this feature. You must check your particular connection library to see if pooling feature is available or not. For example, TADOConnection component combined with Microsoft SQL Server enables pooling by default. 2. Using a Middleware Library. When number of concurrent sessions are bigger than upper limit of your database server, one way to overcome this issue is to use a middleware layer. This is one of the purposes of middleware layers to manage database connections in most possible efficient way. A middleware creates a connection when it is needed and frees it when it is no longer used, making it possible to serve many sessions with few number of simultaneous connections. Some middleware libraries internally implements connection pooling which improves performance. Among commonly used middleware libraries in Delphi we can count DataSnap, DataAbstract and kbmmw Third party Component Libraries There are few applications which may not rely on third party component libraries. Third party libraries help to create feature rich application with expanded functionality. In some cases using a third party is mandatory. For instance, a database engine may need a special set of components to perform connection and making queries. Reporting is another area where 3rd part tool come to mind. When it comes to unigui application 3rd party tool compatibility becomes an important issue. As we decribed in previous sections, stability of web application depends on all elements which consist the application. A buggy, poorly developed or incompatible 3rd party library can lead to server instability. There some important points that must be taken into consideration when choosing for a unigui application:

43 Developer's Guide 43 Compatibility: As described in many place throughout this document, a unigui server is a heavily multi-threaded environment. This means that any tool used along with unigui must be threadsafe. i.e. several instance of component must be capable of running in several threads in parallel. If a component relies on global variables it is very likely to fail in a web application. Likewise, if a component relies on embedded VCL controls then it is likely to affect server stability in a harmful way. VCL controls and not thread-safe and it is explicitly stated since early documents related to VCL. Unfortunately, some reporting tools are designed to rely on VCL controls to generate report output. Some 3rd party tools rely on window handles (HWND) and message loops to function. This is another point which can cause serious problems in unigui. unigui doesn't have a main thread and it doesn't implement a message loop. Although Standalone Server borrows a main thread from Delphi's VCL, a main thread is not available in an ISAPI dll. So any 3rd party relying on sending messages is likely to fail in an ISAPI module. You may experience that some apps work properly in Standalone Mode and works differently when deployed as an ISAPI module. It happens because In Standalone mode unigui server implements a VCL Form which is minimized to tray. As a result Application.Run() is called to keep server running until user terminates it. This will create a message loop which allows some incompatible components work to some level. However, in an ISAPI module no VCL form is created and Application.Run() is not called, so any attempt to call SendMessage() will fail to return a result because there is no message loop to process the messages. In order to give a specific example, TRichEdit is a VCL control which is a Memo with styled text. Some reporting tools use it to generate blocks of text with various styles. Like other VCL controls in internally uses SendMessage() to communicate with its Handle (HWND). As described above this will fail and RichEdit fails to render. You may experience that a report containing RichEdit renders correctly when application is deployed in Standalone mode, but doesn't render anything when same app is deployed as Windows Service or ISAPI module. As last example, 3rd party component should not use global variables. They must follow same rules that are applied to unigui applications. Each instance of component must have its own private set of variables to work with and should not rely on global variables or data modules which are not protected. Some third party components need to be configured properly to run in a threaded environment. You must check specific section of related manual for the instructions. Stability: Any 3rd party component which have stability issues will affect stability of unigui application. Component library must be free of bugs and tested against memory leaks.vendor must ensure that it can be used in a multi-threaded environment without any issues. Scalability: 3rd party Components used in unigui must be scalable. There should be no upper limit for number of simultaneous instances of component that may co-exist unless limited by system resources. If there are such limits, developer must be aware of them and design application accordingly.

44 Reporting Tools There are some special guidelines for reporting tools to make sure they run in a compatible mode with unigui. Some reporting tools have special settings for multi-threaded applications. In many cases you need to disable visual dialogs and other VCL related forms from being displayed while report engine is running. Since in unigui you can not display VCL forms, in order to show a report it must be converted to a file first. A commonly used format is PDF format which can be embedded in a browser window or an iframe. In unigui the recommended method to create a report is converting report to a PDF file and displaying it inside a TUniUrlFrame control. For each reporting tool there are different paths to achieve this. Under this topic we will shortly cover a few reporting tools. You can also load and run the related demos to see how it is actually done. Important: As described in previous section, there are some common issues in reporting tools that may affect unigui application stability and scalability. Initial versions of reporting tools mainly were created for desktop applications only. In time they evolved and started to support server applications too, however they may still contain components or code parts which are not compatible with multi-threaded server application For rendering some controls report generator may rely on VCL controls to render the object on a canvas which later will generate the PDF output. Some of the used VCL controls such as TRichEdit uses Windows handles and messaging system to initialize itself. Since VCL controls are not thread-safe and unigui application doesn't implement a message loop, this initialization will fail and RichEdit control will not render anything on the report canvas. You will notice that RichEdit text object is missing in the PDF output. Again, this may work in Standalone Server mode, but again it will not scale when many users try to generate same report. Another issue can be that reporting tool may internally rely on unprotected global variables. Using global variables is prohibited in unigui, so again it may cause stability issues. In order to fully test compatibility of reporting tool with your application it is required to run a Stress Test and fully analyze your application behavior with reporting tool. It is important to make sure both your particular reporting tool and particular report design both can scale up when server is under load FastReport FastReport is a widely used reporting tool for Delphi. In order to use FastReport in a unigui application there are certain rules to follow. FastReport engine must be adjusted so it can cope with unigui multi-threaded environment. First of all, report engine parameters must be adjusted. In below example Report is a TfrxReport object. Report.EngineOptions.SilentMode := True; Report.EngineOptions.EnableThreadSafe := True; Report.EngineOptions.DestroyForms := False; Report.EngineOptions.UseGlobalDataSetList := False; // // // // no dialogs Thread safety Needed for correct operation Do not keep a global list of a datase Next step is to adjust report related settings: Report.PrintOptions.ShowDialog := False; Report.ShowProgress := false; Report.PreviewOptions.AllowEdit := False; // do not show any VCL dialog // do not show report progress

45 Developer's Guide 45 In order to export file you need to use an export component. For PDF files TfrxPDFExport component is used. Here are the related settings: Exp.Background := True; // export in background Exp.ShowProgress := False; // no progress window Exp.ShowDialog := False; // no dialogs Exp.FileName := UniServerModule.NewCacheFileUrl(False, 'pdf', '', '', AUrl); Exp.DefaultPath := ''; // Assign a u After all settings are done last step is to generate the report: Report.PrepareReport; Report.Export(Exp); Finally, we need to show the report in unigui. The preferred method here is to display it inside a UrlFrame: UniURLFrame1.URL := AUrl; Another method can be sending the report to user by sending it using.unisession.sendfile method. UniSession.SendFile(Exp.FileName); ReportBuilder ReportBuilder is another widely used reporting tool in Delphi. Again here we generate a PDF output of report and direct it to a TUniUrlFrame. lpdfdevice := TppPDFDevice.Create(nil); try lpdfdevice.pdfsettings := ppreport1.pdfsettings; lpdfdevice.filename := UniServerModule.NewCacheFileUrl(False, 'pdf', '', '', AUrl); lpdfdevice.publisher := ppreport1.publisher; // generate the report ppreport1.printtodevices; UniURLFrame1.URL := AUrl; finally lpdfdevice.free; end; Above example demonstrates generation of a PDF output. Full demo is available under.. \demos\report Builder folder.

46 Using a Report Server In some cases where stability and scalability concerns have highest priority, it is wise to use a separate report server. In many cases your reporting tool already provides a server solution which runs in its own service. Your unigui application can generate reports by sending proper requests to the report server. Generated report will be displayed in a TUniUrlFrame as normal Creating Controls at Runtime Enter topic text here Object Lifetime Management Enter topic text here. 4.3 Client-side Scripting One of the advanced features of unigui is the ability to write JavaScript handlers for client side events. i.e. it allows adding JS code for Ext JS events for unigui controls. Each unigui control

47 Developer's Guide Web Deployment Currently there are four options available for deploying your unigui project to the Web. Standalone Server ISAPI Module Windows Service Sencha License Considerations FMSoft Co. Ltd. is an official partner of Sencha Inc. and is granted to distribute OEM copies of Sencha Ext JS and Sencha Touch. UniGUI distributes a partial copy of OEM Sencha Ext JS. Your unigui license grants you using and deploying Sencha Ext JS. However, your OEM copy of Sencha Ext JS can only be used in combination with unigui. You shall not use or distribute OEM Sencha Ext JS for any other purpose other than using it to develop and deploy unigui projects. This library can not be treated as a standalone library and can't be used to create independent software products based on it. Sencha Ext JS/Sencha Touch is distributed as an integrated part of unigui package. Sencha Ext JS/Sencha Touch is not distributed in form of a separate product and you are not granted a separate license for it.

48 unigui Runtime Package unigui Runtime Package is an easy way to distribute unigui runtime files on server where web applications are deployed. Runtime Package can be downloaded from FMSoft Portal. This package is not available for unigui Trial Edition. After installing Runtime Package your web application will be able to find related Ext JS and Sencha Touch files required to run your application. unigui Runtime Package includes a minimal set of Sencha Ext JS/Touch library which is required for unigui application. It also includes other JavaScript library files that will be needed during runtime. You must make sure that installed Runtime Package matches version of unigui package you have used to compile your web application. For instance, if you have used FMSoft_uniGUI_Complete_Pro_ to build your application, you must also make sure that FMSoft_uniGUI_Complete_runtime_ is installed on your server. You can install multiple versions of runtime package on your server, so web applications compiled with different versions of unigui can co-exits on same server. Deploying with Runtime Package requires all related path settings to be their default values. ExtRoot, TouchRoot, UniMobileRoot and UniRoot must be set at their default settings. See below:

49 Developer's Guide Adjusting Paths If you don't plan to deploy your app using unigui Runtime Package and you want to deploy runtime files yourself then path settings must be adjusted accordingly. There are some essential paths for a unigui application which must be adjusted before you deploy runtime files. First of all, you must be sure that your Web Application knows where Ext JS files are located. For this, in your Application ServerModule your must assign a proper path to ExtRoot property. Default value of ExtRoot is "[ext]\" which means Ext JS files are located under where unigui Runtime Package is installed: <InstallFolder>\FMSoft\Framework \unigui\ext-x.y.z.build If you do not install unigui Runtime Package on target PC, you must assign a full or a relative path to ExtRoot. If you assign a relative path it will be relative to ServerRoot and you can use the ".. \..\..\myfolder" partial path notation. The easiest method is to set the ExtRoot to ".\[ext]" and copy the "ext-x.y.x.build" folder to root folder of your web application where application executable or dll module resides. However, for security reasons it is better to put "ext-x.y.x.build" folder in another folder and deploy all "extx.y.x.build" files as read-only. Under IIS you must be sure that your application has enough credentials for a read-only access to "ext-x.y.x.build" folder and its files.

50 50 Some Examples: ExtRoot = "[ext]" ExtJS Files are in <Runtime Pack age InstallFolder>\FMSoft\Framework \unigui/ext-x.y.z.build\ (*Recommended method ) ExtRoot = ".\[ext]" ExtJS Files are in <server root>\ext-x.y.z.build\ ExtRoot = "C:\ExtJS\[ext]" ExtJS Files are in C:\ExtJS\ext-x.y.z.build\ ExtRoot = ".\ExtJS\[ext]" ExtJS Files are in <server root>\extjs\ext-x.y.z.build\ ExtRoot = ".\ExtJS\ext" ExtJS Files are in <server root>\extjs\ext\ In all cases ext-x.y.x.build is translated into a string which represents correct folder for your Ext JS version. For example, if your unigui version is based on Ext JS version then it will be translated to folder name:.\<path>\ext \ Same principle is applicable to uniroot, unimobileroot and TouchRoot properties. Example: UniRoot = "[uni]" unigui JS Files are in <Runtime Pack age InstallFolder>\FMSoft\Framework \unigui/uni-x.y.z.build\ (*Recommended method ) UniMobileRoot = "[unim]" unigui JS Files are in <Runtime Pack age InstallFolder>\FMSoft\Framework \unigui/unim-x.y.z.build\ (*Recommended method ) UniRoot = ".\[uni]" unigui JS Files are in <server root>\uni-x.y.z.build\ UniMobileRoot = ".\[unim]" unigui JS Files are in <server root>\unim-x.y.z.build\ Note: In above cases if "path\uni-x.y.z.build\" folder does not exist, "path\uni\" folder will be used instead. In this case uni-x.y.z.build is translated into library's unigui version. If your unigui version is translated folder name will be uni If you deploy custom unigui themes to your server you can also set a custom folder for theme files. You can use UniPackagesRoot property for this. Default value for UniPackagesRoot is "[unipack]\" which means custom themes are placed in the default location installer installs them. You can change this location by assigning a different value to UniPackagesRoot property. Make sure that "themes" folder from default installation is completely copied to the target folder: UniPackagesRoot = "C:\ext\[unipack]" Themes are in "C:\ext\unipack ages\themes\" folder UniPackagesRoot = ".\themefiles\" Themes are in "<server root>\themefiles\themes\" folder UniPackagesRoot = ".\[unipack]" Themes are in "<server root>\unipack ages\themes\" folder In ServerModule there are two other path related parameters: ServerRoot and CacheFolder.

51 Developer's Guide 51 ServerRoot: ServerRoot defines root path for all relative paths. A blank value points to application startup folder. CacheFolder A unigui server needs a folder to create temporary files. Normally, it is a folder named Cahce created under same folder your module exists. You can change this by assigning a different path to CacheFolder parameter. Under IIS you must be sure that your application has enough credentials for a full access to CacheFolder. If you want assign above properties a value at run time the correct location is OnBeforeInit event of UniServerModule. procedure TUniServerModule.UniGUIServerModuleBeforeInit(Sender: TObject); begin ExtRoot := 'C:\deploy\[ext]'; UniRoot := 'C:\deploy\[uni]'; end;

52 Standalone Server Standalone Server mode is very similar to VCL Application with some differences which makes it a better option for Web deployment. In this mode your application main form is no longer visible on the desktop, instead an icon is placed in Windows taskbar. unigui Standalone Server Double-clicking on this icon will open application control panel. Below you see an initial version of control panel. You can shutdown a running server by right-clicking the icon and selecting Shutdown menu item or you can open server control panel and select Manage->Shutdown from top menu.. One of the advanced features in unigui is accessibility of the Control Panel from web. You can access control panel from this URL:

53 Developer's Guide 53 Default Icon can be customized by either Changing the Delphi Application Icon or assigning a new Icon to ServerModule->Favicon Standalone Server is a good option for debugging your application or when you need a web server where server availability is not very important. To automatically start server you must place a shortcut to server executable in Windows Startup folder. In this mode server will not start until a Windows user logs in. For serious deployment you must choose either ISAPI Module or Windows Service deployment options Windows Service Windows service is created and deployed like other regular Service applications created using Delphi. To install service simply type following command at command line*: MyServiceApp -install You can start service from Windows service manager or type the following command: net start ServiceName When you create a new project default value for service name is: UniServiceModule You can change it from ServiceModule.pas->UniServiceModule->Name To uninstall service: MyServiceApp -uninstall

54 54 *Please note that command line prompt must be started with Administrative rights in order to be able to run above commands.

55 Developer's Guide ISAPI Module Deploying your Internnet application as ISAPI module probably is best method of deployment. You can run several modules together without a need to dedicate a TCP port to each application. You can use all Web Servers which support ISAPI extentions. unigui generated modules are tested with IIS 5.1, IIS 6.0, IIS 7.0 and Apache 2.2. Installing instructions are different for each Web server. Please refer to below sections for instructions: IIS 5.1 IIS 6.0 IIS 7.0 Apache IIS 5 In order to setup an IIS 5 unigui web application first step is to create a new Virtual Directory.

56 56 Select an alias for new virtual Directory. Now assign a folder to newly created alias.

57 Developer's Guide In next step give necessary permissions. Execute permission is required. 57

58 58 After creating a new virtual directory you are ready to deploy your unigui server.copy your ISAPI module and other required files to virtual directory. You must be certain that ISS built-in users IUSR_<ComputerName> and IWAM_<ComputerName> has enough credentials to access your virtual directory and other folders that may be accessed during web application execution. For instance if your ISAPI apps are under folder C:\WebApps then you must give full access to

59 Developer's Guide Your web application can be loaded by browsing to this URL: Also refer to Adjusting Paths for more information. 59

60 IIS 6 In IIS 6 first step is to create a compatible application pool. Give a proper name to the new pool. In Application Pool properties, Recycling Tab uncheck the Recycle worker processes option.

61 Developer's Guide In Performance Tab uncheck the Shutdown worker processes after being idle... option. 61

62 62 Next step is to create a Virtual Directory.

63 Developer's Guide Assign an alias to new virtual directory. 63

64 64 Select the folder where your ISAPI modules are located. Bu sure to grant Execute permission to Virtual Directory.

65 Developer's Guide 65 Now open the properties of newly created Virtual Directory and change the default pool to pool you created in first step.

66 66 There is one further step in IIS 6. Your ISAPI extenstion must added to list of allowed extensions.

67 Developer's Guide 67 Assign a name to your extension, add the extension's module DLL file and check the Set extension status to Allowed option.

68 68 After creating a new virtual directory you are ready to deploy your unigui server.copy your ISAPI module and other required files to virtual directory. You must be certain that ISS built-in users IUSR_<ComputerName> and IWAM_<ComputerName> has enough credentials to access your virtual directory and other folders that may be accessed during web application execution. For instance if your ISAPI apps are under folder C:\WebApps then you must give full access to Also refer to Adjusting Paths for more information.

69 Developer's Guide IIS 7 and Later Like ISS 6, in IIS 7 first step is to create a new Application Pool. Assigne a name to your pool and select No Managed Code option. After creating the Pool open Pool's Advanced settings dialog and make the following modifications: Set Enabled 32-Bit Applications to True. (This option is available in 64-bit versions of Windows)

70 70 Set Disable Overlapped Recycle to True. Set Regular Time Interval to 0 Now add a new Application.

71 Developer's Guide 71 Give it a proper name and adjust the Physical path. It is the path where your module DLL files exist. Select Advanced Settings menu and open Advanced Settings dialog.

72 72 In Advance Settings screen set the Application Pool to one you created in first step.

73 Developer's Guide Next step is to adjust the handler mapping for the application you just created. 73

74 74 In Handler Mappings screen right-click on ISAPI-dll and select Edit Feature Permissions

75 Developer's Guide Check the Execute option and press OK. If you don't see ISAPI-dll in handlers list then you must make sure that ISAPI Extensions are installed in Windows Features. Visit Windows Features to check if it is installed. 75

76 76 Next step is to check Authentication settings:

77 Developer's Guide Make sure Anonymous Authentication is enabled and the default user IUSR is set. 77

78 78

79 Developer's Guide 79 Last step is set ACL bits for web application physical folder. If IUSR is not available in the top list you must add it manually to the list. IUSR is a built-in Windows user account which is available by default. Also refer to Adjusting Paths for more information.

80 ISAPI and CGI Restrictions For IIS versions after 7.0 there is an extra setting needed to make sure your ISAPI module can be loaded by the IIS server. To adjust this setting open IIS Manager and select ISAPI and CGI Restrictions from root server. (See below image) ISAPI and CGI Restrictions Double click on ISAPI and CGI Restrictions icon and open the module settings. Here you have two options. You can either add each ISAPI module individually or allow IIS to run all unspecified ISAPI modules by default.

81 Developer's Guide 81 If you want to enable all ISAPI modules by default select Edit Feature Settings... and check Allow unspecified ISAPI modules. If you want to add modules one by one the select Add... button and add your ISAPI modules as demonstrated in below image:

82 Apache 2.2 Apache 2.2 web server for Windows allows running ISAPI modules. For this, a plugin called mod_isapi must be enabled. Apache doesn't have a visual interface for configuration. You must do some modifications to httpd.conf file. First of all, uncomment the following line: LoadModule isapi_module modules/mod_isapi.so Next you must associate.dll files with ISAPI module. Add the following line AddHandler isapi-handler.dll Next step is add your module directory to Apache directory entries. <Directory "C:/webapps"> Options Indexes FollowSymLinks ExecCGI AllowOverride None Order allow,deny Allow from all </Directory> Finally create a new Alias for your directory. Alias /mywebapps "C:/webapps" Be sure to restart your Apache server after making the necessary modifications to httpd.conf file SSL Configuration unigui supports SSL protocol for Standalone Server and Windows Service applications. Let's emphasize that built-in SSL support is only for Standalone and Windows Service applications. In ISAPI mode you must configure SSL by configuring your particular ISAPI server; IIS, Apache and etc.

83 Developer's Guide 83 First step to configure SLL is to obtain the required certificate files. In Standalone and Service modes unigui uses Indy as the underlying TCP transport layer. There are three files which you must provide here: root.pem cert.pem key.pem As you can see files are in pem format. Pem files are a human readable base64 ascii files which can be opened and edited in an editor. A pem file may contain a single certificate or more than one certificate. In order to work with Indy each pem file must contain only one certificate. Below sample shows contents of a pem file: -----BEGIN CERTIFICATE----MIIB8jCCAV+gAwIBAgIQfjGd2Py0qZJGqdkPiRlDdjAJBgUrDgMCHQUAMBAxDjAM BgNVBAMTBWVsaXRlMCAXDTEzMDYwMjE3NTA0OFoYDzIxMTMwNTA5MTc1MDQ4WjAQ MQ4wDAYDVQQDEwVlbGl0ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt3pi pmyhnzuuelzbb1emrpop6emta/klylak94vlm1lv/6itiuftuss9gq0s516s2th7 FUkBpgfQvrb+3b9h10WMca8MTbYrLGL+dHqRk4jGt/8GAUeYHkKddk/NeXkZWqaD 3aMdURpTgE2iK/d86C1YdsxqXTxP+Uax/eN4RUECAwEAAaNTMFEwFQYDVR0lBA4w DAYKKwYBBAGCNwoDBDAtBgNVHREEJjAkoCIGCisGAQQBgjcUAgOgFAwSZWxpdGVA RUxJVEUtUFJJTUUAMAkGA1UdEwQCMAAwCQYFKw4DAh0FAAOBgQCDSHm54tMh1sPY abrpzeztbt9e1gpz2b/gd7u2kgk46ym8oqq3llnpatc96q2ocd9sl3gp1b2itwx/ THOgUX7MpUipfUg6+8te6A7//gjiGyCf/OauJJrHal8p2QPwecGo3YnxUvTCu9gH +ige3yqxv/6yqgdjgnpndavvx9gefq== -----END CERTIFICATE----- There are two types of certificate you can use along with your unigui server. You can either use a certificate issued by a certificate authority or you can use a self-signed certificate for development, test and / or private use.

84 Obtain a SSL Certificate from an Authority SSL certificates are published by companies which are specialized in issuing and hosting SSL certificates. In order to obtain such a certificate you need to make a contract and purchase a certificate dedicated to your company. This certificate will be known to whole web and will contain information regarding your company, the certificate issuer and your web site. Exam ple for a secured w eb site First step is to create a CSR (Certificate Signing Request) file. There are several tools to create s CSR file. OpenSSL is best tool which is widely used for such tasks. After you created the CSR file you must send it to your certificate authority and they will verify information you provided in the CSR file. Upon a successful verification they will sign your certificate and issue required certificate files. Your certificate authority will guide you in process of creating a CSR file and rest of application process. After a successful application you will receive your certificate files. As described in previous section you need three files to distribute with your server: root.pem, cert.pem and key.pem. Note: sometimes cert.pem and key.pem can be issued as a single file. In this case you need to open this file with a text editor and save the individual certificates in separate pem files.

85 Developer's Guide Generate a Self-Signed Certificate This kind of certificate is good when you don't need a globally signed certificate issued by a certificate authority such as Verisign. You can use a self-signed certificate for development purpose or for private use in your intranet network or over the internet. You can use OpenSSL to generate related certificate files. First of all download and install OpenSSL Windows binaries from here. After installing open a command prompt and follow below instructions. We recommend downloading the lite version of the binaries: Win32 OpenSSL v1.0.1e Light Win64 OpenSSL v1.0.1e Light a) Generate a self-signed Root certificate. If you already have a root certificate installed in Windows you can try exporting it instead of generating a new one. Simply go to Control Panel and click the Internet Options -> Content -> Certificates. Select the root certificate you want to export. Choose the base64 format and select folder and file name to export. This will export your root certificate in.cer format which can safely rename it to.pem and use it in your unigui project. You can also create a root certificate from scratch. At command prompt issue following command: openssl genrsa -out root.key 1024 This will create a new root.key file with strength of 1024 bit. Other options are 2048 and Normally 1024 bit is enough. If you want to create a root key with a password use below command instead: openssl genrsa -des3 -out root.key 1024 Next step is to self-sign the certificate. openssl req -x509 -days 365 -new -nodes -key root.key -out root.pem If your root key is created with a password use below command instead: openssl req -x509 -days 365 -new -key root.key -out root.pem Now you will be prompted to provide several details needed to sign your certificate. You will also be prompted for a password if your root.key file is created with a password in first step.

86 86 Enter pass phrase for root.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [AU]:TR State or Province Name (full name) [Some-State]:Ankara Locality Name (eg, city) []:Cankaya Organization Name (eg, company) [Internet Widgits Pty Ltd]:FMSoft Organizational Unit Name (eg, section) []:R&D Common Name (eg, YOUR name) []:Farshad Mohajeri Address []:info@fmsoft.net Note: 365 is the number days which certificate will remain valid. This will place a new root.pem file in same folder. This file will be used in your unigui server. b) Generate a self-signed key. Next step is to generate a self-signed key. This step will produce the key.pem and cert.pem files. At command prompt issue the following command: openssl req -x509 -days 365 -nodes -newkey rsa:1024 -keyout key.pem -out cert.pem Again, you'll be prompted to answer several questions. Loading 'screen' into random state - done Generating a 1024 bit RSA private key writing new private key to 'key.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [AU]:TR State or Province Name (full name) [Some-State]:Ankara Locality Name (eg, city) []:Cankaya Organization Name (eg, company) [Internet Widgits Pty Ltd]:FMSoft Organizational Unit Name (eg, section) []:R&D Common Name (e.g. server FQDN or YOUR name) []:Farshad Mohajeri Address []:info@fmsoft.net

87 Developer's Guide 87 To create same key with a password use below command: openssl req -x509 -days 365 -newkey rsa:1024 -keyout key.pem -out cert.pem This time you'll be prompted to enter a password: Enter PEM pass phrase: Verifying - Enter PEM pass phrase: This password will be assigned to SSL->SSLPassword parameter of UniServerModule. (See SSL Configuration ) When all above procedures are completed you will end up with three files named root.pem, key.pem and cert.pem which are required to setup and run your project in SSL mode.

88 Configure SSL Parameters Copy all three pem files to same folder your unigui server executable resides. You also need OpenSSL standard DLL library files. libeay32.dll ssleay32.dll These DLL files are distributed as a part of OpenSSL installation. You can also find the most recent version of OpenSSL DLL files under below folders: [UniGUI Installation Folder]\..\Framework\uniGUI\SSL\dll\x86 [UniGUI Installation Folder]\..\Framework\uniGUI\SSL\dll\x64 Depending on how you deploy your app you can copy them under Windows system folder (such as C:\Windows\System32 ) or put them in same folder as your unigui server. Note: There is a chance that above dll files are already installed by other programs and already present in your system path. In this case you must make sure that most recent versions of dlls are installed. Next step is to open your project's ServerModule and make the following changes: SSL->Enabled = True SSL->SSLOptions->CertFile = cert.pem SSL->SSLOptions->KeyFile = key.pem SSL->SSLOptions->RootCertFile = root.pem If you have protected your key files with a password then you need to assign it here: SSL->SSLPassword = [Password] Next parameter to confgure is the SSL port. You can leave it to default value which is 0. In this case you can access your server through port which is configured in ServerModule -> Port which default value is 8077.

89 Developer's Guide 89 Or you can use the default port for SSL whch is 443. Since 443 is the default value you can omit the port number in address: Normally you only want to use https protocol for a secured web application, but if for any reason you need both http and https protocols for same site you can enable them by assigning different ports to each protocol. Consider the following configuration: ServerModule->SSL->SSLPort = 443 ServerModule->Port = 8077 In above configuration you are able to access standard http protocol from port 8077 and access https protocol from port 443. If you choose the default port of 443 for SSL make sure neither IIS nor any other web server software is not listening on this port.

90 Adjusting Folder Access Rights A unigui web server requires access to several folders to read, write or create files during server lifetime. Many of such files will be created under Cache folder which is used to store all unigui temporary files including session temporary files. Depending on deployment method web server will be bound to a Windows user account. For a Standalone server this account will be current Windows user account. For a Windows Service this will be one of the LOCAL SYSTEM, LOCAL SERVICE or NETWORK SERVICE accounts. It can also be any other user account. For an ISAPI module this account will be one of the IUSR, IUSR_<ComputerName>, IWAM_<ComputerName> or IIS_IUSR built-in accounts. The account name varies between different IIS version. For most recent versions of IIS, IUSR account is used when Anonymous Authentication method is enabled. Please see ISAPI Module section for details. After determining the correct Windows account necessary permissions must be granted to the folders. Full permission must be granted to web application physical folder. Go to Security tab and add the correct user account to the list of account. For instance, if you are adjusting access rights for an ISAPI module then you must grant full access to IUSR account for web application physical folder and its sub folders:

91 Developer's Guide 4.5 Stress Test Tool Introduction 91 Scalability is one of the major concerns when developing web applications. Each web application must be able to serve multiple users. Number of users can vary depending on type of application. An application designed for a small intranet may be targeted by concurrent users at most while an internet web application may be used by more than simultaneous users. In order to make sure your web application is ready for deployment in multi-user production environment several tests must be performed. Firstly, application must be analyzed for its resource usage. For a desktop app where only a single instance of your app is running resource usage will not be your main concern because your application can use all of resources available in system. On the contrary, a web application server is designed to serve multiple users and each user can be dedicated only a fraction of available resources. Scalability simply means ability of your project to scale up when number of sessions increases in a real world system. A scalable web app should use several techniques to manage and use system resources in most efficient way possible. For example, if each of your sessions consumes ~1000 KB of memory (~1MB) in this case a web app running 400 sessions will require at least 400 MB of physical/virtual memory to run properly. However, if each session consumes more than 10MB then it is easy for your app to run out of memory when there are more than 100 active sessions. Other system resources such as disk space, database connections and etc. should also be taken into account. For developers it may not be an easy task to simulate production environment on his/her desktop. Your app maybe running smoothly when there are only a few sessions, but when number sessions start to pass above a certain threshold several resource related issues and scalability problems may arise. To deal with such scalability issues unigui is equipped with a very useful named Stress Test Tool which aims to simulate a multi-user environment right on your desktop. Stress Test Tool is located under..\unigui\utils\stresstesttool folder and it is deployed with full source code so it can be customized by developers if needed. This tool introduces many advanced features which enables developers to simulate a production environment under heavy load.

92 Usage Here is the main form of stress test tool: Using this tool you can record a web session and then playback to simulate multi-user behavior in production environment. Stress test tool an stores each test environment in a project file which can be used later to repeat the test. A project saves all of your recorded sessions and test parameters. It is good to create a separate Stress Test project for each unigui project. unigui Stress projects are stored under Projects folder with a extension of (*.uprj) Recording a Session Recording a session is an easy task. First of all, you must compile your server with ServerModule->Options>soAllowSessionRecording = True. This parameter must be set to False once your app is ready for production. Build and run your unigui server.

93 Developer's Guide 93 In Stress Test Tool set Url to Web Application to Url address of your server. If your server is running in same machine a typical address would be Press the Record button. This will launch a new browser window which will show main form of your web application. This action will use your system default web browser. Session Recoding At this stage you can start using web application by navigating in menus, forms, grids and etc. All of your actions will be recorded. You can continue recording this session until you think all required menus, forms, grids and functions of your app are fully visited. When you are done you can terminate your web application.

94 94 Now switch to Stress Test Tool and press the Stop button. This finish your record session and adds it to list of available records for this project. You can save your project using Save button. Important: A session must be recorded in a way that session output is always predictable i.e. it will always produce same HTML content. For example, pressing Button1 should always open Form1 and selecting menu item User1 should always show a frame named TUserFrame. Normally, it is the case for 99% of web applications where each user action results same output. There are certain cases where user action may not produce a predictable result. Inserting rows in a DBGrid is an example for this case. When user inserts a new row it creates a new grid row and also a new grid page after certain number of rows are inserted. This means that each inserts produces a different JavaScript content which is not predictable and it totally depends on current number of rows in the attached database table. For this, it is recommended to avoid inserting data into a DBGrid while recording a session.likewise deleting or editing a row may not run properly during session playback. Consider that your table contains 100 rows and you delete a single row while recording. When you playback 100 instances of same session will try to delete same row while only one session can actually delete it Running the Stress Test Running a stress test by playing a previously recorded session is an advanced feature which will help you to simulate a real time multi-user environment. After you have one or more recorded sessions you can proceed with actual stress test procedure. Stress test tool will play back a session by sending sequences of recorded Ajax requests to server. This will simulate an environment where many users are using the web application. It is important to know that play back process does not run your web application in a real browser window. The simulation is performed by sending previously recorded Ajax packets to server in the exact order generated while recording a session.

95 Developer's Guide 95 To run a stress test you must follow below steps: Make sure that you don't run the Stress Test Tool in IDE and in debug mode. Running in debug mode will highly reduce speed and performance of the Stress Test Tool. It is better to compile it and run the executable directly. To record and playback a mobile session you must explicitly add '/m' to end of the application Url. Load a saved project or record a new a session if there are no recorded session available. (see previous section to see how sessions can be recorded). Adjust various test parameters: Total sessions per run: This is the number of sessions which will be created in each run. It is proper to start with a low value and increase it gradually. This value should be a value lower or equal to server's ServerModule->ServerLimits->MaxSessions property. Max Worker Threads: Number of worker threads used to communicate with the server. This should be a value lower or equal to server's ServerModule->ServerLimits->MaxRequests property. Total number of runs: Total number of times that recorded session will be played. Delay between runs: Number of seconds to wait before a new run starts Playback Speed: Using this parameter you can adjust the speed at which session is simulated. If you choose Max Speed no delay will be inserted between Ajax calls so your session will be played at max speed. You can also choose Real Time which will try to simulate playback close to the original timing of the recorded session. Start server monitor by pressing button. Now you can press Start button which to start the actual stress test. Start monitoring your server by analyzing various real time information displayed in server monitor:

96 96 Sessions: It shows number of sessions that are running in your unigui server. Peak value shows maximum number of sessions that where running during server lifetime. Requests: Number of pending Ajax requests which are currently being processed by the server. Purged Files/Folders: These are files or folders which no longer belong to a session, but not erased yet. Framework will gradually delete purged files and folders in a background thread. Under normal conditions this value should eventually become zero. Bytes: Number of bytes Sent/Received during server lifetime. Uptime: Time passed since server has been started. Memory: It is one of the vital information which you need to constantly keep an eye on while performing the stress test. It will show total amount of memory your server application is consuming. It is important especially when your server is a 32-bit app. While 32-bit application can consume up to 2 GB of RAM in theory, in practice any memory usage value above GB means that your application is in danger zone. That happens because memory used by unigui app will be fragmented over time. For this and for other reasons Delphi memory manager can not use a total of 2.0 GB of RAM for a 32-bit unigui server. When your app runs out of memory it will start logging "Out of Memory" messages and user will also see this warning when a new session is started. This is a serious situation and may produce unpredictable results which will eventually lead to a server crash. If you are concerned with memory usage and your app will use more than 1GB of RAM it is better to target your server for 64-bit platform. In a 64-bit server it is very unlikely to get an "Out of Memory" error because even when physical RAM is consumed Windows will switch to virtual memory which is limited by swap space available on your hard drive. So in a 64-bit server you can consume memory much larger than the available physical memory. Of course, it must be noted that virtual memory is much slower than physical memory, so in a 64-bit unigui server when your system runs out of physical RAM you will notice a considerable drop in web application's performance and responsiveness. o Memory (Internal/Process): Internal memory is amount of memory internally used by the unigui application. Process memory is the total memory consumed by Windows process which is the unigui application. For example, if your app is an ISAPI dll main process which is an ISAPI worker process will use more memory than internal memory used by the app itself. If your app relies on external dll libraries such as Midas, again memory used by process will be higher than memory used internally.

97 Developer's Guide 97 CPU Load: This will show amount of CPU power currently being used. If your CPU has multiple cores (which is the case for all modern CPUs) this value will show total CPU usage for all CPU cores. An idle unigui server will use very low CPU ticks so when both OS and unigui app are idle CPU usage should not be more than 1%. GDI Handles: GDI handle is a limited system resource which is limited by OS. unigui is optimized in a way to keep GDI handle usage at a very low level. If your app uses components which rely on GDI handles you must check this value to see if it remain within a safe range. A typical unigui app will not consume more than 100 GDI handles when it is in idle state (there are no pending requests) even when there are hundreds of active sessions. unigui is designed in a way so a GDI handle is returned to OS as soon as it is not needed. If you see a constant increase in GDI handle then you must look for components which may leak GDI handles or overuse them. When your app runs out of GDI Handles it will start logging EOutOfResources exceptions in your log file. This is a serious problem which will eventually lead to server crash. Another important step is to monitor your web application log files. Stress test runs in background without any GUI output, so log file is the only way to see if your app runs properly. It is also the only way to see any error logs generated while running the stress test. Log files are placed under. \logs folder where your application's binaries are located. For each calendar day a separate log file is created. You must open related log file in a text viewer/editor and see if there are any unexpected logs such as Access Violations or other important Exceptions. By carefully analyzing the log file you can have a better idea about your application stability and scalability. If you need a more detailed log you can use a more advanced debugging tool such as EurekaLog. Important: You must take this into consideration that each stress test runs same recorded session in simultaneous threads for multiple times from same URL, so it is important to set the ServerModule->SessionRestrict parameter to srnone while you are testing your server Server Flood Protection Considerations Apparently, Stress Test Tool will send lots of requests in a very short periof of time. All these requests are sent from same IP to your unigui application which is being tested. Your server OS may interpret these high volume of requests as a flood DOS (Denial Of Service) attack and start blocking such requests. It may happen especially if you run Stress Test Tool from a remote PC with PlayBack speed set at Max Speed for a long period of time. Since flood detection algorithms varies from OS to OS and highly depends on particular configuration and used server software it is hard to predict when such blockages may occur. When server starts blocking requests you will notice lots of HTTP error messages in right side memo in Stress Test Tool. This shows that requests are being blocked and are not reaching their target. For example, behavior will be different among running unigui app as ISAPI module in IIS, standalone EXE and Windows Service. While running the Stress Test Tool from a remote PC may trigger flood protection, running both unigui app and Stress Test Tool on same desktop should work without triggering any flood protection mechanisms. Additional to server OS some third party protection software such as Kaspersky, Symantec and etc. may add additional layers of protection to your server IP traffic which may disallow fast and continuous requests coming from Stress Test Tool. In such cases you need to slow down playback speed by setting it to Real Time and/or putting a longer delay between Runs to allow the requests pass through the anti-flood detection layers.

98 Additional Settings By nature Stress Test Tool creates hundreds of HTTP requests per second to perform a heavy stress on subject server. This may go beyond the limits of OS which is running the Stress Test Tool. One of these limitations is TCP port limit which is limited to a certain value by OS by default. In order to make a smooth run of Stress Test Tool we need to adjust the TCP port limit and increase it to a higher value. This requires a few registry setting in Windows Registry. Good news this that Stress Test Tool can automatically make this change in registry for you. All you need to do is selecting Other->Adjust Registry Settings in Stress Test Tool. Above dialog will be opened and it will give a brief information about the settings and will ask you to confirm the operation. These changes are totally harmless and will increase TCP port creation limit on your OS.You must make sure that you have started Stress Test Tool as administrator to be able to make this change. A successful operation will show below message and ask you to restart your PC to finalize the operation.

Delphi XE. Delphi XE Datasheet

Delphi XE. Delphi XE Datasheet Delphi XE Datasheet DATASHEET Delphi XE Embarcadero Delphi XE is the fastest way to deliver ultrarich, ultra-fast Windows applications. Used by millions of developers, Delphi combines a leading-edge object-oriented

More information

Workstation Configuration Guide

Workstation Configuration Guide Workstation Configuration Guide August 13, 2018 Version 9.6.134.78 For the most recent version of this document, visit our documentation website. Table of Contents 1 Workstation configuration 4 1.1 Considerations

More information

Workstation Configuration

Workstation Configuration Workstation Configuration December 15, 2017 - Version 9.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

More information

RAD Studio XE Datasheet

RAD Studio XE Datasheet RAD Studio XE Datasheet DATASHEET Embarcadero RAD Studio XE Complete solution for Windows,.NET, PHP and Web application development Embarcadero RAD Studio XE is a comprehensive rapid application development

More information

MYOB Advanced Business

MYOB Advanced Business MYOB Advanced Business On-Premise Installation Last Updated: 24 November 2014 Contents Introduction 1 Pre-Requisites 1 Web Browsers... 1 Server Hardware and Software... 1 Database Hardware and Software...

More information

Workstation Configuration

Workstation Configuration Workstation Configuration December 12, 2017 - Version 9.4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

More information

Checklist for Testing of Web Application

Checklist for Testing of Web Application Checklist for Testing of Web Application Web Testing in simple terms is checking your web application for potential bugs before its made live or before code is moved into the production environment. During

More information

This section of the release notes is reserved for notable changes and new features since the prior version.

This section of the release notes is reserved for notable changes and new features since the prior version. Release Notes Browsium Proton 4.1 Product Version: 4.1.0 Release Notes Updated: 15 October 2016 About this Release This document lists new features and known issues as of the release date. If you discover

More information

RAD Studio Product Address

RAD Studio Product Address RAD Studio Product Address Marco Cantu DevTracks 18/4/18 1 Presented by Marco Cantù RAD Studio Product Manager marco.cantu@embarcadero.com @marcocantu WHAT IS RAD STUDIO? What is RAD Studio? The fastest

More information

Workstation Configuration

Workstation Configuration Workstation Configuration September 22, 2015 - Version 9 & 9.1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

More information

Getting Started Guide. Version 4.4

Getting Started Guide. Version 4.4 C i s co EnergyWise Management Getting Started Guide Version 4.4 Contents Introduction to Cisco EnergyWise Management...4 Setup & Installation...5 System Requirements (Single Server Installation)...5 Installation...6

More information

Microsoft Windows Servers 2012 & 2016 Families

Microsoft Windows Servers 2012 & 2016 Families Version 8 Installation Guide Microsoft Windows Servers 2012 & 2016 Families 2301 Armstrong St, Suite 2111, Livermore CA, 94551 Tel: 925.371.3000 Fax: 925.371.3001 http://www.imanami.com Installation Guide

More information

Getting started 7. Setting properties 23

Getting started 7. Setting properties 23 Contents 1 2 3 Getting started 7 Introduction 8 Installing Visual Basic 10 Exploring the IDE 12 Starting a new project 14 Adding a visual control 16 Adding functional code 18 Saving projects 20 Reopening

More information

Cross-Browser Functional Testing Best Practices

Cross-Browser Functional Testing Best Practices White Paper Application Delivery Management Cross-Browser Functional Testing Best Practices Unified Functional Testing Best Practices Series Table of Contents page Introduction to Cross-Browser Functional

More information

Installing Sentry-go Quick Monitors, Sentry-go Plus!, Client Tools & Enterprise Reporting

Installing Sentry-go Quick Monitors, Sentry-go Plus!, Client Tools & Enterprise Reporting Installing Sentry-go Quick Monitors, Sentry-go Plus!, Client Tools & Enterprise Reporting 3Ds (UK) Limited, November, 2013 http://www.sentry-go.com Be Proactive, Not Reactive! This guide gives full details

More information

Quick Start Guide. Version R92. English

Quick Start Guide. Version R92. English Agent Configuration and Deployment Quick Start Guide Version R92 English October 23, 2015 Copyright Agreement The purchase and use of all Software and Services is subject to the Agreement as defined in

More information

Trend Micro Incorporated reserves the right to make changes to this document and to the products described herein without notice. Before installing and using the product, please review the readme files,

More information

Trend Micro Incorporated reserves the right to make changes to this document and to the products described herein without notice. Before installing and using the product, please review the readme files,

More information

This section of the release notes is reserved for notable changes and new features since the prior version.

This section of the release notes is reserved for notable changes and new features since the prior version. Release Notes Browsium Proton 4.0 Product Version: 4.0.0 Release Notes Updated: 9 August 2016 About this Release This document lists new features and known issues as of the release date. If you discover

More information

TTerm Connect Installation Guide

TTerm Connect Installation Guide Host Connectivity. Any Host, Any Device. TTerm Connect Installation Guide What is TTerm Connect? TTerm Connect is Turbosoft s web based terminal emulator. Built on common web technologies such as HTML5,

More information

Delphi Day, June Delphi 10 Tokyo for Windows 10 and More

Delphi Day, June Delphi 10 Tokyo for Windows 10 and More Delphi Day, June 7 2018 Delphi 10 Tokyo for Windows 10 and More 1 Presented by Marco Cantù RAD Studio Product Manager marco.cantu@embarcadero.com Twitter @marcocantu Embarcadero for Developers Focused

More information

Citrix Connector Citrix Systems, Inc. All rights reserved. p.1. About this release. System requirements. Technical overview.

Citrix Connector Citrix Systems, Inc. All rights reserved. p.1. About this release. System requirements. Technical overview. Citrix Connector 3.1 May 02, 2016 About this release System requirements Technical overview Plan Install Citrix Connector Upgrade Create applications Deploy applications to machine catalogs Publish applications

More information

Modern Requirements4TFS 2018 Update 1 Release Notes

Modern Requirements4TFS 2018 Update 1 Release Notes Modern Requirements4TFS 2018 Update 1 Release Notes Modern Requirements 6/22/2018 Table of Contents 1. INTRODUCTION... 3 2. SYSTEM REQUIREMENTS... 3 3. APPLICATION SETUP... 3 GENERAL... 4 1. FEATURES...

More information

LabWare 7. Why LabWare 7?

LabWare 7. Why LabWare 7? LabWare 7 Why LabWare 7? LabWare v1 to v6 were all about adding functionality. LabWare 7 continues that tradition, but places the user experience front and center. This release has been re-designed to

More information

Configuring the Oracle Network Environment. Copyright 2009, Oracle. All rights reserved.

Configuring the Oracle Network Environment. Copyright 2009, Oracle. All rights reserved. Configuring the Oracle Network Environment Objectives After completing this lesson, you should be able to: Use Enterprise Manager to: Create additional listeners Create Oracle Net Service aliases Configure

More information

How Parallels RAS Enhances Microsoft RDS. White Paper Parallels Remote Application Server

How Parallels RAS Enhances Microsoft RDS. White Paper Parallels Remote Application Server How Parallels RAS Enhances Microsoft RDS White Paper Parallels Remote Application Server Table of Contents Introduction... 3 Overview of Microsoft Remote Desktop Services... 3 Microsoft RDS Pain Points...

More information

Silk Performance Manager Installation and Setup Help

Silk Performance Manager Installation and Setup Help Silk Performance Manager 18.5 Installation and Setup Help Micro Focus The Lawn 22-30 Old Bath Road Newbury, Berkshire RG14 1QN UK http://www.microfocus.com Copyright 2004-2017 Micro Focus. All rights reserved.

More information

Print Audit 6. Print Audit 6 Documentation Apr :07. Version: Date:

Print Audit 6. Print Audit 6 Documentation Apr :07. Version: Date: Print Audit 6 Version: Date: 37 21-Apr-2015 23:07 Table of Contents Browse Documents:..................................................... 3 Database Documentation.................................................

More information

Tableau Server - 101

Tableau Server - 101 Tableau Server - 101 Prepared By: Ojoswi Basu Certified Tableau Consultant LinkedIn: https://ca.linkedin.com/in/ojoswibasu Introduction Tableau Software was founded on the idea that data analysis and subsequent

More information

TIBCO LiveView Web Getting Started Guide

TIBCO LiveView Web Getting Started Guide TIBCO LiveView Web Getting Started Guide Introduction 2 Prerequisites 2 Installation 2 Installation Overview 3 Downloading and Installing for Windows 3 Downloading and Installing for macos 4 Installing

More information

Intellicus Getting Started

Intellicus Getting Started Intellicus Getting Started Intellicus Web-based Reporting Suite Version 4.5 Enterprise Professional Smart Developer Smart Viewer Intellicus Technologies info@intellicus.com www.intellicus.com Copyright

More information

Aspera Connect Windows XP, 2003, Vista, 2008, 7. Document Version: 1

Aspera Connect Windows XP, 2003, Vista, 2008, 7. Document Version: 1 Aspera Connect 2.6.3 Windows XP, 2003, Vista, 2008, 7 Document Version: 1 2 Contents Contents Introduction... 3 Setting Up... 4 Upgrading from a Previous Version...4 Installation... 4 Set Up Network Environment...

More information

CloudShell 7.1 GA. Installation Guide. Release Date: September Document Version: 2.0

CloudShell 7.1 GA. Installation Guide. Release Date: September Document Version: 2.0 CloudShell 7.1 GA Installation Guide Release Date: September 2016 Document Version: 2.0 Legal notice Information in this document is subject to change without notice. Without limiting the rights under

More information

This section of the release notes is reserved for notable changes and new features since the prior version.

This section of the release notes is reserved for notable changes and new features since the prior version. Release Notes Browsium Proton 4.2 Product Version: 4.2.0 Release Notes Updated: 3 April 2017 About this Release This document lists new features and known issues as of the release date. If you discover

More information

Workstation Configuration

Workstation Configuration Workstation Configuration Version 8.2 May 2, 2014 For the most recent version of this document, visit our documentation website. Table of Contents 1 Workstation configuration 3 1.1 Custom level Internet

More information

Intraweb versus Morfik

Intraweb versus Morfik Intraweb versus Morfik Michaël Van Canneyt August 2, 2009 Abstract Intraweb - Currently at version 10 - has been around for quite some time. It is a mature technology, and as such can be expected to have

More information

Installation Guide. CloudShell Version: Release Date: June Document Version: 1.0

Installation Guide. CloudShell Version: Release Date: June Document Version: 1.0 Installation Guide CloudShell Version: 7.0.0.8538 Release Date: June 2016 Document Version: 1.0 Legal notice Information in this document is subject to change without notice. Without limiting the rights

More information

Intellicus Enterprise Reporting and BI Platform

Intellicus Enterprise Reporting and BI Platform Getting Started with Intellicus Intellicus Enterprise Reporting and BI Platform Intellicus Technologies info@intellicus.com www.intellicus.com Getting Started with Intellicus i Copyright 2012 Intellicus

More information

Credits: Some of the slides are based on material adapted from

Credits: Some of the slides are based on material adapted from 1 The Web, revisited WEB 2.0 marco.ronchetti@unitn.it Credits: Some of the slides are based on material adapted from www.telerik.com/documents/telerik_and_ajax.pdf 2 The old web: 1994 HTML pages (hyperlinks)

More information

INTEGRATION TO MICROSOFT EXCHANGE Installation Guide

INTEGRATION TO MICROSOFT EXCHANGE Installation Guide INTEGRATION TO MICROSOFT EXCHANGE Installation Guide V44.1 Last Updated: March 5, 2018 EMS Software emssoftware.com/help 800.440.3994 2018 EMS Software, LLC. All Rights Reserved. Table of Contents CHAPTER

More information

icontact for Salesforce Installation Guide

icontact for Salesforce Installation Guide icontact for Salesforce Installation Guide For Salesforce Enterprise and Unlimited Editions Lightning Experience Version 2.3.4 Last updated October 2016 1 WARNING DO NOT SKIP ANY PART OF THIS GUIDE. EVERY

More information

VI-CENTER EXTENDED ENTERPRISE EDITION GETTING STARTED GUIDE. Version: 4.5

VI-CENTER EXTENDED ENTERPRISE EDITION GETTING STARTED GUIDE. Version: 4.5 VI-CENTER EXTENDED ENTERPRISE EDITION GETTING STARTED GUIDE This manual provides a quick introduction to Virtual Iron software, and explains how to use Virtual Iron VI-Center to configure and manage virtual

More information

FUSION REGISTRY COMMUNITY EDITION SETUP GUIDE VERSION 9. Setup Guide. This guide explains how to install and configure the Fusion Registry.

FUSION REGISTRY COMMUNITY EDITION SETUP GUIDE VERSION 9. Setup Guide. This guide explains how to install and configure the Fusion Registry. FUSION REGISTRY COMMUNITY EDITION VERSION 9 Setup Guide This guide explains how to install and configure the Fusion Registry. FUSION REGISTRY COMMUNITY EDITION SETUP GUIDE Fusion Registry: 9.2.x Document

More information

1. I NEED TO HAVE MULTIPLE VERSIONS OF VISUAL STUDIO INSTALLED IF I M MAINTAINING APPLICATIONS THAT RUN ON MORE THAN ONE VERSION OF THE.

1. I NEED TO HAVE MULTIPLE VERSIONS OF VISUAL STUDIO INSTALLED IF I M MAINTAINING APPLICATIONS THAT RUN ON MORE THAN ONE VERSION OF THE. CUSTOMER PAIN POINTS 1. I NEED TO HAVE MULTIPLE VERSIONS OF VISUAL STUDIO INSTALLED IF I M MAINTAINING APPLICATIONS THAT RUN ON MORE THAN ONE VERSION OF THE.NET FRAMEORK. THAT S TAKING UP SPACE ON MY HARDDRIVE

More information

SecureAware Technical Whitepaper

SecureAware Technical Whitepaper SecureAware Technical Whitepaper - requirements and specifications Applies to SecureAware version 4.x Document date: January 2015 About this document This whitepaper provides a detailed overview of the

More information

Help Manual. Personal DataPublisher For Outlook & SharePoint

Help Manual. Personal DataPublisher For Outlook & SharePoint V4 Personal DataPublisher For Outlook & SharePoint An add-in for Microsoft Outlook that makes it very easy and effortless to publish your mails, appointments, tasks or contacts from Outlook to SharePoint

More information

KYOCERA Net Admin Installation Guide

KYOCERA Net Admin Installation Guide KYOCERA Net Admin Guide Legal Notes Unauthorized reproduction of all or part of this guide is prohibited. The information in this guide is subject to change without notice. We cannot be held liable for

More information

Workspace Administrator Help File

Workspace Administrator Help File Workspace Administrator Help File Table of Contents HotDocs Workspace Help File... 1 Getting Started with Workspace... 3 What is HotDocs Workspace?... 3 Getting Started with Workspace... 3 To access Workspace...

More information

User Manual. Admin Report Kit for IIS 7 (ARKIIS)

User Manual. Admin Report Kit for IIS 7 (ARKIIS) User Manual Admin Report Kit for IIS 7 (ARKIIS) Table of Contents 1 Admin Report Kit for IIS 7... 1 1.1 About ARKIIS... 1 1.2 Who can Use ARKIIS?... 1 1.3 System requirements... 2 1.4 Technical Support...

More information

Install and upgrade Qlik Sense. Qlik Sense 3.0 Copyright QlikTech International AB. All rights reserved.

Install and upgrade Qlik Sense. Qlik Sense 3.0 Copyright QlikTech International AB. All rights reserved. Install and upgrade Qlik Sense Qlik Sense 3.0 Copyright 1993-2016 QlikTech International AB. All rights reserved. Copyright 1993-2016 QlikTech International AB. All rights reserved. Qlik, QlikTech, Qlik

More information

Advance Mobile& Web Application development using Angular and Native Script

Advance Mobile& Web Application development using Angular and Native Script Advance Mobile& Web Application development using Angular and Native Script Objective:- As the popularity of Node.js continues to grow each day, it is highly likely that you will use it when you are building

More information

Brocade Virtual Traffic Manager and Parallels Remote Application Server

Brocade Virtual Traffic Manager and Parallels Remote Application Server White Paper Parallels Brocade Virtual Traffic Manager and Parallels Deployment Guide 01 Contents Preface...4 About This Guide...4 Audience...4 Contacting Brocade...4 Internet...4 Technical Support...4

More information

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 12 09/29/2016

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 12 09/29/2016 Introduction to Concurrent Software Systems CSCI 5828: Foundations of Software Engineering Lecture 12 09/29/2016 1 Goals Present an overview of concurrency in software systems Review the benefits and challenges

More information

VII. Corente Services SSL Client

VII. Corente Services SSL Client VII. Corente Services SSL Client Corente Release 9.1 Manual 9.1.1 Copyright 2014, Oracle and/or its affiliates. All rights reserved. Table of Contents Preface... 5 I. Introduction... 6 Chapter 1. Requirements...

More information

KYOCERA Device Manager Installation and Upgrade Guide

KYOCERA Device Manager Installation and Upgrade Guide KYOCERA Device Manager Installation and Upgrade Guide Legal Notes Unauthorized reproduction of all or part of this guide is prohibited. The information in this guide is subject to change without notice.

More information

Trend Micro Incorporated reserves the right to make changes to this document and to the products described herein without notice. Before installing and using the product, please review the readme files,

More information

Xton Access Manager GETTING STARTED GUIDE

Xton Access Manager GETTING STARTED GUIDE Xton Access Manager GETTING STARTED GUIDE XTON TECHNOLOGIES, LLC PHILADELPHIA Copyright 2017. Xton Technologies LLC. Contents Introduction... 2 Technical Support... 2 What is Xton Access Manager?... 3

More information

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 08 09/17/2015

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 08 09/17/2015 Introduction to Concurrent Software Systems CSCI 5828: Foundations of Software Engineering Lecture 08 09/17/2015 1 Goals Present an overview of concurrency in software systems Review the benefits and challenges

More information

Protection! User Guide. A d m i n i s t r a t o r G u i d e. v L i c e n s i n g S e r v e r. Protect your investments with Protection!

Protection! User Guide. A d m i n i s t r a t o r G u i d e. v L i c e n s i n g S e r v e r. Protect your investments with Protection! jproductivity LLC Protect your investments with Protection! User Guide Protection! L i c e n s i n g S e r v e r v 4. 9 A d m i n i s t r a t o r G u i d e tm http://www.jproductivity.com Notice of Copyright

More information

Performance Benchmark and Capacity Planning. Version: 7.3

Performance Benchmark and Capacity Planning. Version: 7.3 Performance Benchmark and Capacity Planning Version: 7.3 Copyright 215 Intellicus Technologies This document and its content is copyrighted material of Intellicus Technologies. The content may not be copied

More information

Load testing with WAPT: Quick Start Guide

Load testing with WAPT: Quick Start Guide Load testing with WAPT: Quick Start Guide This document describes step by step how to create a simple typical test for a web application, execute it and interpret the results. A brief insight is provided

More information

Architecting C++ apps

Architecting C++ apps Architecting C++ apps with a multi-device application platform John JT Thomas Director of Product Management jt@embarcadero.com @FireMonkeyPM blogs.embarcadero.com/jtembarcadero/ What is a multi-device

More information

Automation Anywhere Enterprise 10 LTS

Automation Anywhere Enterprise 10 LTS Automation Anywhere Enterprise 10 LTS Document Version: 1.3 Installation Guide Date of Publication: 15 th November, 2016 Update(s) to this document edition: Table of Contents 1. Client Prerequisites Processor

More information

ESET Remote Administrator 6. Version 6.0 Product Details

ESET Remote Administrator 6. Version 6.0 Product Details ESET Remote Administrator 6 Version 6.0 Product Details ESET Remote Administrator 6.0 is a successor to ESET Remote Administrator V5.x, however represents a major step forward, completely new generation

More information

Ecocion Facility Management System Alex Anderson Niles Hacking Ryan Shipp June 16, 2015

Ecocion Facility Management System Alex Anderson Niles Hacking Ryan Shipp June 16, 2015 Ecocion Facility Management System Alex Anderson Niles Hacking Ryan Shipp June 16, 2015 1 Table of Contents 1. Introduction 2 1.1. Client Description 1.2. Product Vision 2. Requirements. 2 2.1. Functional

More information

Oracle Application Express: Administration 1-2

Oracle Application Express: Administration 1-2 Oracle Application Express: Administration 1-2 The suggested course agenda is displayed in the slide. Each lesson, except the Course Overview, will be followed by practice time. Oracle Application Express:

More information

GroupWise Architecture and Best Practices. WebAccess. Kiran Palagiri Team Lead GroupWise WebAccess

GroupWise Architecture and Best Practices. WebAccess. Kiran Palagiri Team Lead GroupWise WebAccess GroupWise Architecture and Best Practices WebAccess Kiran Palagiri Team Lead GroupWise WebAccess kpalagiri@novell.com Ed Hanley Senior Architect ed.hanley@novell.com Agenda Kiran Palagiri Architectural

More information

Installation Guide Worksoft Certify

Installation Guide Worksoft Certify Installation Guide Worksoft Certify Worksoft, Inc. 15851 Dallas Parkway, Suite 855 Addison, TX 75001 www.worksoft.com 866-836-1773 Worksoft Certify Installation Guide Version 9.0.3 Copyright 2017 by Worksoft,

More information

INSTALLATION AND SET UP GUIDE

INSTALLATION AND SET UP GUIDE INSTALLATION AND SET UP GUIDE This guide will help IT administrators to install and set up NVivo Server. It provides step by step instructions for installing the software, configuring user permissions

More information

Eucalyptus User Console Guide

Eucalyptus User Console Guide Eucalyptus 3.4.1 User Console Guide 2013-12-11 Eucalyptus Systems Eucalyptus Contents 2 Contents User Console Overview...5 Install the Eucalyptus User Console...6 Install on Centos / RHEL 6.3...6 Configure

More information

Deployment Scenario: WebSphere Portal Mashup integration and page builder

Deployment Scenario: WebSphere Portal Mashup integration and page builder Deployment Scenario: WebSphere Portal 6.1.5 Mashup integration and page builder Deployment Scenario: WebSphere Portal 6.1.5 Mashup integration and page builder...1 Abstract...2 Portal Mashup integration

More information

Remote Access Application Viewer User Guide. Version 2.3

Remote Access Application Viewer User Guide. Version 2.3 Remote Access Application Viewer User Guide Version 2.3 Table of Contents Table of Contents... 2 Logging into Application Viewer... 4 Setting up your browser for the first time... 8 Internet Explorer...

More information

Getting started 7. Setting properties 23

Getting started 7. Setting properties 23 Contents 1 2 3 Getting started 7 Introducing Visual Basic 8 Installing Visual Studio 10 Exploring the IDE 12 Starting a new project 14 Adding a visual control 16 Adding functional code 18 Saving projects

More information

X100 ARCHITECTURE REFERENCES:

X100 ARCHITECTURE REFERENCES: UNION SYSTEMS GLOBAL This guide is designed to provide you with an highlevel overview of some of the key points of the Oracle Fusion Middleware Forms Services architecture, a component of the Oracle Fusion

More information

The SAP Internet Programming Model, Part 1

The SAP Internet Programming Model, Part 1 The SAP Internet Programming Model, Part 1 Since the first SAP ITS-enabled R/3 release (R/3 3.1G), the number of standard Internet Applications Components (IACs) provided by SAP has constantly increased.

More information

VMware Identity Manager Connector Installation and Configuration (Legacy Mode)

VMware Identity Manager Connector Installation and Configuration (Legacy Mode) VMware Identity Manager Connector Installation and Configuration (Legacy Mode) VMware Identity Manager This document supports the version of each product listed and supports all subsequent versions until

More information

Getting Started With Intellicus. Version: 7.3

Getting Started With Intellicus. Version: 7.3 Getting Started With Intellicus Version: 7.3 Copyright 2015 Intellicus Technologies This document and its content is copyrighted material of Intellicus Technologies. The content may not be copied or derived

More information

User Guide. 3CX Recording Manager Standard. Version

User Guide. 3CX Recording Manager Standard. Version User Guide 3CX Recording Manager Standard Version 15.5.109 "Copyright VoIPTools, LLC 2011-2018" Information in this document is subject to change without notice. No part of this document may be reproduced

More information

Deltek Touch Expense for Ajera. Touch 1.0 Technical Installation Guide

Deltek Touch Expense for Ajera. Touch 1.0 Technical Installation Guide Deltek Touch Expense for Ajera Touch 1.0 Technical Installation Guide June 01, 2018 While Deltek has attempted to verify that the information in this document is accurate and complete, some typographical

More information

Introduction Chapter 1. General Information Chapter 2. Servers Used... 9

Introduction Chapter 1. General Information Chapter 2. Servers Used... 9 Chapter 1 General Information Contents Contents Introduction... 5 Chapter 1. General Information... 6 Chapter 2. Servers Used... 9 Chapter 3. Installing and Configuring Failover Cluster for MS SQL Databases...

More information

Kaspersky Security Center 10 Web Console. User Guide

Kaspersky Security Center 10 Web Console. User Guide Kaspersky Security Center 10 Web Console User Guide Dear User, Thank you for your trust! We hope that this document will help you in your work and will provide answers regarding this software product.

More information

EMCO Ping Monitor Enterprise 6. Copyright EMCO. All rights reserved.

EMCO Ping Monitor Enterprise 6. Copyright EMCO. All rights reserved. Copyright 2001-2017 EMCO. All rights reserved. Company web site: emcosoftware.com Support e-mail: support@emcosoftware.com Table of Contents Chapter... 1: Introduction 4 Chapter... 2: Getting Started 6

More information

WINDOWS HOST GUIDE. Remote Support & Management PC Mac Tablet Smartphone Embedded device. WiseMo Host module on your PC or Server

WINDOWS HOST GUIDE. Remote Support & Management PC Mac Tablet Smartphone Embedded device. WiseMo Host module on your PC or Server WINDOWS HOST GUIDE Remote Support & Management PC Mac Tablet Smartphone Embedded device WiseMo Guest module for example on your Windows PC WiseMo Host module on your PC or Server WiseMo develops software

More information

Oracle Application Express 5 New Features

Oracle Application Express 5 New Features Oracle Application Express 5 New Features 20th HrOUG conference October 16, 2015 Vladislav Uvarov Software Development Manager Database Server Technologies Division Copyright 2015, Oracle and/or its affiliates.

More information

Sentences Installation Guide. Sentences Version 4.0

Sentences Installation Guide. Sentences Version 4.0 Sentences Installation Guide Sentences Version 4.0 A publication of Lazysoft Ltd. Web: www.sentences.com Lazysoft Support: support@sentences.com Copyright 2000-2012 Lazysoft Ltd. All rights reserved. The

More information

PRO, PRO+, and SERVER

PRO, PRO+, and SERVER AliveChat Overview PRO, PRO+, and SERVER Version 1.2 Page 1 Introducing AliveChat 4. Our Latest Release for 2008! Mac, Windows, or Linux - All You Need is a Web Browser Access AliveChat anywhere you have

More information

An Apple Subsidiary. This software addresses an issue where the OpenSSL library used by FileMaker Server 13.0v1 was vulnerable to the Heartbleed bug.

An Apple Subsidiary. This software addresses an issue where the OpenSSL library used by FileMaker Server 13.0v1 was vulnerable to the Heartbleed bug. An Apple Subsidiary FileMaker Server 13.0v2 Installer and Updater Release Notes Software Description The installer software installs FileMaker Server 13.0v2 for Windows and OS X. The updater software updates

More information

Getting Started with Intellicus. Version: 16.0

Getting Started with Intellicus. Version: 16.0 Getting Started with Intellicus Version: 16.0 Copyright 2016 Intellicus Technologies This document and its content is copyrighted material of Intellicus Technologies. The content may not be copied or derived

More information

SmartBar for MS CRM 2015/2016 and Dynamics 365

SmartBar for MS CRM 2015/2016 and Dynamics 365 v.2.2, November 2016 SmartBar for MS CRM 2015/2016 and Dynamics 365 PowerSearch (How to work with PowerSearch for MS CRM 2015/2016 and Dynamics 365) The content of this document is subject to change without

More information

VMware View Upgrade Guide

VMware View Upgrade Guide View 4.0 View Manager 4.0 View Composer 2.0 This document supports the version of each product listed and supports all subsequent versions until the document is replaced by a new edition. To check for

More information

Polarion Trial Installation 17.2

Polarion Trial Installation 17.2 SIEMENS Polarion Trial Installation 17.2 POL002 17.2 Contents About this guide...................................................... 1-1 Before you begin.....................................................

More information

Status Web Evaluator s Guide Software Pursuits, Inc.

Status Web Evaluator s Guide Software Pursuits, Inc. Status Web Evaluator s Guide 2018 Table of Contents Introduction... 2 System Requirements... 2 Contact Information... 2 Installing Microsoft IIS... 2 Verifying Microsoft IIS Features... 9 Installing the

More information

Microsoft Dynamics NAV Windows Client Requirements

Microsoft Dynamics NAV Windows Client Requirements Microsoft Dynamics NAV Windows Client Requirements The following table shows the minimum system requirements for the Microsoft Dynamics NAV Windows client. Supported operating systems Windows 8.1 Professional

More information

Manipulating Database Objects

Manipulating Database Objects Manipulating Database Objects Purpose This tutorial shows you how to manipulate database objects using Oracle Application Express. Time to Complete Approximately 30 minutes. Topics This tutorial covers

More information

SelectSurvey.NET Developers Manual

SelectSurvey.NET Developers Manual Developers Manual (Last updated: 5/6/2016) SelectSurvey.NET Developers Manual Table of Contents: SelectSurvey.NET Developers Manual... 1 Overview... 2 Before Starting - Is your software up to date?...

More information

NoSpamProxy 12.1 Installation Manual. Protection Encryption Large Files

NoSpamProxy 12.1 Installation Manual. Protection Encryption Large Files NoSpamProxy 12.1 Installation Manual Protection Encryption Large Files Imprint All rights reserved. The manual and the depicted programs are copyrighted products of Net at Work GmbH, Paderborn, Germany.

More information

WebSphere Puts Business In Motion. Put People In Motion With Mobile Apps

WebSphere Puts Business In Motion. Put People In Motion With Mobile Apps WebSphere Puts Business In Motion Put People In Motion With Mobile Apps Use Mobile Apps To Create New Revenue Opportunities A clothing store increases sales through personalized offers Customers can scan

More information

Business Insights Dashboard

Business Insights Dashboard Business Insights Dashboard Sage 500 ERP 2000-2013 Sage Software, Inc. All rights reserved. Sage, the Sage logos, and the Sage product and service names mentioned herein are registered trademarks or trademarks

More information

TECHNICAL WHITE PAPER AUGUST 2017 REVIEWER S GUIDE FOR VIEW IN VMWARE HORIZON 7: INSTALLATION AND CONFIGURATION. VMware Horizon 7 version 7.

TECHNICAL WHITE PAPER AUGUST 2017 REVIEWER S GUIDE FOR VIEW IN VMWARE HORIZON 7: INSTALLATION AND CONFIGURATION. VMware Horizon 7 version 7. TECHNICAL WHITE PAPER AUGUST 2017 REVIEWER S GUIDE FOR VIEW IN VMWARE HORIZON 7: INSTALLATION AND CONFIGURATION VMware Horizon 7 version 7.x Table of Contents Introduction.... 3 JMP Next-Generation Desktop

More information

Introduction Secure Message Center (Webmail, Mobile & Visually Impaired) Webmail... 2 Mobile & Tablet... 4 Visually Impaired...

Introduction Secure Message Center (Webmail, Mobile & Visually Impaired) Webmail... 2 Mobile & Tablet... 4 Visually Impaired... WEB MESSAGE CENTER END USER GUIDE The Secure Web Message Center allows users to access and send and receive secure messages via any browser on a computer, tablet or other mobile devices. Introduction...

More information