KbmMW 4.5 发布
We are happy to announce the release of kbmMW v. 4.50.00
Professional, Enterprise and CodeGear Edition with XE6 and XE7 support. kbmMW continues to set the bar for what an n-tier product must be
capable of in the real world! Keywords for this release: - XML Schema support for object generation and marshalling
(with full XML and JSON support)
- RAD Studio XE6 and XE7 support
- FastCGI hosting support
- New algorithm for highest performance thread locking
- New XML parsing optimizations.. 20 fold faster and
with options to use it with one of the most compact
memory footprints of all XML implementations for Delphi!
- New timezone aware TkbmMWDateTime type
- New kbmMwNullable generic type
- Super enhanced Remote Desktop v2 application with chat,
strong encryption, paint on remote desktop, easy branding,
enhanced authorization/authentication and much more
- Lots of additional optimizations, enhancements and fixes! 4.50.00 Sep 10 2014 New stuff
=========
- Added XSD parser support and code generator. A demo is
included, showing how the XSD parser is used in combination
with the code generator, to generate Pascal objects that
kbmMW can use for marshalling to and from objects.
- Added CaptureMode to kbmMW RemoteDesktop client/server
classes to allow for selecting between GDI and DirectX.
Default is GDI.
- Added new ViewMode types including mwrdvm_Device to kbmMW
RemoteDesktop client/server classes to allow for using
the best fitting view mode, compared to the current screen
bitdepth on the server end.
By using the best fitting view mode, the RemoteDesktop server
part use less CPU.
- Added support in kbmMW RemoteDesktop to detect if screen
capture is to slow to be useful (typically
on old graphic cards like Matrox G400 with Hardware
accelleration enabled).
- Added new kbmMWNullable generic. If you need to define a
simple datatype that should be nullable, you can
define it as var myInt:kbmMWNullable<integer>; for example.
It can be used as any regular variable.
Use myInt.IsNull to check if its null. If you have compile
error due to conversion problems you can
use myInt.Value to access the value directly.
- Added new TkbmMWDateTime type to replace TDateTime. It works
similar to TDateTime except it is timezone and null aware,
and knows if its being used to store a time, a date or a date
time value, and thus can
provide correct matching string conversion automatically.
It supports more than 760 different timezone abbrevations,
and has full support for ISO8601 formats.
Internally it always store time as UTC with a timezone
difference, depending on the chosen timezone.
On assigning a TDateTime value to it, it always assumes not
timezone given (and thus its UTC).
When assigning Now to it, you will want to use the LocalTime
property to assign now.
Eg. mytime:TkbmMWDateTime; mytime.LocalTime:=Now. By doing
so, it will autodetect the appropriate local timezone.
- Added new very fast TkbmMWLockFreeHashArray to kbmMWGlobal.
Its as the names imply a lock free
hash array which stores an integer value with a uint64 key.
- Enhanced TkbmMWLock to automatically detect lock escalation,
and allow finetuning of spin/sleep time.
Tests show that TkbmMWLock is now the fastest implementation
of a MREW with lock escalation handling for
Delphi/C++Builder. In addition it allows for checking which
threads holds which locks at any time,
via the kbmMWConcurrentMREWReadLocks hash array.
- Added to kbmMWGlobal.pas
function kbmMWExpectChars(var APChar:PChar;
const AChars:TSysCharSet):boolean;
function kbmMWSearchChars(var APChar:PChar;
const AChars:TSysCharSet):boolean;
function kbmMWSearchDigit(var APChar:PChar):boolean;
function kbmMWSearchNonDigit(var APChar:PChar):boolean;
function kbmMWGetDateFromWeek(const AYear:integer;
const AWeekNo:integer;
const ADayInWeek:integer):TDateTime;
function kbmMWGetDateFromDayOfYear(const AYear:integer;
const ADayOfYear:integer):TDateTime;
function kbmMWRoundToPowerOf2(const AValue:integer):integer;
function kbmMWMurmurHash3(const AValue:cardinal):cardinal;
function kbmMWMurmurHash3(const AValue:int64):int64;
function kbmMWDigestToString(
const ADigest:TkbmMWDigest256):string;
procedure TkbmMWStringBuilder.Append(
const AStringBuilder:TkbmMWStringBuilder);
- Added function
TkbmMWRegisteredTransportStreamList.ControllerClassByID(
AID:string):TkbmMWCustomTransportStreamControllerClass;
- Added support for multiple statements in SQLite adapter
function TkbmMWSQLiteConnection.Query(
const AClass:TkbmCustomMemTableClass;
const ASQL:string):TkbmCustomMemTable;
Only last will however be returned.
- Added to kbmMWXML.pas:
TkbmMWXMLNativeDataType to handle true native XML datatype
understanding.
(TkbmMWDOMXMLNode) properties ChildrenByName, ChildrenByID,
AttribByNameIsNil
(TkbmMWDOMXMLNode) functions GetNativeDataType,
GetDataTypeName
- Added support for ftShortint as parameter and field type.
- Added support for int64/uint64 versions of CompareAndExchange
for pre XE.
- Added support for XE6.
- Added support for XE7.
- Added new HTTP FastCGI able custom service and demo
application.
- Added mwdtDBTimings,mwdtDBTransaction options to
kbmMWDebugTypes.
If mwdtDBTimings is enabled, ms accurate timings are output
for DB operations.
If mwdtDBTransaction is enabled, DB transaction start,
commit and rollback are logged.
- Added fast TkbmMWStringLookup. It is a fast hash based simple
string list for unique strings,
with indexed access to each string.
- Added fast TkbmMWStringLookupList. Its a fast string
key/value has based list for unique key names and values,
with indexed access to each key string and value access via
key string.
- Added TkbmMWCustomMessagingServerTransport.
CreateRequestMessage.
- Added TkbmMWCustomMessagingServerTransport.
CreateServiceCallMessage.
- Added TkbmMWVirtualMessagingServerTransport component, which
can be used for adding one or more local/internal only WIB
segments within an application.
- Added more overloaded SendMessage and SendPrioritizedMessage
methods to TkbmMWCustomMessagingClientTransport.
- Added support for handing nil where TkbmMWClientIdentity is
expected in CreateMessage, SendMessage and
SendPrioritizedMessage.
- Added kbmMWObjectMarshalInitialize and
kbmMWObjectMarshalFinalize which should be
called at application start and end time in C++Builder
applications to
ensure timely correct initialization of object marshalling.
In Delphi its not required to call them.
- Updated Remote Desktop with encryption (SHA256), new chat
features, drawing features and improved login features. Changes/minor additions
=======================
- Updated object marshaller (incl. JSON and XML) to support new
kbmMWNullable and TkbmMWDateTime types.
Internally there have been made many changes to also support
objects defined by XSD import.
- Dropped own implementation of TkbmMWEvent, and instead
aliases TkbmMWEvent to fastest Delphi/C++Builder
implementation for given Embarcadero version.
- Removed from kbmMWGlobal.pas
function kbmMWDateTimeToISO8601String,
function kbmMWISO8601StringToDateTime,
function kbmMWDateToISO8601String,
function kbmMWISO8601StringToDate,
function kbmMWTimeToISO8601String,
function kbmMWISO8601StringToTime,
they have been replaced with TkbmMWDateTime.
- Removed from kbmMWXML.pas:
function kbmMWXMLTryStringToDateTime,
function kbmMWXMLDateTimeToString,
function kbmMWXMLStringToDateTime,
function kbmMWXMLDateToString,
function kbmMWXMLStringToDate,
function kbmMWXMLTimeToString,
function kbmMWXMLStringToTime,
Instead use TkbmMWDateTime functionality.
- Modified in kbmMWGlobal.pas
class function TkbmMWPlatformMarshal.UTF8Decode(
const ABytes:TkbmMWBytes;
ACount:TkbmNativeInt = -1):string;
Added optional ACount.
- Made general use of TkbmMWLock and TkbmMWDateTime internally.
- Performance optimized XML parser.
Large XML files now parses 20-fold faster.
(example 165 MB XML now parsed in 7.6 secs. Before parsed
in 3.5 minutes)
- Added optional KBMMW_COMPACT_XML definition which if defined,
lowers memory use by XML parser significantly at a
parsing performance penalty of 40%.
- Updated AnyDAC adapter.
- Updated FireDAC adapter.
- Added distance delegate for generic TkbmMWSortedList
constructor.
- Added TkbmMWDigest512 to kbmMWGlobal.pas.
- Updated JNI.pas and JNIUtils.pas to latest version and fixed
bugs.
- Optimized WIB message processing performance for server
request/calls. Fixes
=====
- Fixed bugs in kbmMWCipherHash.pas:
procedure TkbmMWCustomHash.UpdateString(const Str:string);
function TkbmMWCustomCipher.EncryptString(
const Str:string):string;
function TkbmMWCustomCipher.DecryptString(
const Str:string):string;
function TkbmMWCustomBlockCipher.EncryptString(
const Str:string):string;
function TkbmMWCustomBlockCipher.DecryptString(
const Str:string):string;
- Fixed bugs in kbmMWMime.pas:
function kbmMWMimeEncodeString(const S:string):string;
function kbmMWMimeEncodeStringNoCRLF(const S:string):string;
function kbmMWMimeDecodeString(const S:string):string;
function kbmMWMimeDecodeString2Bytes(const S:string):
TkbmMWBytes;
procedure kbmMWMimeEncode(const InputBuffer:TkbmMWBytes;
var InputBufferOffset:cardinal;
const InputByteCount: Cardinal;
var OutputBuffer:TkbmMWBytes;
var OutputBufferOffset:cardinal);
function kbmMWMimeDecodedSize(const InputSize: Cardinal):
Cardinal;
- Fixed bug in SQLite adapter when query didnt result in fields.
- Fixed function kbmMWEncodingToString(
const AEncoding:TEncoding):string; to use correct
lowercase encoding names.
- Fixed bugs in kbmMWCustomClientMessagingTransport.pas
- Fixed multi database operation on user transaction bug.
- Fixed compilation for pre XE.
- Fixed transport backwards compatibility support.
- Fixed client app automatically linking in TkbmMWServer in
kbmMW Ent Edition.
- Fixed A/V for IOS apps, as atomic 64 bit operations do not
work correctly on IOS.
- Fixed authorization manager login bugs.
- Fixed TkbmMWMemoryStream.CopyFrom when source is a
TkbmMWMemoryStream.
- Fixed Java service (Windows only support).
- Fixed TkbmMWHTTPCustomValues where value name was wrongly
uppercased.
- Fixed TkbmMWFileClient file transfer issues and added new
State property to know
what operation is currently running.
KbmMW 4.5 发布的更多相关文章
- kbmmw 5.04 发布
增加了一大波功能,消灭了一大堆问题,也肯定引进了一大票BUG.We are happy to announce the release of our latest version of kbmMW. ...
- kbmmw 5.02发布
5.02.00 May 27 2017 Important notes (changes that may break existing code) ========================= ...
- kbmmw 5.01 发布
Important notes (changes that may break existing code) ============================================= ...
- kbmmw 5.09 发布
New stuff ========= - Added kbmMWSmartBind.pas unit with optional kbmMWSmartBindVCL.pa ...
- kbmMW授权管理解析(The kbmMW Authorization manager explained)
从kbmMW v.4.40开始,引入了一个新的非常灵活的授权管理器. 它的目的是为开发人员提供为用户定义资源权限的功能,这是一个可选功能,将现有的授权事件驱动方案内置到kbmMW中,使授权开发任务更容 ...
- kbmmw 5.05.00 发布
新年前最后几天,kbmmw 发布了新版本,增加一大波功能.we are happy to announce v5.05.50 of our popular middleware for Delphi ...
- KbmMW 4.30.00 发布
今天早上,KbmMW发布了4.30.00 版,这个版本开始支持XE4 的WIN/WIN64/OSX. 暂时不支持ios开发,同时加强了通过JSON 的对象序列化.还有就是解决了我提交的几个有关 汉字处 ...
- KbmMW 4.40.00 正式版发布
经过快3个月的测试,kbmmw 4.40 正式版终于在圣诞节前发布了. We are happy to announce the availability of a new kbmMW release ...
- KbmMW 4.40.00 测试发布
经过漫长的等待,支持移动开发的kbmmw 4.40.00 终于发布了,这次不但支持各个平台的开发, 而且增加了认证管理器等很多新特性,非常值得升级.具体见下表. 4.40.00 BETA 1 Oct ...
随机推荐
- Java的Synchronized
原理,注意看输入输出,不了解原理是想不到会这样输出的. http://www.cnblogs.com/paddix/p/5367116.html 还有一个要注意的是一个对象一个monitor类
- 机器学习入门-集成算法(bagging, boosting, stacking)
目的:为了让训练效果更好 bagging:是一种并行的算法,训练多个分类器,取最终结果的平均值 f(x) = 1/M∑fm(x) boosting: 是一种串行的算法,根据前一次的结果,进行加权来提高 ...
- Java多线程之使用ATM与柜台对同一账户取钱
钱数要设置成静态的变量,两种取钱方式操作的是同一个银行账户! 废话不多说,直接上代码.注释写的都很详细!!! package com.thread.multi2; public class Bank ...
- Linq相关
Linq(语言集成查询) 相关资料如下: 1. Linq语言集成查询 百度百科 2. 30分钟Linq教程 3. Linq查询表达式(C#编程指南) 4. Linq十个常用查询 5. Linq技术专题 ...
- 注册驱动MySQL的驱动程序
1.将驱动程序文件添加到应用项目 将驱动程序mysql-connector-Java-5.1.6-bin,复制到web应用程序的web-INF\lib下,web应用程序就可以通过JDBC接口访问MyS ...
- python中的__name__=='__main__'如何简单理解(一)
1. 摘要: 通俗的理解_name_ == '_main_':假如你叫小明.py,在朋友眼中,你是小明(_name_ == '小明'):在你自己眼中,你是你自己(_name_ == '_main_') ...
- Python bytearray() 函数
Python bytearray() 函数 Python 内置函数 描述 bytearray() 方法返回一个新字节数组.这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < ...
- Maven项目标准目录结构
-----------------------siwuxie095 Maven 项目标准目录结构 1.Maven 项目分为两种 (1)Java 项目 (2)Web 项目 2.对于 Java 项目 其中 ...
- 【vs2010】转换到 COFF 期间失败: 文件无效或损坏
不知怎么本来编译好好的VS2010环境,忽然出现“转换到COFF 期间失败:文件无效或损坏”的链接错误.花了好多天,试了好多方法,最终解决了这个问题. 现在罗列一下这几种解决方案: 方案1: ...
- day12:vcp考试
Q221. An administrator is creating a new Platform Service Controller Password Policy with the follow ...