kbmmw 5.01 发布

简介: Important notes (changes that may break existing code) ====================================================== * Officially now only supporting XE2 and forward.
Important notes (changes that may break existing code)
======================================================
* Officially now only supporting XE2 and forward. Support for pre XE2
may not be complete.

New stuff
=========
- Added support for RAD Studio 10.2 Tokyo, including Linux support
(currently in beta)
  Include new sample simpleinvocation LinuxServer demo.
- Officially now only supporting XE2 and forward. Support for pre XE2
may not be complete.
- Added RemoteLocationsPrimaryPart to
TkbmMWAuthorizationTransportConstraint (default false).
  If set to true, will only compare primary part of
clientidentity.remotelocation.
  Primary part is defined by everything up til the last ':'. In most cases
  that will mean the IP address without the port number.
- Added IkbmMWLogFormatter interface to kbmMWLog.
- Added TkbmMWStandardLogFormatter to kbmMWLog. It contains vastly
improved features for
  controlling the look and layout of the log output. Its the default
used log formatter.
- Added TkbmMWSimpleLogFormatter to kbmMWLog. It outputs a log with only
datetime,
  type (info/warning/error/fatal etc) and log string.
- Added LogFormatter property to IkbmMWLogManager. It can be set to a
custom log formatter.
- Added mwldtRaw log data type and methods LogRaw to IkbmMWLog. It
allows for logging
  bytes or strings without interpretation/reformatting.
- Added global SystemLog instance which will always output to system log
outputs.
  It is used as a fallback in case the regular log system excepts.
- Added support for marshalling/unmarshalling named enum values via the
new kbmMW_Enum
  attribute.
  Its useful when an enum value cant be used as an identifier or its
value should be different
  from its presented name.
- Added ExceptOnUnknownType to TkbmMWCustomRTTIMarshal. It controls if
to throw an exception
  if an unknown type is accessed or not (default true).
- Added support for marshalling/unmarshalling TDictionary<K,V> types.
- Added support for correctly instantiating classes in unmarshalling
that contains a capacity
  constructor argument.
- Added Run methods to TkbmMWScheduler. It allows for one time run and
forget scheduled async
  code. They are used in the same way as the Schedule methods, but sets
Occurs to mwsoRun.
  The job will be automatically unscheduled after the run.
- Added overloaded DelayInitial(const AInitialDelaySecs:double) to
IkbmMWScheduledEvent.
  It allows for directly giving an initial delay in seconds. It supports
fractional second
  values.
- Added Clear to TkbmMWScheduledEvents (scheduler.Events) to allow for
clearing all scheduled
  events. Running events will be allowed to finish.
- Added GetNameSpaceByURI, DefaultNameSpace, DefaultNameSpaceURI to
TkbmMWDOMXMLNameSpaceList.
- Added SearchRelNodeByID, SearchNodeByID, SearchRelNodeByGivenName,
SearchNodeByGivenName
  to IkbmMWDOMXMLParser.
- Added ExpandNameSpace, GivenName, ChildrenByGivenName, ChildByGivenName,
  CheckChildByGivenName to TkbmMWDOMXMLNode.
