当前位置: 首页 > news >正文

KbmMW 4.40.00 正式版发布

经过快3个月的测试,kbmmw 4.40 正式版终于在圣诞节前发布了。

We are happy to announce the availability of a new kbmMW release!

This is a major release that amongst other things adds support for Delphi XE5 Win32/Win64/OSX/IOS/Android.

The release also includes the following major features (only a subset of all new features added):

- A new highly configurable and flexible authorization manager where actors, roles, resources, authorizations and constraints can be defined.

- New portable high performance algorithms: TkbmMWLock and TkbmMWEvent
  and detailed CPU affinity configuration for functionality groups.

- Async progress framework for subscribing for progress and sending it,
  with the ability to cancel long running operations.

- Multipart HTTP parsing and HTTP authentication support.

- Numerous new bundled ciphers and hashes based on the
  discontinued DCPCrypt open source product. C4D has revived
  the code within kbmMW, and ported it to support all platforms
  supported by kbmMW.

- New FireDAC database adapter.

Please check the log further down in this post for more information!

If you have an active SAU, the download of this latest kbmMW release is readily available on your portal at:

https://portal.components4developers.com

If your SAU has lapsed, you can extend it with another 12 months.
If it has been lapsed for more than 24 months, contact us for a
10% discount on a new kbmMW license replacing the old.


