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.
KbmMW 4.40.00 正式版发布的更多相关文章
- KbmMW 4.40.00 测试发布
经过漫长的等待,支持移动开发的kbmmw 4.40.00 终于发布了,这次不但支持各个平台的开发, 而且增加了认证管理器等很多新特性,非常值得升级.具体见下表. 4.40.00 BETA 1 Oct ...
- .NET 5.0 RC1 发布,离正式版发布仅剩两个版本
原文:http://dwz.win/Qf8 作者:Richard 翻译:精致码农-王亮 说明:1. 本译文并不是完全逐句翻译的,存在部分语句我实在不知道如何翻译或组织就根据个人理解用自己的话表述了.2 ...
- Python 3.8.0 正式版发布,新特性初体验 全面介绍
Python 3.8.0 正式版发布,新特性初体验 北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PE ...
- Angular2正式版发布,Wijmo抢先支持
Angular2正式版发布 9月15日,Angular 2 的最终版正式发布了.作为 Angular 1 的全平台继任者 -- Angular 2 的最终版,意味着什么? 意味着稳定性已经得到了大范围 ...
- Redis 3.0正式版发布,正式支持Redis集群
Redis是一个开源.基于C语言.基于内存亦可持久化的高性能NoSQL数据库,同时,它还提供了多种语言的API.近日,Redis 3.0在经过6个RC版本后,其正式版终于发布了.Redis 3.0的最 ...
- PyPy 2.1 正式版发布
PyPy 2.1 Beta1 才刚刚在2天前发布,今天 PyPy 宣布 2.1 正式版发布. 值得关注的改进内容有: JIT support for ARM, architecture version ...
- Appium路线图及1.0正式版发布
Appium更新的速度极快,从我试用时候的0.12到1.0(0.18版本后就是1.0),完全符合移动互联网的节奏. 更新可能会慢,可以多试几次 整理了testerhome上思寒发表的帖子,让我们来看下 ...
- Java 开源博客——B3log Solo 0.6.1 正式版发布了!
Java 开源博客 —— B3LOG Solo 0.6.1 正式版发布了!欢迎大家下载. 该版本主要是改善细节体验,并加入了一款 Metro 风格的皮肤. 特性 基于标签的文章分类 Ping Goog ...
- Eclipse 4.3正式版发布
Eclipse 4.3正式版发布 作者:chszs,转载需注明.博客主页: http://blog.csdn.net/chszs Eclipse 4.3版代号为Kepler. 主要特性如下: 1. E ...
随机推荐
- LG4777 【模板】扩展中国剩余定理(EXCRT)
题意 题目描述 给定\(n\)组非负整数\(a_i, b_i\),求解关于\(x\)的方程组 \[\begin{cases} x \equiv b_1\ ({\rm mod}\ a_1) \\ x\e ...
- form表单传递对象数组
ajax传递数组.form表单提交对象数组 在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用 form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致 ...
- android高速上手(三)经常使用控件使用
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangpeifeng669/article/details/26288387 完毕了android的 ...
- Cocos2d-x调用Java 代码
Java代码: package com.dishu; import com.dishu.org.R; import android.app.Activity; import android.app.A ...
- bzoj1215 24点游戏
Description 为了培养小孩的计算能力,大人们经常给小孩玩这样的游戏:从1付扑克牌中任意抽出4张扑克,要小孩用“+”.“-”.“×”.“÷”和括号组成一个合法的表达式,并使表达式的值为24点. ...
- PAT 甲级 1009 Product of Polynomials (25)(25 分)(坑比较多,a可能很大,a也有可能是负数,回头再看看)
1009 Product of Polynomials (25)(25 分) This time, you are supposed to find A*B where A and B are two ...
- KMP算法解释
给定两个字符串A,B,判断T是否为S的子串(变式:寻找子串B在串A中的位置). 要求一个O(|A|+|B|)的做法. 通常称A为目标串(或主串),B为模式串. 算法过程: 我们假设串A的长度为n,串B ...
- windows8.1中组件服务DCOM配置里属性灰色不可修改的解决办法
由于电脑升级,更换成了windows8.1的64位操作系统,今天遇到组件服务中DCOM配置里IIS Admin Service属性呈现灰色,不能修改. 查找官方文档,原来这是win8.1 x64的安全 ...
- LLMNR欺骗工具Responder
LLMNR(Link-Local Multicast Name Resolution,链路本地多播名称解析)协议是一种基于DNS包格式的协议.它可以将主机名解析为IPv4和IPv6的IP地址.这样用户 ...
- jsp中 RequestDispatcher接口的两种跳转:forward()和include()
在web程序中,经常是由多个Servlet来完成请求.RequestDispatcher接口就是为了多个Servlet之间的调整而实现的.该接口可以用httpSerbletRequest的getReq ...