- Added CheckNodeByGivenName, NodeByGivenName to TkbmMWXMLNodeList.
- Added missing ADSDBF support to kbmMWReg.
- Added
mwrtoOptionalInsert,mwrtoKeyNotNullInsert,mwrtoOptionalModify,mwrtoKeyNotNullModify,
  mwrtoOptionalDelete,mwrtoKeyNotNullDelete and table modifier flags
  OIM/OMI (optional insert/modify), OID/ODI (optional insert/delete),
  OMD/ODM (optional modify/delete), OI (optional insert),
  OD (optional delete), OM (optional modify),
  KIM/KMI (insert/modify on key not null), KID/KDI (insert/delete on key
not null),
  KMD/KDM (modify(delete on key not null), KI (insert on key not null),
  KM (modify on key not null), KD (delete on key no null)
  to TkbmMWResolverTableOption
  They allow for more finegrained definition on when
insert/update/delete should happen.
  If one of the optional (OIM,OMD,OID,OI,OD,OM) is given, no exception
will be raised for
  the table when an operation did not succeed, and resolving will continue.
  If one of the key (KIM,KMD,KID,KI,KM,KD) is given, record resolve
operation will be skipped
  for the specific record if key is null.
- Added ReadBOM overloaded methods with default TEncoding option to
TkbmMWPlatformMarshal.
- Added overloaded kbmMWTextToString, kbmMWExpectText,
kbmMWStringRightPad, kbmMWStringLeftPad,
  kbmMWGetComputerName functions to kbmMWGlobal.pas.
- Added optional ACallback anonymous function to SendAsyncRequest and
SendAsyncRequestEx in
  kbmMWClient.pas (WIB only).
  It allows for providing an anonymous function that should be called
when an async response
  is returned. The function must follow this type:
    function(Sender:TObject;
TransportStream:IkbmMWCustomTransportStream):boolean;
- Added LOB blob/clob support (user fix) to DOA adapter.
- Vastly improved XSD importer.
- Added generic Object Notation framework for building virtual object
trees consisting of
  TkbmMWONNative, TkbmMWONArray and TkbmMWONObject which all are based
on TkbmMWONCustomObject.
- Added YAML parser/generator based on object notation framework.
- Added Messagepack parser/generator based on object notation framework.
- Added BSON parser/generator based on object notation framework.
- Added support for converting XML to and from object notation format via
  LoadFromObjectNotation and SaveToObjectNotation functions.
- Added new TkbmMWCustomSmartService and TkbmMWCustomHTTPSmartService
services, which
  can be selected in the service wizard to create smart services. Smart
services
  supports tagging any function to be exported to a smart client or a
REST client
  (TkbmMWCustomHTTPSmartService required).
- Updated transports to support marshalling objects via the transport.
- Added several near lock free features to kbmMWGlobal, including
TkbmMWLockFreeStack,
  more interlocked functions, lock free array GC fixes, optional
TkbmMWREWLock statistics,
  support for TkbmMWMREWLock can switch to TMonitor for reader/writer
fair support.
- Optimized many algorithms like TkbmMWStringBuilder, TkbmMWGenerateGUID,
  TkbmMWGenerateShortGUID and many more to improve performance overall.
- Added many new general purpose functions to kbmMWGlobal.
- Added direct support for salt in hash functions deriving from
TkbmMWCustomHash.
- Added support for anonymous functions in async kbmMWClient requests (WIB)
- Added new kbmMWRTTI unit with loads of RTTI functionality.
- Added YAML stream format for kbmMemTable and descendants.
- Added Messagepack stream format for kbmMemTable and descendants.
- Added BSON stream format for kbmMemTable and descendants.
- Added object marshalling to and from YAML.
- Added object marshalling to and from Messagepack.
- Added object marshalling to and from BSON.
- Added ServicePath property to TkbmMWClientIdentity.
- Added MaxLogins to TkbmMWAuthorizationManager which is default 100 to
prevent
  potential login spam.
- Added support for HTTPSys based transport for Windows. Its specially
useful
  for high performance RESTful applications.
- Added AutoRegisterServices method to TkbmMWServer which can be used
for automatically
  locating and registering any service that has the kbmMW_Service
attribute defined.
  It makes use of the old RegisterService and RegisterServiceByName
optional.
- Added LocalSinceEpochMS, UTCSinceEpochMS, Temporenc to TkbmMWDateTime.
Temporenc
  is a very compact binary encoding of a datetime value.
- Added FastSetUTC method to TkbmMWDateTime to threadsafely very fast
setting
  the UTC value of an already defined TkbmMWDateTime record. The record
  MUST be initialized before using FastSetUTC, for example by
dt:=TkbmMWDateTime.Now;
- Added ValueToStream, ValueFromStream, ValueToBytes and ValueFromBytes in
  TkbmMWCustomRTTIMarshal. Allows for easy marshalling objects to and
from bytes and streams.
- Added ExceptOnUnknownType boolean property to TkbmMWCustomRTTIMarshal.
  Controls if an exception should be thrown in case a type cant be
marshalled or
  unmarshalled, or it should be silently skipped.
- Added Devart MyDAC support (DMYDAC).
- Added CORS support (Cross Origin-Resource Sharing) in
TkbmMWCustomHTTPService and
  descendants. (OnCORS event).
- Added PerformOPTIONS and PerformPATCH support to TkbmMWCestomHTTPService.
  (OnOptions and OnPatch in TkbmMWEventHTTPService).
- Added REST transport stream format which must be used if non HTTPSys
transport
  is used for smart services.
- Added TkbmMWSmartClient which allows simple and easy access to server
side smart functions.
  Check simpleinvocation sample.
- Added high quality random functions in new kbmMWRandom unit.
  TkbmMWRandomDelphi (32 bit non high quality ramdom!),
TkbmMWRandomSplitMix (64 bit)
  TkbmMWRandomXoroshiro128Plus (64 bit), TkbmMWRandomXoroshiro1024 (64 bit),
  TkbmMWRandomPCGUInt32 (32 bit), TkbmMWRandomMersenneTwisterUInt32 (32
bit),
  TkbmMWRandomMersenneTwisterUInt64 (64 bit)
- Added high quality pronouncable password generators in new unit
kbmMWPassword.
  TkbmMWMixerPasswordGen, TkbmMWKoremutakePasswordGen
- Added support for ExchangeType in TkbmMWAMQPClient.
- Added new GC and CloseAndGC methods in TkbmMWAMQPChannel to force
getting rid of
  defunct/cached but unused AMQP channels.
- Added IPVersion property to TkbmMWCustomTCPIPIndyClientTransport.
- Split out all lockfree algorithms from kbmMWGlobal to kbmMWLockFree unit
  to make kbmMWGlobal smaller, partly due to internal compiler errors.
- Fixed to default not inlining kbmMWMREWLock methods on 32 bit CPUs due to
  unstable compiler which can result in F2084/C2491 error combinations.
- Moved all lockfree code to new kbmMWLockFree.pas unit.
- Added TkbmMWLockfreeStack.
- Changed so XE6/XE7 SKU's do not compile in new kbmMWLockFree contents
  due to compiler errors.
- Added kbmMW ORM OPF (Object Relational Modelling Object Persistence
Framework)
  in unit kbmMWORM.pas. Compiles with XE5 and higher. Check new ORM demos.
  Currently in beta.
- Added TkbmMWBinaryPasswordGen to kbmMWPassword.pas. Generates random
binary keys
  of any length, suitable for cryptographic use.
- Added functions Year(ADateTime:TDateTime=Math.NaN):word;
  function Month(ADateTime:TDateTime=Math.NaN):byte;
  function DayOfMonth(ADateTime:TDateTime=Math.NaN):byte;
  function HourOfDay(ADateTime:TDateTime=Math.NaN):byte;
  function MinuteOfHour(ADateTime:TDateTime=Math.NaN):byte;
  function SecondOfMinute(ADateTime:TDateTime=Math.NaN):byte;
  to TkbmMWDateTime.
- Improved Null handling in kbmMWNullable and TkbmMWDateTime.
- Improved Modified support in kbmMWNullable and TkbmMWDateTime.
- Added functions function OutputToFile(const
AFileName:string=''):IkbmMWLocalFileLogManager;
  procedure OutputToDefault;
  function OutputToStrings(const AStrings:TStrings; const
ASynchronized:boolean = true):IkbmMWStringsLogManager;
  function OutputToStringsAndFile(const AStrings:TStrings; const
ASynchronized:boolean = true; const
AFileName:string=''):IkbmMWTeeLogManager;
  function OutputToTee:IkbmMWTeeLogManager;
  procedure OutputToNull;
  to IkbmMWLog to make it easier to redirect output to some standard
destinations.
- Added mwddLog to kbmMWGlobal, as a new output destination for kbmMW
lowlevel debugging.
  Will output to the default logger.
- Fixed and improved TkbmMWCircularBuffer.
- Added kbmMWSmartUtils.pas containing Use class with easy to use
methods to convert arguments and results.

Changes/minor additions
=======================
- Removed (mwloProcessThreadInfo,mwloThreadName from TkbmMWLogOption
since its now controlled
  by the log formatter.
- Changed Activate method of IkbmMWScheduledEvent to have true as
default argument AValue.
- Changed SetAsDuration and GetAsDuration to use TkbmMWDuration instead
of TkbmMWDateTime.
- Added support for checking if path is accessible in
TkbmMWBufferedFileStream.Create.
- Changed JSON parser/generator to be based on the object notation
framework.
- Improved scalability of FastCGI services to better spread load accross
multiple instances.

Fixes
=====
- Fixed A/V when attempting to use audit file.
- Fixed missing clearing of TkbmMWDuration when parsing duration
strings, resulting in
  an incorrect duration value (instead of null) on invalid duration strings.
- Fixed TDuration.Passed(const ADuration:TkbmMWDuration) which didnt
return correct value.
- Fixed deactivating precise scheduled events.
- Fixed events scheduled to start on day, month, week or year boundaries.
- Fixed issues to initial delay in scheduled events.
- Fixed parsing tags crossing line boundaries in XML parser.
- Fixed various namespace issues in XML parser.
- Fixed WIB compilation issue for XE.
- Fixed TkbmMWStreamStore offset bug when writing first segment.
- Fixed potential shutdown issue in Indy10 transports due to Indy10 bug.
- Fixed kbmMWDependency non accumulating memory leaks.
- Fixed NexusDB transport compilation.
- Fixed Autoinc field detection in EDB (ElevateDB) adapter.
目录
相关文章
|
网络协议 中间件 网络架构
STUN原理
这篇文章详细介绍了STUN(Session Traversal Utilities for NAT)的原理和应用,解释了STUN如何帮助检测NAT设备的存在并获取其分配的IP地址和端口号,以及如何在两个通信端点之间建立一条可穿越NAT的P2P链接,特别在SD-WAN网络中的应用,并提供了通过Docker搭建STUN服务器的方法。
2382 0
|
编解码
流媒体技术学习笔记之(五)码流、码率、采样率、比特率、帧速率、分辨率、高清视频的概念
码流、码率、采样率、比特率、帧速率、分辨率、高清视频的概念   高清视频主要编码   480P格式:720x480  720P格式:1280x720 【表现体育节目、快速运动的视频时,720P更明显】 1080P格式:1920x1080 【适合普通电视节目、电影等慢速运动的视频时,1080P更明显】 1、码流(码率)           码流(Data Rate)是指视频文件在单位时间内使用的数据流量,也叫码率或码流率,通俗一点的理解就是取样率,是视频编码中画面质量控制中最重要的部分,一般我们用的单位是kb/s或者Mb/s。
8198 0
|
druid Java 数据库连接
spring boot整合mybatis+mybatis-plus
Spring boot对于我来说是一个刚接触的新东西,学习过程中,发现这东西还是很容易上手的,Spring boot没配置时会默认使用Spring data jpa,这东西可以说一个极简洁的工具,可是我还是比较喜欢用mybatis,工具是没有最好的,只有这合适自己的。
3800 0
|
负载均衡 算法 应用服务中间件
IIS负载均衡
原文:IIS负载均衡 春节将至,在此祝愿各位园友春节愉快!新年大吉!万事如意!!!   在大型Web应用系统中,由于请求的数据量过大以及并发的因素,导致Web系统会出现宕机的现象,解决这一类问题的方法我个人觉得主要在以下几个方面: 1.IIS 负载均衡。
1868 0
|
Java 开发工具 Android开发
Kotlin学习(一)—— IDEAIntelliJ IDEA的安装配置及Kotlin的环境部署
一.概括 从这篇博客开始,我们就正式的开始学习Kotlin了,首先我们来了解下他的几个重点 Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。 Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。
2469 0
|
监控 安全 搜索推荐
比较全的OA系统功能模块列表
如何判断一款协同OA软件,是否智能,是否注重细节,是否足够成熟呢?产品的设计优势、功能特性,需要我们总结,也需要让更多的用户了解。功能到底强在哪里?下文中将给出一个详尽的答案。 软件安装 傻瓜化向导式安装,自动智能配置,无需专人指导和配置 客户端电脑无需安装任何软件,使用浏...
5585 0
|
Linux
Linux使用imagemagick的convert命令压缩图片、节省服务器空间
一、安装: sudo apt-get install imagemagick 二、说明 imagemagick的命令convert可以完成此任务,其参数-resize用来改变图片尺寸,可以直接指定像素值,也可以指定缩放百分比。
2384 0

热门文章

最新文章