KBMMW 4.92.00 发布
We are happy to announce the release of kbmMW Professional and
Enterprise Edition. Yet again kbmMW continues to set the bar for what an n-tier product must
be capable of in the real world! Keywords for this release: - New memory debugging/leak detection functionality.
- Lots of performance optimizations.
- Extreme performance threadsafe lockfree arrays and dynamic arrays.
- Updated file log and tee log managers.
- Lots of other enhancements and additions to existing functionalty.
- Bug fixes Look at end of post for detailed list of additions, changes and fixes. Professional and Enterprise Edition is available for all with a current
active SAU.
If your SAU has run out, please visit our shop to extend it with another
12 months. CodeGear Edition is available for free, but only supports a specific
Delphi/Win32 SKU, contains a limited feature set and do not include source. Please visit https://portal.components4developers.com to download. ---- kbmMW is the premiere n-tier product for Delphi, C++Builder and FPC
on .Net, Win32, Win64, Linux, Java, PHP, Android, IOS, embedded devices,
websites, mainframes and more. Please visit www.components4developers.com for more information about kbmMW. ---- Components4Developers is a company established in 1999 with the purpose
of providing high quality development tools for developers and
enterprises. The primary focus is on SOA, EAI and systems integration
via our flagship product kbmMW. 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.92.00 April 2 2016 Important notes (changes that may break existing code)
======================================================
* Changed TkbmMWAfterMessageProcessedEvent by adding argument
var AAction:TkbmMWMessageProcessingSuccessAction New stuff
=========
- Added AWaitUntilConnected (default false) and
AWaitUntilDisconnected (default false) to TkbmMWAMQPClient Connect/
and Disconnect methods.
- Generally slightly improved C++ support.
- Added new TkbmMWDependency class for guaranteeing initialization and
finalization order of units. Units depended on are initialized first
and finalized later. Modified all kbmMW code to use dependency
class.
- Added new TkbmMWDebugMemory class for keeping track of memory
allocations and leak detection. Enterprise Edition only.
Include kbmMWDebugMemory as early as possible in your uses clause
(but after FastMM if you are specifying that).
See demo project (debugmemory) for usage.
- Added compact stack version of TkbmMDebugStackTrace not requiring
addition memory allocations while running.
- Added support for global function in TkbmMWScheduler.Schedule.
- Added PrevRunStamp in TkbmMWScheduledEvent.
- Added TkbmMWInterlocked.Increment/Decrement for uint64.
- Added TkbmMWLockFreeHashArray<T> where a custom value type can be
used. key is still cardinal/uint64.
- Added TkbmMWLockFreeHashArray64 (64 bit data value).
- Added ResetEnum, Enum, Capacity, Count, AssignValue to all
TkbmMWLockFreeHashArray implementations.
- Added optional argument ACount:integer=0 to
TkbmMWCustomThreadPool.PreAllocate.
Can ask for preallocation of ACount instances (will be limited by
max count defined for thread pool).
- Added new TkbmMWLog data type: mwldtAllocation. It will be used by
memory leak detection for reporting allocation leaks.
- Added mwldtAllocation to TkbmMWLogDataType. Its used for filtering
out memory allocation logs.
- Added support for specifying max file size (in kB) for log and
audit files in IkbmMWLocalFileLogManager. Default 1024 for log
files and no max for audit.
If file size is exceeded current file is renamed to .bak
and a new file created. Only one backup file can currently exist.
- Added support in IkbmMWTeeLogManager for AddLogManager and
RemoveLogManagers.
Allows for dynamically add and remove logmanagers to the tee log
manager.
Currently max 10 concurrent logmanagers are supported to be
referenced by a tee log manager.
Added overloaded constructors for referencing 0 to 4 exisitng log
manager instances when creating a tee logmanager instance.
- Added Tag:integer and Data:variant properties to
IkbmMWScheduledEvent.
Allows for tagging custom data to a scheduled event.
Matching methods WithTag(..) and WithData(..) added for fluently
typing.
- Added PrevRunStamp:int64 property to IkbmMWScheduledEvent for
obtaining info for when last run happened.
- Added Schedule(AGlobalFunction:TkbmMWOnScheduledFunction) to
TkbmMWScheduler.
- Added ASpaceAsPlus:boolean (default true) to kbmMWEncodeEscapes
method in kbmMWHTMLUtils.pas. If set to false, will not replace
space with +.
- Added delayed commit to TkbmMWCustomSAFServerTransport.
This is to fix that message pops should not be committed until
message has truely been processed. This especially relates to
request that are looped thru the TkbmMWServer application server
functionality. Earlier it was possible that messages were put into
a holding pattern in the TkbmMWServer (while waiting to be
processed) but thus have been popped off the inbound queue and
committed and thus removed from it, before the application server
actually had processed or failed processing the message.
- Added server queue congestrion support on
TkbmMWCustomSAFServerTransport.
This ensures that request/service call messages will not overwhelm
the server queue. Default is
mwmqoFailOnCongestion,mwmqoDeleteInvalidMessage
and max CPUCount*10 messages in queue. Default component name for
the server queue is transport name+'_'+KBMMW_DEFAULT_SERVER_QUEUE.
If congestion happens, the push on the server queue fails and
message will automatically be rolledback on the source queue
(typically the inbound queue) to ensure no messages are lost.
- Added TkbmMWDebugStack.StackTraceAsString function to easily
convert collected stack to printable string.
- Added more features for obtaining a stacktrace.
- Added TkbmMWInterlocked.Increment2,Decrement2,Exchange2,
Add2,CompareAndExchange2 supporting TkbmNativeUInt.
- Added TkbmMWInterlocked.Increment,Decrement supporting uint64.
- Added TkbmMWLockFreeHashArray2<T> to kbmMWGlobal, which takes
2 TkbmNativeUInt keys to reference data of type <T>.
- Added TkbmMWDynamicLockFreeHashArray<T> descending from
TkbmMWLockFreeHashArray<T>. It auto resizes to 150%
when its getting to more than 60% of capacity.
- Added TkbmMWLockFreeHashArrayNative descending from
TkbmMWLockFreeHashArray2 referencing TkbmNativeUInt.
- Performance optimized kbmMWGetCurrentThreadID for x86 and x64.
- Added procedures LockedFreeNotification(AComponent: TComponent) and
procedure LockedRemoveFreeNotification(AComponent: TComponent)
to TkbmMWCustomConnectionPool. Use these instead of FreeNotification
and RemoveFreeNotification to ensure threadsafety.
- Added AddBatchedMessage method to IkbmMWCustomTransportStream.
- Added DelayedCommitOwner property to IkbmMWCustomTransportStream.
This can be used to identify the original source (holding) queue
for the message.
- Added mwmqoFailOnCongestion to TkbmMWMessageQueueOption.
If a queue is getting congested this will lead to push returning
false, and message not being pushed on queue.
- Added IkbmMWMessageQueueCustomAction and descendants
IkbmMWMessageQueuePushAction,
IkbmMWMessageQueueTentativelyPopAction,
IkbmMWMessageQueueCommitAction, IkbmMWMessageQueueRollbackAction,
IkbmMWMessageQueueDeleteAction, IkbmMWMessageQueueRejectAction,
IkbmMWMessageQueueStalledAction, IkbmMWMessageQueueCongestionAction,
IkbmMWMessageQueueClearAction,
IkbmMWMessageQueueTentativelyPushAction,
IkbmMWMessageQueueCommitPushAction,
IkbmMWMessageQueueRollbackPushAction
Allows for any class to subscribe for various events on a
message queue.
- Added events OnPush,OnTentativelyPop,OnCommit,OnRollback,OnDelete,
OnReject,OnStalled,OnCongestion,OnClear,OnTentativelyPush,
OnCommitPush,OnRollbackPush to TkbmMWCustomMessageQueueAction.
- Added mwpsaRetry to TkbmMWMessageProcessingSuccessAction.
Controls if a failed message processing operation should be retried. Changes/minor additions
=======================
- Changed TkbmMWScheduler to preallocate at least 1 relaxed thread if
any relaxed events have been defined, even if they are not to run
yet. Purpose is to play nice with memory leak detection.
- Changed TkbmMWLockFreeHashArray to inherit from generic version,
and be named TkbmMWLockFreeHashArray32.
- Changed TkbmMWCustomTransportStream to allow for BatchedMessages=nil
to improve performance and memory usage.
- Added check for out of memory conditions in TkbmMWBufferPages.
- Added missing Occurs(const AOccurance:TkbmMWScheduleOccurance)
method to IkbmMWScheduledEvent to be able to type fluently.
- Changed KBMMW_THREAD_TIMEOUT_GRANULARITY to 50ms instead
of 2000ms to ensure more smooth shutdown of threads.
- Changed so TkbmMWThreadEntry.Create do not autostart inner thread.
- Changed TkbmMWCustomThreadPool.Create to allow for specifying if to
autostart threads created via pool.
- Changed TkbmMWCustomThreadPool.PreAllocate to take optional
arguments setting pool size and autostart option.
- Improved early error detection in ReadSubjectHeader.
- Changed TkbmMWAfterMessageProcessedEvent by adding argument
var AAction:TkbmMWMessageProcessingSuccessAction
- Changed TkbmMWCustomGroupedMultithreadMessageQueueProcessor by
adding setters to numerous properties.
- Changed TkbmMWMemoryQueue options to default not batch any messages.
- Changed TkbmMWGroupedMessageQueueProcessorThread to default
congest at 10 messages for normal priority messages.
The default congestion treshold will be overwritten with QueueSize
setting when the processor is started.
- Improved Firemonkey support for TkbmMWJPEG. Fixes
=====
- Fixed problems with TkbmMWDateTime due to threadsafety issues in
Embarcadero's TTimeZone.Local implementation, which could lead to
various exceptions on some OS versions.
- Fixed issue with SendPing resulting in index out of range due to
missing unstreaming of request values.
- Fixed multithreaded race condition on unhooking components from
connectionpool.
- Fixed bug where not all properties of a scheduled event was
considered.
- Fixed bug in TkbmMWScheduledEvents where precise event thread was
not guaranteed started immediately.
- Fixed shutdown problem in Indy 10 due to TerminateYarn bug.
- Fixed potential race condition bug in TkbmMWFilePool.
- Fixed bug in TkbmMWMREWLock and performance optimized it. Added a
number of introspecting functions:
ReadLockedBy, WriteLockedBy, LockedByAsString,
WriteLockRecursiveCount, ReaderLockCount which can be used to query
current status of a lock.
Now kbmMW default uses TkbmMWMREWLock for all locking.
This can be disabled by commenting
{$IFDEF KBMMW_SUPPORT_FASTMRWSLOCK}
in kbmMWConfig.inc.
- Fixed memory leak in TkbmMWHashBuckets.
- Fixed TkbmMWMemoryStream.Read when attempting to read 0 bytes.
- Fixed bugs in TkbmMWCustomThread.Stop.
- Fixed TkbmMWCipherCustomDES, TkbmMWCipherRijndael (AES) and
TkbmMWCipherIDEA on 64 bit platforms.
- Fixed TkbmMWCustomClient.SendPing without arguments not correctly
sending NULL.
- Fixed ftDateTime bug in UniDAC adapter.
KBMMW 4.92.00 发布的更多相关文章
- 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.90.00 发布
kbmMW is a portable, highly scalable, high end application server andenterprise architecture integra ...
- KBMMW 4.84.00 发布
kbmMW is a portable, highly scalable, high end application server and enterprise architecture integr ...
- KBMMW 4.83.00 发布
新版本又来了,端午节都不让大家过好:) 这次终于支持ios 64了,不用我再手工改了. Components4Developers is a company established in 1999 w ...
- KBMMW 4.82.00 发布
作者最近加紧了更新进度,赞一个. 时间都去哪儿了? 还没好好看4.81, 新版就来了. 这个版本主要是增强日志管理,已经强大到替换delphi 本身的异常处理了. We are happy to an ...
- KBMMW 4.80.00 发布
一大波更新来了. 4.80.00 March 30 2015 Important notes (changes that may break existing code) ======= ...
- KBMMW 4.70.00 发布
We are happy to announce the release of kbmMW v. 4.70.00 Professional and Enterprise Edition. kbmMW ...
- kbmmw 5.10.00 发布
We are happy to announce v5.10.00 of the most complete development add on for Delphi and C++Builder ...
随机推荐
- virtualbox 使用USB引导启动安装系统
想要测试u盘系统引导有没有问题,从u盘中启动我烧录的Android x86系统. 这种方式可以在已有空的虚拟机上直接启动U盘中的系统. 百度上能搜到的方式都是使用CMD命令(懒人表示太麻烦--),so ...
- Android学习笔记——权限解释
<!--允许读取电话状态SIM的权限--><uses-permission android:name="android.permission.READ_PHONE_STAT ...
- python 中__name__ = '__main__' 的作用
有句话经典的概括了这段代码的意义: "Make a script both importable and executable" 意思就是说让你写的脚本模块既可以导入到别的模块中用 ...
- Struts1.x有两个execute方法,不要重写错哦HttpServletRequest才是对的(转)
Struts1.x 的 Action 有两个 execute 哦,小心搞错! by agate - Published: 2008-05-01 [9:42 下午] - Category: 程序编码 不 ...
- 3.1 哈尔空间 V0
一张灰度图是由多个像素点而组成的,同样,这些像素点的是由一个从0(黑)到255(白)的非负数组成的.假设我们现在有一张小的灰度图像.在第一行的灰度值为110,100,120,140,130,100,1 ...
- c# MessageBox 用法大全
我们在程序中经常会用到MessageBox. 1.MessageBox.Show("Hello~~~~"); 最简单的,只显示提示信息. 2.MessageBox.Show(&qu ...
- IEnumerable<T>与IQueryable<T>以及.net的扩展方法
首先看看继承关系 public abstract class DbSet : DbQuery public abstract class DbQuery : IOrderedQueryable, IQ ...
- #include <objsafe.h>//OCX控件在IE8浏览器下不能使用问题
一.OCX控件开发常见的问题 1.OCX控件在IE8浏览器下不能使用问题 原因:IE8会拦截OCX控件的方法. 解决方法:在OCX控件开发时加入安全接口. (1)在有"Crtl"字 ...
- java 验证手机号码、电话号码(包括最新的电信、联通和移动号码)
一.目前的号码段(2016-12-8更新) 二.代码 package com.test; import java.util.regex.Pattern; public class CheckPho ...
- 对"QQGame-大家来找茬"的辅助工具的改进
[前言]最近在博客园首页上看到有“大家来找茬”这个游戏(此游戏为找出两个相近图片的不同点)外挂的相关帖子,所以这里我也翻看了我之前(2009年5月)的写的一个简单的辅助程序(采用 VC6 开发的).我 ...