SmartBinding with kbmMW #4】的更多相关文章

即将发布的kbmMW,实现了SmartBinding,SmartBinding的设计目标是: 必须易于使用 必须最小化或完全删除锅炉板代码.(你看到这里的趋势了吗?... kbmMW从那时开始就是为了让事情变得简单!) 必须有良好的表现 必须具有较低的CPU,内存和大小 绝不能导致无休止的圆形赛事列车 应该使用各种数据和控件 应该是灵活和可扩展的 必须接近实时 必须易于重构 应该与kbmMW的其他功能很好地配合 即使不使用kbmMW的其他功能也应该可用 看一个简单的属性绑定: Binding.B…
前言 在前面写过的文章中,详细介绍过如何将各种的控件与数据源进行绑定(Bind).在这篇文章中,将重点讨论如何绑定TImage和TListView.(同时支持VCL与Firemonkey). 将图形数据源绑定到TImage和捕获绑定 在VCL和FMX模式下,使用kbmMW都可以很容易地将数据集中的图形字段绑定到TImage.让我们举一个简单的例子: 下面是Prepare dataset按钮的Click事件代码: procedure TForm1.Button8Click(Sender: TObj…
前言 在SmartBinding #2中,我介绍了新的自动绑定功能,支持在Form设计器中直接定义绑定.不仅如此,kbmMW SmartBind还有更多很酷的功能,即将发布的kbmMW中的SmartBind,将支持绑定Grid的单元格,行或列以及多值表达式绑定和绑定简单常量等其他功能. 绑定Grid的单元格,行和列 为使kbmMW SmartBind更加智能,目的之一就是要删除所有重复的绑定代码,使开发者只关注具体的功能需求.通过代码执行SmartBinding非常简单,但为了更容易实现,请看下…
前言 在之前的文章中,我介绍了SmartBinding作为Delphi的一个新的易于使用和智能的绑定框架.介绍了包括绑定对象,列表,常规数据和可视控件,以及如何使用导航器,所有这些都用代码做了演示. 本文将重点关注下一个kbmMW版本中包含的新SmartBinding功能(SmartBinding v2),预计很快就会发布. 一行代码绑定 为使kbmMW SmartBind更加智能,目的之一就是要删除所有重复的绑定代码,使开发者只关注具体的功能需求.通过代码执行SmartBinding非常简单,…
这个版本除了增加新的SmartBinding功能,同时提供了大量的功能更新以及bug修正.其中,SmartBinding的介绍,xalion已经第一时间写了初识kbmmw 中的smartbind功能,同时还写了XML-RPC和 JSON-RPC的支持文章.kbmMW的福音,向xalion敬礼!关于SmartBinding,在这个版本没发布前,就第一时间翻译了作者的博文:SmartBinding与kbmMW#1,我想这些资料可以让大家轻松的使用这个让人兴奋的功能了! 因为常用Scheduler,所…
千呼万唤始出来,最新的kbmMW 5.10.01终于发布了,详情可以看xalion发的更新日志. 我期待的Smartbinding for Listview终于来了,在这一版本中,对SmartBinding做了大量的功能扩展与更新,对Listview只是其中之一.这几天一直测试这个Listview的支持情况,发现一个致命的问题,看下面这行代码: bnd:=Binding.Bind(dataset,'f1',Edit1,'Text',[mwboTwoWay]); 将dataset的f1字段绑定到E…
kbmMW 5.10.10发布了,这个版本解决了我提出的问题,当对DataSet增删记录时,ListView能够同步显示.下面看看具体的实现代码. 为了解决上面的问题,作者为IkbmMWBindingNavigator接口增加了下面的方法: IkbmMWBindingNavigator = interface ...... function Delete:boolean; function Insert:boolean; overload; function Insert(const AName…
前言 前面的文章,我写了有关SmartBinding框架方面的内容.SmartBinding的目的是将数据容器绑定到一起,通常情况下,数据容器可以是显示数据或与数据交互的控件(Edit,ListView...),也可以是存储数据的容器,如查询结果的DataSet,ObjectList或Record等.SmartBinding还引入了数据代理,这使得将可视设计与功能同核心数据操作/检索/存储分离. 在kbmMW新版本中,增加了SmartEvent.SmartEvent的主要目的是将用户交互与业务逻…
1.FileClient.SameFile 调用这个方法,当本地文件不存在时,会一直等待.跟踪代码,发现: function TkbmMWCustomFileClient.SameFileEx(LocalPath:string; RemotePath:string; const Args:array of Variant{$IFDEF KBMMW_LICENSE_MESSAGING}; const AOptions:TkbmMWMessageOptions = []; const APostSu…
关于kbmMW SmartBinding,我翻译了作者写的几篇文章,其强大的绑定机制,将可视控制与各种数据源灵活绑定在一起,实现了类似DBEdit数据敏感控件的效果,可以及大的减少我们的代码,实现界面与逻辑分离的代码设计,从而实现易于维护与管理的代码,怎一个爽字了得.如果不了解kbmMW SmartBinding,可以参看译过的文章. kbmMW SmartBinding如此强大,那么他是如何实现及工作的呢?让我们一起走进kbmMW SmartBinding的源代码,欣赏kbmMW作者的实现.…
经常有人提到kbmmw 4.93.10 的64 位版本没有32位版本稳定. 经过官方确认,是delphi 编译器生成64 位代码内存偏移地址的错误. 在kbmMWGlobal.pas 中 有一个函数kbmMWGetCurrentThreadID, 如下: 此函数在64 位里面,编译器出来是这个 可以看见编译出来的机器码是 $65 $48 $8B $04 $25 $24 $00 $00 $00 这个有时会导致64 位服务器出问题. 作者已经修改了这个问题(简单粗暴而有效).直接使用机器码来处理,…
自从今年苹果强制新上架的APP 必须支持Ipv6,很多原来需要网络支持的APP 就没法上架了. 别的我们就不说了,先说说kbmmw 中,如何解决这个问题. 要测试你的app 是否支持ipv6, 首先要搭建IPv6 的测试环境,最简单的方法就是利用mac 来生成一个 共享的虚拟Ipv6 网络.具体搭建的方法参考此篇博文: http://www.cocoachina.com/ios/20160525/16431.html 剩下的就是在你的APP 里面,是否可以通过这个网络访问远程服务器?如果没问题,…
废话少说,如何使用KBMMW 做个过渡,使IOS 可以使用JAVA 的服务? 其实KBMMW 本身就要java service 的服务,但是为了把这个问题说清楚,我手工做一个例子. 首先,要使用JAVA 服务,JRE 是肯定要安装的.没有安装的话,自己去java.sun.com 去下载. 安装完毕, 命令行上运行 JAVA ,出现下图说明安装成功.…
作为一个服务器端的应用,最基本的要求就是稳定,当然要做一个稳定的服务器端,需要涉及到很多方面, 内存泄露就是稳定的一个致命杀手,因为服务器的物理内存是有限的,即使一个功能有很小的内存泄露,经过 长时间的运行,也会累积成一个非常大的内存泄露,导致服务器内存耗尽,系统崩溃.因此珍惜服务器资源是 开发者必须重视的(当然了,对于内存无法管理的语言及框架,那就算了). 最新版的kbmmw 中加入了内存调试功能,这个功能不但可以应用在kbmmw 服务器中,你也可以在其他程序中 使用. 其实自从delphi…
从去年开始,kbmmw 慢慢增加内涵,除了完善各种服务外,陆续增加和扩展了作为一个中间件必须有的功能, 例如,权限管理.日志系统.调度系统.内存调试等功能. 今天给大家介绍一下kbmmw 的调度事件,调度事件的主要目标就是”在指定时间干,必须干“,不是“爱干”不干,是“必须干” :). 在传统的delphi 中事件调度室通过两种方式,一种方式通过Ttimer 来实现,(我20年做的母校的食堂餐饮消费系统就是通过Ttimer来轮询 POS 机的).另外一种就是通过扩展Tthread 线程类,通过后…
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 detect…
kbmMW is a portable, highly scalable, high end application server andenterprise architecture integration (EAI) development framework forWin32, ..Net and Linux with clients residing on Win32, .Net, Linux,Unix, Mainframes, Minis, Embedded and many othe…
马上周末了,趁着下午这会儿回顾一下这几天对旧项目的升级过程,一些重要但不常用的东西记录下来是很有必要的.其中一个项目中对KBMMW的远程数据通讯方式做了改进,利用SampleService/SampleClient方式传输数据集,以增加对底层数据通讯的可控性. 服务端代码示例: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39…
KbmMW本身可以用QueryService的方式进行远程数据查询,但是SmpileService同样具有很强的扩展性可以实现数据查询,下面展示两种基于SmpileService的远程数据查询方法,其原理都是利用TkbmMWSimpleService实现流的传输. 直接上代码了: 一.利用KbmMemTable: 服务端: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3…
KbmMW框架是收费的,不在此提供下载,如需购买,请自行联系作者Kim Madsen. 网址资源: 官网主页:http://www.components4programmers.com/products/kbmmw/index.htm 官网University,提供大量PDF文档下载:http://www.components4programmers.com/products/kbmmw/university/index.htm 常见FAQ:http://www.mestdagh.biz/kbm…
我们在使用kbmmw的REST 服务时,经常会下载和上传大文件.例如100M以上的.kbmmw的rest服务中 提供标准的文件下载,上传功能,基本上就是打开文件,发送,接收,没有做特殊处理.这些对于文件比较小的 时候,问题不大,但是如果文件比较大,就会占用大量的服务器内存,导致服务器出现问题或者不响应. 为了解决这个问题,我们需要对文件上传.下载做特殊处理.以便节省服务器端的内存. 由于下载大文件有其他的一些方法,例如可以单独建立一个iis,apache,nginx等,或者可以利用httpsys…
我们在开发中经常会使用随机数模拟各种随机条件,例如生成唯一的密码和令牌. 在计算机中,一般采用PRNG(伪随机序列发生器)模拟真实随机数.既然是随机,就要要没有任何规律, 在取值范围内均匀.独立.以确保尽量不重复.否则生成的密码和令牌碰撞的几率就非常大. delphi自带的随机数函数,看似随机,实际上当产生次数足够多的话,就会发现重复性非常大,而且向中心域 集中.如果我们用delphi自带的随机数生成一个区域的点,就会很方便的发现这个问题. kbmmw 5.8里面 提供了好几种流行的随机数生成实…
首先感谢图形验证码的提供者  晴空无彩虹  https://blog.csdn.net/u011784006/article/details/80827181 他用FMX 实现了验证码的生成,我修改成了 VCL 版的. 整个生成验证码的单元,全程推出. unit uVerifyCode; interface uses System.Classes, System.SysUtils,vcl.graphics,Vcl.ExtCtrls, System.IOUtils, System.UIConsts…
前面我们讲了使用swagger 生成java,php 的客户端调用函数原型. 对于delphi,其实很遗憾,不能直接生成客户端函数原型代码. 不要紧,解铃还须系铃人,既然是kbmmw 自己生成的,我们就自产自销, 为kbmmw 客户端生成函数原型.也为我们前面说的双引擎提供服务. 闲话少说. 很简单 [kbmMW_Rest('method:get, path: "delphi", responseMimeType:"text/plain"')] function D…
我们以前介绍了很多kbmmw 开发REST 的例子.一直有个问题困惑着大家. 我们提供REST 服务,如何让客户端快速的使用,当然可以写文档,但是一旦 后台改变了,又要再一次给调用者发新文档,非常的麻烦.我们是否可以 自动生成调用函数原型,方便调用者使用JAVA,PHP,Delphi开发客户端? KBMMW 5.08 为我们完美的解决了这个问题. 我们还是以前面的REST 服务为例.稍微修改一下就支持openapi了. 当然了,这个需要借助一下开源的Swagger.网址http://editor…
欢迎大家围观. Important notes (changes that may break existing code)         ======================================================           * Updated transport stream version to 508 to support transporting other TValue            based data than interfac…
前面我们一直都讲了如何使用kbmmw smarthttpservice 给客户端提供REST  服务.主要都是返回给 浏览器访问的,如果我们使用delphi 开发桌面应用,如何使用这些服务呢?其实一切都不是问题,kbmmw 除了 有强大的smartservice,也有强大的smartclient . 我们今天就在以前的smarthttpservice 加上TCP 访问功能,最大的好处就是根本都用动原来的服务代码. 首先我们在服务端,放一个kbmMWTCPServerTransport1.并设置其…
以前的文章介绍了 很多 kbmmw smartservice 的使用,尤其是 rest 服务,所有的的配置都是通过 开发时写编码实现的,这样就可能导致,针对不同的应用环境,我们要重新编译代码,当然也可以 自己通过配置文件来实现一些配置,那么我们就看看如果通过kbmmw 自带的配置功能让smartservice 更聪明,更灵活. 首先简要说一下 kbmMWConfiguration,这个是kbmmw 官方提供的简单方便的保存,访问. 配置信息可以保存到注册表,也可以保存到ini,xml,json等…
你想过没有,把一个给定的xml或json生成一个Delphi类,并通过这个类完成对xml或json的读写操作吗? 不管有没有,现在kbmMW为我们实现了,看下面这行代码: var s:string; ... s:=TkbmMWJSONMarshal.GenerateDelphiClassFromUTF8File('auctions.json','Unit2','JSONData'); ... { "realm":{"name":"Aegwynn"…
来了来了 5.07.00 Dec 9 2018           Important notes (changes that may break existing code)         ======================================================           * Renamed misspelled TkbmMWInfTNRG64 to TkbmMWInfTRNG64 and ditto for 32 bit.           …