This release require kbmMemTable v. 7.40.00.

 4.40.00 Dec 22 2013

        Important notes (changes that may break existing code)
        ======================================================
        - Changed JSON object marshalling (TkbmMWJSONMarshal) to not
          add double child arrays in collections.
          Notice this makes JSON incompable with previous JSON
          streaming format.

        New stuff
        =========
        - Added properties Cancel:boolean, UniqueID:string,
          UniqueCallID:string, RequesterNodeID:string and
          RequesterClusterID:string
          to TkbmMWCustomService. Enables features for cancelling
          ongoing request.
        - Added full XE5 Win32/Win64/OSX/Android and IOS support. Add
          kbmMW and kbmMemTable source directory to Library path
          when compiling for Android or IOS.
        - Added TkbmMWAuthorizationManager which can be used for
          keeping track of resources, actors, logins and authorizations
          and constraints.
        - Added AuthorizationManager property to TkbmMWServer.
        - Added OnPreServeRequest to TkbmMWServer. Provides access to a
          request before even authorization manager kicks in.
        - Added Cancel method to TkbmMWServer allowing for requesting
          cancelation of a specific request.
        - Added Enabled property to TkbmMWCustomServerTransport.
        - Modified OnAuthenticate event to include AMessage:string
          argument.
        - Added Transport:string to TkbmMWClientIdentity. Is set on
          server to let authentication know from which transport a
          request originates.
        - Added portable high performance TkbmMWLock (when
          KBMMW_SUPPORT_FASTMRWSLOCK is defined (default)) which is
          much faster
          than TEvent/TMutex and TMultiReadExclusiveWriteSynchronizer.
        - Added TkbmMWTiming which provides portable high resolution
          time functionality.
        - Added TkbmMWInterlocked which provides portable interlocking
          functions.
        - Added high performance TkbmMWEvent to replace slower TEvent.
        - Added ConfigureAffinity, Yield, Sleep, CurrentThreadID,
          CurrentThread, ThreadGroup and ThreadAffinityType to
          TkbmMWCustomThread.
          ThreadGroup allows selection of a thread group which share a
          common CPU core affinity. Max 256 threadgroups exists.
          Placement of the thread on a CPU core within the defined
          affinity is determined by the ThreadAffinityType setting.
          Allows for fine tuned thread optimization. Specify affinities
          in global variable: kbmMWThreadGroupAffinity.
        - Added TkbmMWPlatformMarshal for portable memory/bytes
          /utf8/string marshalling.
        - Changed kbmMWHashString from a simple xor hash to the better
          FNV-1A 32 bit hash.
        - Added portable kbmMWGetApplicationName:string returning the
          name (typically with path) of the current executable.
        - Added optional Mapping:string argument to LoadFromDataset.
          Specify sourcefield=destfield;... for custom mapping of
          fields.
        - Added new WIB message type mwmtEvent (EVT.). Its designed to
          be used for sending system/application events. For example
          used by the new progress management system, which allows for
          a client to subscribe for progress, and a server to push
          progress status, for example for long running synchrone or
          asynchrone requests (require WIB).
        - Added new transport heartbeat functionality via properties
          HeartbeatInterval and OnSendHeartbeat. OnSendHeartbeat is
          triggered every n seconds, and its the developers
          responsibility to then actually send a message/request to
          indicate a heartbeat from a client
          with help of the SendHeartbeat method on the client transport.
        - Added mwsloNullOnValueError as a new SQLite option. Instead
          of excepting the field is set to null.
        - Added Pause:boolean, PausePriority:byte to TkbmMWCustomQueue.
          If Pause=true will pause processing (sending if outbound
          queue) messages equal to or lower than PausePriority.
        - Added counters TotalPushCount, TotalTentativePopCount,
          TotalCommitCount, TotalRollbackCount, TotalRejectCount,
          TotalDeleteCount to TkbmMWCustomQueue.
        - Added support for multiple events for a single subscription
          via the Events property of TkbmMWSubscription.
          Now Subscribe adds an additional event if a subscription
          allready exists for a particular subscription subject.
          Use SubscribeReplace to replace all previously events for a
          subscription with another event.
          Unsubscribe method now overloaded with multiple methods,
          allowing to unsubscribe for a specific event for a subject.
          The "old" Unsubscribe unsubscribes all events for the given
          subject.
        - Added ThreadGroup and ThreadAffinityType to
          TkbmMWCustomAsyncMessageProcessor,
          TkbmMWCustomAsyncMessageQueueProcessor
          and TkbmMWCustomPooledMessageQueueProcessor.
        - Added new TkbmMWCustomEventMessage which is the basis for all
          WIB based messages that constitutes an event message.
        - Added new TkbmMWHeartbeatEventMessage.
        - Added properties AsEncodedString, UpperName to
          TkbmMWHTTPCustomValue.
        - Added Delete, Values, Names, ValueAsString, AsEncodedString
          to TkbmMWHTTPCustomValues.
        - Added TkbmMWHTTPMimeHeaderValueField,
          TkbmMWHTTPMimeHeaderValueFields, TkbmMWHTTPMimeHeaderValue,
          TkbmMWHTTPMimeHeaderValues, TkbmMWHTTPMultiPart,
          TkbmMWHTTPMultiParts in kbmMWHTTPUtils.pas.
          Thus now multipart HTTP messages can be parsed.
        - Added TkbmMWHTTPCustomAuthorization and
          TkbmMWHTTPBasicAuthorization along with
          new function kbmMWParseAuthorization(const
          AAuthorizationHeader:string):TkbmMWHTTPCustomAuthorization;
          for parsing authorization header.
        - Updated TkbmMWHTTPTransportStreamHelper to support new
          TkbmMWHTTPMimeHeaderValues, and added HTTPRealm:string
          property, and added
          Authorization:TkbmMWHTTPCustomAuthorization property.
        - Added  function
          HTTPResponseFromStream(AStream:TkbmMWMemoryStream):variant;
          to TkbmMWCustomHTTPService.
        - Updated known mimetypes (Added SVG, JSON, TTF, OTF, WOFF,
          EOT, MP4, MPEG4)
        - Updated known charsets (added JSON = UTF8).
        - Added TkbmMWSAFSyncRequestResponseStatus set
          (mwbrsTimeout,mwbrsAbort,mwbrsOK) which allows for
          a sync/async request to determined if a request has timed
          out, been cancelled or proceeded ok.
        - Added OnProcessorException to TkbmMWCustomSAFClientTransport
          which is triggered if the internal inbound or outbound
          processor encounters an exception.
        - Added optional APriority argument to AnnounceSubscriptions
          method.
        - Added OnClientWaitingResponse event to TkbmMWCustomClient.
          Its triggered when a request is sent that is blocking (sync).
        - Added new TkbmMWProgressManager which can be used to send and
          receive progress information via the WIB.
        - Added new FireDAC adapter.
        - Added new ciphers and hashes. The closed DCPCrypt library
          (www.cityinthesky.co.uk/opensource/dcpcrypt) has been
          picked up by C4D and resurrected with support for all
          platforms.
          Thus now added TkbmMWHashHaval, TkbmMWHashMD4, TkbmMWHashMD5,
          TkbmMWHashRipeMD128, TkbmMWHashRipe160,
          TkbmMWHashSHA1, TkbmMWHashSHA256, TkbmMWHashSHA512,
          TkbmMWHashTiger hashes, and
          TkbmMWCipherBlowfish, TkbmMWCipherCast128,
          TkbmMWCipherCast256, TkbmMWCipherDes, TkbmMWCipher3Des,
          TkbmMWCipherIce, TkbmMWCipherThinIce, TkbmMWCipherIdea,
          TkbmMWCipherMars, TkbmMWCipherMisty1,
          TkbmMWCipherRC2, TkbmMWCipherRC4, TkbmMWCipherRC5,
          TkbmMWCipherRC6, TkbmMWCipherRijndael, TkbmMWCipherAES,
          TkbmMWCipherSerpent, TkbmMWCipherTea, TkbmMWCipherTwofish
          ciphers.
        - Added TkbmMWCrypt transport encryption plugin, which supports
          all above ciphers and hashes.
        - Added mwsloSharedCache, mwsloExceptOnLocked options to
          TkbmMWSQLiteOptions.
        - Added MaxLockedWait property to TkbmMWSQLiteConnectionPool.
          It controls how long time a statement will wait (msecs) for
          a blocking lock to be lifted, before excepting.
        - Added support for accessing native SQLite library on Android.
          Make sure NOT to use KBMMW_SQLITE_STATIC_LINKED. On IOS
          you MUST use KBMMW_SQLITE_STATIC_LINKED.
        - Added UTF8CEncode and String2CBytes to TkbmMWPlatformMarshal.
          They will add an ending zero byte to the resulting byte array.
        - Added TkbmMWCustomHashStream, and made TkbmMWMD5Stream
          descend from it.
        - Added kbmMWCopyDigest and kbmMWZeroDigest functions to
          kbmMWGlobal.pas
        - Added support for defining null value for boolean value via
          the kbmMW_Null attribute (object marshalling).
        - Added 4 new exception error codes related to
          encryption/descruption to kbmMWExceptions.pas.
        - Added DontExceptOnEmptyString boolean property to
          TkbmMWJSONStreamer. If true, parsing an empty string will
          not cause exception, but only return an empty
          TkbmMWJSONObject instance.

        Fixes
        =====
        - Fixed compilation for D2009.
        - Fixed mime encoding/decoding in kbmMWMime.pas.
        - Fixed null validation/conversion for collection items (object
          marshalling).
        - Fixed storing/retrieving stream of size 0 in kbmMW Stream
          Store.
        - Fixed several other issues.

    Changes/minor additions
        =======================
        - Removed old TkbmMWDCPCrypt transport encryption plugin.
        - Changed TkbmMWThreadList to be a generic class.
        - Changed kbmMWImplode to optionally accept AQuote argument
          (default none).
        - Changed TkbmMWAuthorizationActor so the actor name is stored
          and compared case insensitive (uppercase).
        - Changed JSON object marshalling (TkbmMWJSONMarshal) to not
          add double child arrays in collections.
          Notice this makes JSON incompable with previous JSON
          streaming format.

