天天看點

kbmMW 4.00 正式版釋出了

呵呵,說曹操,曹操到。昨天剛寫完kbmMW 的配置,今天kbmMW 4.00 正式版就釋出了。

We are happy to announce the immediate availability of kbmMW Enterprise Edition v. 4.00.00.

This is a major release with many new features like Remote Desktop,

JSON and JSON dataset streaming, new advanced file queue and buffered file streams and much much more.

Please check further down for more detailed info about new features.

kbmMW Enterprise Edition v4.00.00 is available for immediate download for all holders of a valid SAU (Service and Update) subscription.

If your subscription has expired you can purchase additional 12 months SAU periods via our shop

       Important notes (changes that may break existing code)

       ======================================================

       * kbmMW Enterprise Edition Message Bundling require update of all nodes.

       New stuff

       =========

       - Added message bundling in WIB. To enable, send message with SubjectJeader.QoS value

         KBMMW_TRANSPORT_QOS_BATCHABLE. To force a break between batchable messages, send a message

         with SubjectJeader.QoS KBMMW_TRANSPORT_QOS_PRIMARY_IF_BATCHED.

         PushMessage on queues now have optional argument AUnBatch:boolean=false which if set to true

         will automatically unbatch messages into singular messages on the queue.

         Only messages with equal priority, HopCount, Subject, Data property, MaxHopCount, Hops and Trace can

         be batched. By Setting MaxBatchedCount on SubjectHeader, you can determine how many messages of batchable

         type, can be batched into one.

       - Added Delphi XE2, C++Builder XE2 support.

       - Added support for Win32, Win64, MacOS.

       - Added Remote desktop components and samples for Win32 (not tested with Win64).

       - Added native full JSON support. Check new kbmMWJSON unit.

       - Added JSON dataset stream format. Check new kbmMWJSONStreamFormat unit.

       - Added Lazarus support. No wizard support at the moment.

       - Added RemapOptions and OnRemapFielddef event to metadata components. It

         can be used for specifying how field type remapping should happen.

         mwroStringAsUnicode - All normal string fields are treated as unicode string fields.

            It covers ftString, ftFixedChar that is mapped to ftWideString, and ftMemo that

            is mapped to ftWideMemo.

         mwroOracleAsRegular - ftOraBlob is mapped to ftBlob, and ftOraClob is mapped to ftMemo.

         mwroDateTimeAsDate - ftDateTime is mapped to ftDate.

       - Added ParamNameFix to metadata components to control if kbmMW should remove "illegal"

         characters from the parameter name. Default true.

       - Added functionality so macros on X connection pool is expanded after macros on

         chained connection pool.

       - Added support for CommandTimeOut property in ADOX adapter.

       - Added Cookies property to TkbmMWHTTPTransportStreamHelper.

       - Added NoCache property to TkbmMWHTTPTransportStreamHelper.

       - Added support for redirection/loadbalancing using HTTP protocol in

         TkbmMWHTTPTransportStreamHelper.

       - Added support for template parameters in TkbmMWxxxHTTPService and

         TkbmMWHTTPServiceDefinition via property Parameters.

         Control when parameters should be expanded via

         ParametersEnabledFor property. Control format of template parameter

         via ParameterType (mwtvtStandard: [!--PARNAME--!] / mwtvtHTML: <!-- PARNAME  -->)

         PreserveParameterWhenUndefined:boolean controls if the parameter should be

           preserved if a parameter with that name cant be found and thus the parameter

           not be expanded.

       - Added  function FileCategoryFromMimeType(const AMimeType:string):TkbmMWHTTPFileCategory

         to TkbmMWxxxHTTPService.

       - Added

         function Request(ARequestTransportStream:IkbmMWCustomRequestTransportStream; AResponseTransportStream:IkbmMWCustomResponseTransportStream; const AServiceName,AServiceVersion:string; var AStateID:integer; AClientID:TkbmMWClientIdentity; AInStream,AOutStream:TStream; const AFunc:string;const Args:array of variant):variant;

         function Request(const AServiceName,AServiceVersion:string; var AStateID:integer; AClientID:TkbmMWClientIdentity; AInStream, AOutStream:TStream; const AFunc:string; const Args:array of variant):variant;

         function Request(const AServiceName,AServiceVersion:string; AClientID:TkbmMWClientIdentity; AInStream, AOutStream:TStream; const AFunc:string; const Args:array of variant):variant;

         to TkbmMWServer to make it easy to make a server internal request to a service.

       - Added keep alive type Ping/Pong to TkbmMWServer. From a client call SendPing(value) where value is

         an optional value that will be send back to you. Result of the SendPing call is an array

         consisting of __PONG at index 0, provided argument (or null) at index 1, the servers UTC offset

         (in seconds) at index 2, and the servers UTC time at index 3.

       - Added advanced high performance paged stream buffering: TkbmMWBufferedStream.

       - Added TkbmMWFileStream that allows for providing more flags than regular TFileStream.

       - Added TkbmMWBufferedFileStream that combines the above to bypass Windows file caching

          and instead use internal caching mechanism that allows finetuning to a specific

          use pattern, thus signtificantly improving performance. Will internally access

          file on disk directly and read/write sectorbased.

       - Added PurgeAndDisconnect method to TkbmMWCustomSAFClientTransport.

          Can be called with parameter that defines which queues (inbound/outbound) that should

          be purged before the connection is closed and how. It can be set to process or flush

          Default is  [mwpacProcessInbound,mwpacProcessOutbound].

       - Added MoveToStart/MoveToEnd in TkbmMWDblLinkList.

       - Added LocateFirstPrioritized and LocateLastPrioritized to TkbmMWPriorityDblLinkList.

       - Added DeleteItem to TkbmMWCustomHashList.

       - Added LoadFromBytes to TkbmMWMemoryStream.

       - Added Append(const AChar:char) to TkbmMWStringBuilder.

       - Added global methods:   function kbmMWUTCLocalOffset:integer;

                               function kbmMWGetCurrentTimeNS:int64;

                               function kbmMWInterlockedIncrement(var AValue:integer):integer;

                               function kbmMWInterlockedDecrement(var AValue:integer):integer;

                               function kbmMWInterlockedIncrement64(var AValue:int64):int64;

                               function kbmMWGetFileSize(const AFilePath:string; var ASize:cardinal; AHandle:THandle = 0):boolean;

                               function kbmMWGetFileInfo(const AFilePath:string; var ASize:Cardinal; var ACreateTime:TDateTime; var AModifyTime:TDateTime; var AAccessTime:TDateTime; var AAttribs:cardinal; AHandle:THandle = 0):boolean;

       - Added global kbmMWFormatSettings: TFormatSettings that is used when format settings are needed in kbmMW.

       - Optimized TkbmMWMemoryStream.CopyFrom when copying from other TkbmMWMemoryStream.

       - Added TkbmMWXMultiDBConnectionPool which is like a regular TkbmMWXConnectionPool, but

          supports handling multiple databases at the same time.

       - Improved TkbmMWCustomStreamStorage with regards to performance, verify and repair.

       - Added SampleSizes to TkbmMWCustomStreamStorage which scans a number of non deleted segments to

          determine max size of metadata header and content. Those values can be used as indicators when

          optimizing disk I/O when using a TkbmMWBufferedFileStream for the stream storage.

       - Added new methods to TkbmMWCustomMessageQueue:

            procedure DeleteMessages(const ASubjectMatch:string);

            procedure DeleteMessages(const APriority:byte; const AMatch:TkbmMWPriorityMatch = mwpmEqual);

          They will search and delete messages that have a certain subject (allows for subscription wildcards)

          or a certain priority level.

       - Changed TkbmMWFileStoreMessageQueue to use TkbmMWBufferedFileStream, for optimum performance.

          AutoTuneCache:boolean controls if the file queue should try to auto estimate cache for best performance.

          ScanPageSize:integer defines the page size of cached pages used while scanning a file. It should normally

            be around the expected size of the generally largest metadata header segments.

          PageSize:integer defines the page size of cached pages used while accessing the file in normal non scan mode.

            It should normally be around the expected size of the generally largest content size + metadata size.

          PagesInCache controls how many pages of above sizes that max can be cached in memory.

          Memory used for cache depends on the above numbers and sector size of file system that contains the queue,

          If PageSize, ScanPageSize and/or PagesInCache is 0, a regular TFileStream is used instead with Windows

          standard caching mechanism.

Changes/minor additions

       =======================

       - Deprecated mwucStringsIsUnicode in UnicodeOptions. Instead use

         mwroStringAsUnicode in RemapOptions.

       - Updated internal cache hit/miss counters to be int64 instead of longint.

       - Updated TkbmMWLocalStats to use Int64 for its internal counters.

       - Updated TkbmMWServer to use Int64 for its internal counters.

       - Improved HTTP response generation in TkbmMWHTTPTransportStreamHelper.

       - Added support for ICO as a graphics file in TkbmMWxxxHTTPService.

       - Added mwdtApplication as a debug type. It can be used for application specific debugging/logging.

       Fixes

       =====

       - Fixed bug when requesting service from within same thread.

       - Fixed TkbmMWHTTPTransportStreamHelper to handle HTTP payloads correctly.

看看,變化還真不少。