kbmMW is a portable, highly scalable, high end application server and
enterprise architecture integration (EAI) development framework for
Win32, ..Net and Linux with clients residing on Win32, .Net, Linux,
Unix, Mainframes, Minis, Embedded and many other places.
It is currently used as the backbone in hundreds of central systems, in
hospitals, courts, private, industries, offshore industry, finance,
telecom, governements, schools, laboratories, rentals, culture
institutions, FDA approved medical devices, military and more.

4.90.00 November 7 2015

Important notes (changes that may break existing code)
        ======================================================
        - Updated TkbmMWOnMessageToSpoke,
          TkbmMWOnMessageToSpokeDeliveryFailed,
          TkbmMWOnMessageToSpokeDeliverySuccess events to include the
          queue.

New stuff
        =========
        - Added TkbmMWScheduler in new unit kbmMWSceduler.pas (Ent)
          for precise and relaxed event scheduling.
          System scheduler are available via Scheduler instance.
          Check demo for examples of use.
        - Added TkbmMWMemSQL which is an extension to the TkbmMemSQL
          class (Ent).
          It adds syntax for:
           - Defining fieldtypes:
             SELECT field1 as 'field1->INT'... The field types can be
               INT,VARCHAR2(n),VARCHAR(n),CHAR(n),BOOL,
               AUTOINC,FLOAT,NUMERIC,REAL,DATETIME,
               DATE,TIME,LARGEINT,INT64,BLOB,GRAPHIC,
               CLOB,TEXT(n),CURRENCY,WORD,MEMO,WIDEMEMO,GUID
           - Operating on XML and JSON data registered with SQL
             component:
             SELECT owner AS 'someowner->TEXT(3)',bid,quantity AS
               'dato->DATE'
               FROM auctions
               SUBSET '/alliance/auctions/.*'
               ORDER BY bid,owner
             SELECT XMLAttr(value,'//datas','name') AS
               'name->TEXT(20)', value
               FROM data TEXT(XML,'<datas
name="hello"><data><value>10</value></data><data><value>20</value></data>>/datas>')
               SUBSET '^/datas/data/$'
           - Operating on inline XML:
             SELECT value
               FROM data
TEXT(XML,'<data><value>10</value><value>20</value></data>')
               SUBSET '/data/value'
               ORDER BY value
           - Operating on inline JSON:
             SELECT value
               FROM data TEXT(JSON,'{"data":[{"value":10},{"value":20}]}')
               SUBSET '/data/.*'
               ORDER BY value
           - Loading data from external CSV (SF_CSV) or
             binary (SF_BIN) files:
             SELECT [species no], common_name
               FROM biolife FILE(SF_CSV,'.\biolife.csv')
               ORDER BY common_name
           - Loading data from external XML and JSON files:
             SELECT owner,bid,quantity
               FROM auctionsfile FILE(JSON,'.\auctions.json')
               SUBSET '/alliance/auctions/.*'
               ORDER BY bid,owner
           - Outputting results as binary (SF_BIN), CSV (SF_CSV), XML
             (SF_XML) and JSON (SF_JSON) files:
             SELECT fld2 AS Field2, fld3, sum(fld5) AS fld5,
               Sum(fld2) AS SomeField1, Sum(fld3) AS SomeField2
               FROM table1
               GROUP BY Field2, fld3
               OUTPUT FILE(SF_JSON,'.\output.json','nodef')
           - Outputting results as CSV, XML and JSON text string:
             SELECT fld2 AS Field2, fld3, sum(fld5) AS fld5,
               Sum(fld2) AS SomeField1, Sum(fld3) AS SomeField2
               FROM table1
               GROUP BY Field2, fld3
               OUTPUT TEXT(SF_XML,'nodef')
          Output formats supports various options:
           - SF_CSV supports: nodef, quote=X, fielddelimiter=X,
                recorddelimiter=X, truestring=xxx, falsestring=xxx,
                noheader, onlyquotestrings, usedisplayname
           - SF_JSON supports: nodef, rowid, datanode, memoasstring,
                nonull, bmp, png (not MacOS), jpeg (not MacOS),
                rowidname=xxx, dataname=xxx, definitionname=xxx
           - SF_XML supports: nodef, rowid, datanode,
                datasetname=xxx, rowidname=xxx,
                fieldname=xxx, dataname=xxx, definitionname=xxx
           - SF_BIN supports: nodef
          Check demo for examples of use.
        - Added kbmMWSQLXMLAPI.pas, kbmMWSQLJSONAPI.pas units (Ent) to
          support above.
        - Added XmlNode and XmlAttr in kbmMWSQLXMLFunc.pas for XML
          specific functions useful when running SQL on XML documents.
        - Added new QoS flag to WIB messages:
            KBMMW_TRANSPORT_QOS_CONFIRMED_DELIVERY
          If set on a message, the message will need to be acknowledged
          by receiver before its committed in senders queue. In
          practice receiver bulk acknowledges received messages at an
          interval and/or message count.
        - Upped subject header version to 4.
          Define KBMMW_SUBJECTHEADER_V3_COMPAT
          to generate messages compatible with v3.
          Notice that QoS must handshake flag require v4.
        - Added AOptions:TkbmMWMessageOptions to all message creating
          methods/functions when WIB is enabled. Provides access to
          defining QoS flags for a message.
        - Added InboundRetransmitTotal, OutboundRetransmitTotal,
          AutoSetupHandshakeSubscription,
          SendEvent, SendPrioritizedEvent, InboundAckHandler,
          OutboundAckHandler
          to client and server messaging transports.
        - Added Flush method to TkbmMWFileStoreMessageQueue to force
          write of cached data to file.
        - Added TkbmMWWeekDay type to kbmMWDateTime.pas unit.
        - Added global function kbmMWXMLDataType2VariantType to
          kbmMWXML.pas. Returns variant datatype based on XML datatype.
        - Updated Load/Save functions in kbmMWXML to configure to
          stream/not stream BOM markers.
        - Changed AttribByNameAsDuration in kbmMWXML to return
          TkbmMWDuration value instead of TkbmMWDateTime.
        - Added kbmMWAddHop, kbmMWExtractLastHop, kbmMWHopCount,
          kbmMWPeerID, kbmMWExtractPeerID,
          kbmMWGenerateHandshakeSubscriptionSubject,
          kbmMWGenerateHandshakeSubject methods to kbmMWSubjectUtils.
        - Added CreateResponseMessage, CreateRequestMessage,
          CreateServiceCallMessage methods to WIB.
        - Added optional ASilent:boolean=false argument to
          CommitMessagePop, RollbackMessagePop, RejectMessage
          If true, will not raise exception if message do not exist.
          Also now returns true or false depending on if operation
          suceeded.
        - Added OnStats event to TkbmMWServer. Is called whenever there
          is a statistics update.
        - Added Load/Save methods for file and stream based storage in
          TkbmMWXMLAuthorizationStorage.
        - Added mwldtWeb to TkbmMWLogDataType.
        - Added Enabled:boolean property to IkbmMWLogManager and
          implementing classes.
        - Added LogWeb method to IkbmMWLog interface and implementing
          classes. Logs data in an Apache compatible way.
        - Added function FormatWebLogRecord to IkbmMWLog and
          implementing classes. It returns an Apacke compatible log
          string to be used with LogWeb.
        - Extensively updated TkbmMWInterval in kbmMWDateTime.pas unit
          to be nullable, compile numeric value that can be compared
          with another interval instance's numeric value to test for
          which interval is longer, multiple overloaded constructors,
          millisecond support, Compare function.
          Supports fractional and overrun values for years, months,
          days, hours, minutes, seconds and weeks.
        - Added TkbmMWInterval as alias to TkbmMWDuration.
        - Added Compare and Clear methods to TkbmMWDateTime.
        - Added Incxxx methods to TkbmMWDateTime taking fractional and
          overrun values.
        - Added Null class function to TkbmMWDateTime returning a null
          TkbmMWDateTime.
        - Added NCSATimeZone and NCSADateTime properties to
          TkbmMWDateTime allow for setting and getting Common Log
          Format (NSCA) formatted timezone and datetime values.
        - Added Clone function to TkbmMWJSONCustomObject.
        - Added AddArray and AddObject functions to TkbmMWJSONArray.
          Newly created empty object or array will be added to array
          and returned for developer to populate.
        - Added InsertArray and InsertObject to TkbmMWJSONArray.
        - Added AAutoCreateChildren:boolean (default true) argument to
          constructor of TkbmMWJSONObject. Controls what happens when
          accessing properties AsArray or AsObject when no array or
          object is available under the given name. If
          AutoCreateChildren is false, nil will be returned or an
          exception raised, else new objects/arrays are created
          automatically.
        - Added option to stream BOM in TkbmMWJSONStreamer.
        - Added Load/Save UTF8 file and stream access methods to
          TkbmMWJSONStreamer.
        - Added FileStoreOptions property to
          TkbmMWFileStoreMessageQueue which
          controls what happens when queue is closed. Can be
          mwfsoDeleteOnClose, mwfsoDeleteOnCloseWh or nothing.
        - Added TkbmMWCustomThreadHashList,
          TkbmMWHashStringInterfaceList
          and TkbmMWThreadHashStringInterfaceList to kbmMWGlobal.pas.
        - Added UTF8Decode methods returning boolean if UTF8 string was
          invalid to TkbmMWPlatformMarshal.
        - Added WriteBOM and ReadBOM to TkbmMWPlatformMarshal.
        - Added kbmMWTextToFloat, kbmMWFloatToText, kbmMWStringToText,
          kbmMWSearchNonDecimalDigit, kbmMWSafePath to kbmMWGlobal.pas.
        - Added OnHandshake event to client and server messaging
          transports.

Changes/minor additions
        =======================
        - Added APostSubject:string='' argument to all message
          producing methods/functions to allow postfixing additional
          data to the standard subjects like REQ/RES etc. to allow for
          easier custom receiving end filtering based on custom data.
        - Added AClosing:boolean = true argument to Flush method of
          TkbmMWBufferedFileStream.
          If true (default) flush is expected to optionally (on
          Windows) truncate file to the actual size it has, not the
          sector based size. Call with closing false to just flush the
          cache to the file.
        - Added GetMimeTypeExt(const AExt:string):string and
          GetCharSetExt(const AExt:string):string to
          kbmMWCustomHTTPService.pas. Allows for providing a file
          extension (including dot) instead of a file path.
        - Improved FastCGI communication with FastCGI server to more
          reliably detect environment header.
        - Changed so SubjectHeader.Hops always initially includes
          sender.
        - Changed TkbmMWAuthorizationUTCTimeConstraint to use
          TkbmMWWeekDay for week day constraints.
        - Updated timezone list in kbmMWDateTime.
        - Updated TkbmMWOnMessageToSpoke,
          TkbmMWOnMessageToSpokeDeliveryFailed,
          TkbmMWOnMessageToSpokeDeliverySuccess events to include the
          queue.

Fixes
        =====
        - Fixed leak of TkbmMWInnerThread on shutdown.
        - Fixed thread pool bugs.
        - Fixed Remote Desktop compilation issues in pre XE6.
        - Fixed FIB compilation issues.
        - Fixed UniDAC compilation issues and missing Options property.
        - Fixed so a response message has same QoS as the request
          message.
        - Fixed TkbmMWAuthorizationLogin.Touch to touch using UTC, not
          local time, which would result in actor being timed
          incorrectly out.
        - Fixed leak of TFileStream/TkbmMWBufferedFileStream in
          kbmMWDebugTdsFile.pas and kbmMWDebugMapFile.pas when loading
          of TDS/MAP file excepted (for example by being in use by the
          Delphi debugger when running app in debug mode).
        - Fixed StreamSec TLS plugin compilation.
        - Fixed bugs in
          TkbmMWHTTPTransportStreamHelper.HTTPBuildCustomResponseHeader.
        - Fixed bugs in SQLite adapter

KBMMW 4.90.00 发布的更多相关文章

  1. kbmmw 5.05.00 发布

    新年前最后几天,kbmmw 发布了新版本,增加一大波功能.we are happy to announce v5.05.50 of our popular middleware for Delphi ...

  2. KbmMW 4.30.00 发布

    今天早上,KbmMW发布了4.30.00 版,这个版本开始支持XE4 的WIN/WIN64/OSX. 暂时不支持ios开发,同时加强了通过JSON 的对象序列化.还有就是解决了我提交的几个有关 汉字处 ...

  3. KBMMW 4.92.00 发布

    We are happy to announce the release of kbmMW Professional and Enterprise Edition. Yet again kbmMW c ...

  4. KBMMW 4.84.00 发布

    kbmMW is a portable, highly scalable, high end application server and enterprise architecture integr ...

  5. KBMMW 4.83.00 发布

    新版本又来了,端午节都不让大家过好:) 这次终于支持ios 64了,不用我再手工改了. Components4Developers is a company established in 1999 w ...

  6. KBMMW 4.82.00 发布

    作者最近加紧了更新进度,赞一个. 时间都去哪儿了? 还没好好看4.81, 新版就来了. 这个版本主要是增强日志管理,已经强大到替换delphi 本身的异常处理了. We are happy to an ...

  7. KBMMW 4.80.00 发布

    一大波更新来了. 4.80.00 March 30 2015 Important notes (changes that may break existing code)        ======= ...

  8. KBMMW 4.70.00 发布

    We are happy to announce the release of kbmMW v. 4.70.00 Professional and Enterprise Edition. kbmMW ...

  9. kbmmw 5.10.00 发布

    We are happy to announce v5.10.00 of the most complete development add on for Delphi and C++Builder ...