相关文章:

  • keepalived实现lvs高可用并负载均衡lamp
  • java调试技巧
  • 浅析微信支付:支付验收示例和验收指引
  • 网络中IP地址划分
  • 链表六:二叉搜索树与双向链表
  • 新一代海量数据架构分析:NoHadoop
  • chapter1.3、JS的分支语法
  • 企业邮件系统多域通讯录共享方案
  • 取证分析:在通信过程中不关心目标的子网掩码
  • 系统维护和tcp连接
  • winform 如何控制输入法
  • DoS***_详解(转载)
  • 自定义序列化技术2:变长数组的实现
  • 2,8,10,16进制转换
  • Hadoop:Hadoop的常见启动错误(有新问题会持续更新)
  • Google 是如何开发 Web 框架的
  • .pyc 想到的一些问题
  • [LeetCode] Wiggle Sort
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • C++11: atomic 头文件
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • nodejs调试方法
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Spark RDD学习: aggregate函数
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Webpack 4 学习01(基础配置)
  • 初识 beanstalkd
  • 从零开始学习部署
  • 电商搜索引擎的架构设计和性能优化
  • 如何利用MongoDB打造TOP榜小程序
  • 项目实战-Api的解决方案
  • 一道面试题引发的“血案”
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • Nginx实现动静分离
  • ​Python 3 新特性:类型注解
  • #laravel 通过手动安装依赖PHPExcel#
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (003)SlickEdit Unity的补全
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (第27天)Oracle 数据泵转换分区表
  • (二十四)Flask之flask-session组件
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)Sublime Text3配置Lua运行环境
  • (转载)虚函数剖析
  • *** 2003
  • ./和../以及/和~之间的区别
  • .NET CORE Aws S3 使用
  • .net web项目 调用webService
  • .net 流——流的类型体系简单介绍