What is new in IW 15.1
IntraWeb 15.1. brings significant improvements over previous 15.0 branch
- Since latests versions of IW 14, it was possible to create applications that didn't rely on cookies as a session tracking mechanism. This feature has been extended and now you can have applications which don't require cookies at all, regardless of your AllowMulitpleSessionsPerUser setting. As a consequence, you are able to create applications which can start two or more independent sessions in different browser tabs, using a clean URL (i.e. the session Id won't be part of your URL, e.g. http://yourapp.com/ only)
- ServerController Options Wizard (right click on ServerController, inside IDE) allows you to set most common settings in a quick and intuitive way.
- ServerController properties can now be automatically loaded at runtime from an .INI file when AutoLoadIniSettings = True. This new feature allows you to change the behavior of your application externally without rebuilding it. At design time you can save current settings or an empty template .INI file through ServerController Options Wizard.
- IntraWeb install program allows you to optionally install two memory managers: FastMM 4.992 and ScaleMM 2. FastMM 4.992 contains latest enhancements targeting multi-threaded applications.
ScaleMM 2 has been extensively tested with IntraWeb and it shows superior performance (when compared to FastMM 4.9x) in some test scenarios. Both perform better than standard Delphi memory manager (which is also a FastMM branch).
- Content Security Policy (CSP) support. Read more about CSP here. https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
- Cross-Origin Resource Sharing (CORS) support. Read more about CORS here: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
- New SVG based locker image (the "loading" image). SVG is much more compact in size, has perfect rendering regardless of the background color.
- Callback function infrastructure was completely refactored: Better performance and more flexible, now you can have anonymous methods as Ajax Callbacks. No need to unregister callbacks for IW components/controls anymore. RegisterCallBack() method has several overloads and it is available from TIWForm instances.
- New advanced lock-free data structures used for session control. This was a big boost in performance and scalability, once there are no critical sections locking the session list anymore.
- New ServerController.SessionOptions.AllowSearchEngines property. If false, all search engines are blocked right from the start before session creation. IntraWeb now also responds with a build-in robots.txt file to SearchEngine requests.
- New start-up/loading code is used when starting a new session. Less redirections are used and application loads faster.
- New property ServerController.BlockedDocExtensions (list of file extensions). It allows developers to block certain requests right when they are first parsed, depending on the URI extension. For example, by default, all URI requests ending in '.php' are blocked. Several web "exploit kits" assume that the target site is written in PHP and use several pre-configured URIs, all ending with '.php'. This makes the IW application much more robust and less vulnerable to such attacks.
- Several internal improvements regarding performance.
- Session control properties are now grouped together under ServerController.SessionOptions.
- IWSessions.LookUp has a different signature (and works slightly different). TIWSessions.LockList/UnlockList have been discontinued and replaced by a different mechanism.
- Enhanced IWRtlFix unit (removed a critical section which could cause performance bottlenecks). Now each session has its own internal list which makes a critical section unnecessary.
- ServerController.OnBrowserCheck event was made optional in most cases. If browser is not detected, Intraweb will create a TChrome instance by default and continue without the need of any user code. As a consequence you won't get any "unknown browser" exceptions.
- AllowMulitpleSessionsPerUser property was made public (instead of published) meaning that it won't show in Object Inspector anymore. It has been kept for compatibility, but its meaning has changed.
- IWBoostrap updated to use Boostrap 3.4.1.
- Rendering of style attributes during async calls: If you want to change any style attribute after rendering through Async calls - including "Visibility" (or "Display" for that matter) - then you need to set:-> IWTemplateProcessorHTML.RenderStyles := TrueSince version 15.0.0 we have been slowly changing the behavior of Async rendering when templates are enabled, in such a way that an Async response won't break styles of components styled by external style sheets. In IW 15.1 we enforced that no style attribute is rendered in Async when IWTemplateProcessorHTML.RenderStyles = False. You can use Component's StyleRenderOptions and TIWTemplateProcessorHTML's StyleAttributesToRemove properties to have a finer control over what is rendered in case you have IWTemplateProcessorHTML.RenderStyles = True.