随机推荐

  1. Linux内核分析——操作系统是如何工作的

    万子惠 + 原创作品转载请注明出处 + <Linux内核分析> 实验部分 使用实验楼的虚拟机打开shell 然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain. ...

  2. [Debian]8.2升8.3

    $ uname -mrs $ lsb_release -a $ sudo apt-get update#開始升級 $ sudo apt-get dist-upgrade $ sudo reboot#重 ...

  3. boost -- scoped_lock V.S. mutex lock/unlock —— why scoped_lock is recommanded?

    why scoped_lock is recommanded? 其实,这和RAII idiom变流行是一样的原因:因为你可以确保任何情况下离开执行范围都会解锁mutex. 注意,这不仅仅是说你可能忘记 ...

  4. MongoDB学习笔记二:创建、更新及删除文档

    插入并保存文档 对目标集使用insert方法插入一个文档: > db.foo.insert({"bar" : "baz"}) 这个操作会给文档增加一个&q ...

  5. 电脑结构和CPU、内存、硬盘三者之间的关系

    前面提到了,电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器. 我们看一下现在我们电脑的: 键盘鼠标.显示器.机箱.音响等等. 这里显示器为比较老的CRT显示器 ...

  6. Java 学习总结(一)

    1.     概述 1.1           dos命令行--常见的命令 l  dir : 列出当前目录下的文件以及文件夹 l  md : 创建目录 l  rd : 删除目录 l  cd : 进入指 ...

  7. 复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题)

    复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题) 相信绝大多数人都遇到过这样的功能实现,“复制”或者“复制到剪贴板”这样的功能.但是由于各大浏览器的实现方案不一样,导致几 ...

  8. access数据库select查询top时无效的解决办法

    access数据库select查询top时有时无效,原因就是在使用Order by时,且排序的条件中数据有重复的. 比如:select top 10 * from table1 order by cd ...

  9. Visual Tracker Benchmark

    直接的方法: 首先将代码先拷到benchmark_v1.0/tackers/这个文件夹下,你会发现里面已有好几个算法的代码文件夹了. 这边注意了,我就是这样的,没有注意把代码拷贝进去之后要自己写一个调 ...

  10. Windows下使用scapy+python2.7实现对pcap文件的读写操作

    scapy在linux环境中对pcap文件进行操作非常方便,但在windows下,特别是在python2.7环境下却会碰到各种各样的依赖包无法使用的问题,最明显的可能就属dnet和pcap的pytho ...