没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|其它|编辑:郝浩|2007-09-10 10:11:33.000|阅读 1394 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
今天控件的开发有了很大进展,写些东西。在开发之前,我看了几个控件的源代码,如Freetextbox,radtoolbr,abouteditor 以及 cuteeditor。
首先是 FreeTextbox
此控件是生成的控件(相对于复合控件),不论是 toolbar 还是 toolbaritem,都不是以子控件的形式存在,因此有更好的性能。这种方式的缺点是,不能很好的利用现有的 Asp 控件,降低了用户自定义控件的方便性。如,我想在 toolbari 上加上 combox,必须自己实现。
视图状态,视图状态的管理是令人头疼的问题,弄不好就会加大视图状态的大小。从 Freetextbox对视图状态的实现来看,它的实现中规中矩,完全符合ms推荐的实现方式。但是,是否每个 toolbaritem都有必要实行视图状态?其实从 Freetextbox 的实现分析,大部分的实现是不必要的,因为他们都不会改变。如果把这些实现剔除, Freetextbox 的代码会简单很多。
子控件的实现方式,此控件不存在子控件,toolbaritem 被定义为实现了 IstateMananger 的类,每个 Item 都是一个类,如 Bold,Italic 等。
总之,这个控件的服务器段代码,十分符合 MS 推荐的控件实现方式,它的内部实现,类似于 ASP的服务器控件实现。也符合常人的思路,代码比较容易理解。结构也不错可以给80分。
其次,Radtoolbar
此控件用的是复合控件。每个 toolbaritem 都被实现为子控件,并且暴露给客户。从用法来看比较像 asp 的一些复合控件,即子控件要在 aspx 中声明。但这种方式对客户来说,用起来很不方便,因为要写许多声明代码。
视图状态,此控件对视图状态的管理,可以说坏到了极点。它竟然通过把控件的属性序列化为 xml,然后把 xml 作为视图状态。这就造成,任何一个细微的改变,都会把视图状态项记为 dirty,造成整个 xml 序列被序列化的客户端。再者xml本身就包含许多不必要的文本,如<sdds>ss</sdds>。可以看到元素名称是很浪费空间的。这就造成此控件的视图状态,会比标准的 asp 实现大十倍左右。
子控件的实现方式,子控件是通过序列化的方式从配置文件读取。子控件没有细分,如没有类似于 Bold,Italic 的项。只被粗略分成了 Toolbarbutton,toolbarseprator 等。
总之,这个控件实现没有细看,因为不论从哪方面来说,它都算不上优秀。50分。
AboutEditor
这个控件的实现类似于 Freetextbox,也不是复合控件。
视图状态,他没有为 toolbarItem 实现视图状态,因为这几乎没必要。
子控件,他同样不存在子控件,与 freetextbox 的不同在于,他没有细化每个 toolbaritem。
总之,此控件和 freetextbox 很相似,我没有细看。
最后是 Cuteeditor
看了他的 demo,很震撼,应该是所有 editor 中效果最好的。
Cuteeditor 用复合控件实现,缺点是增加了控件树的开销,效率没有生成控件高。优点就是,客户实现自定义功能较方便。
由于用子控件,大部分视图状态都可以交给 webcontrol 管理。
他对子控件的实现我认为不算太好,简单的控件都从一个基类派生,这点如果还算不上缺点,那么他对 Forecolor 等的实现方式,确实不算好。
总之 cuteeditor 是功能里面最强大的。但是他的实现,很难让人理解。不像 Freetextbox,有中规中矩的实现。60分。
看了几个实现,可以说实现方式五花八门,除去视图状态不谈,只要把 htmlrender 到客户端,控件就算完成了。这就造成实现控件的方式很多。应该怎么写,确实值得思考。
Freetexbox,占去了大概一周的时间,这段时间我仔细看了他最新版本,以及更早版本的代码,它的实现和符合正常人的思路,很容易理解。对他的实现了解太多,以至于不想参考他的实现了。主要是怕写完代码和他特别像。从结构上来看,它的缺点我认为主要在于,把子控件的生成操作,都延迟到了父控件,造成父控件逻辑负杂。我最初的想法是,在Init的时候,构造一个 xmldocument,然后每个子控件通过 xml 的方式,增加 xmldoc 的节点,最后再返回 xmldoc 给父控件。
Cuteeditor 用了两三天的时间,他的代码很乱,几乎不符合常人的思路。尤其他为了防止破解,故意调整了几个类的顺序,如 Editor,嵌套了四五层的内部类,让人看起来很头痛。从他的 html 看,也不像其他控件一样,能得到许多有用信息。
由于他的效果最好,并且我看了好久都没有头绪,觉定从他下手,写一个类似的 editor。
其他的几个控件,和这两个相比都差很远,忽略。
经过近一个月的努力,控件开发终于过半,对 cuteeditor 的研究也更深入了,觉得他的许多实现确实很诡异,也让人眼前一亮。增加到80分。
Cuteeditor 特点
首先,它对资源文件的处理方式来看,他没有采用.net 的资源文件,也不是通过自己定义资源管理类来在用到资源时本地化。而是通过重写 Textwriter 的 innerwriter 和 response 的 filter 实现。细节上,他用到了 Idispose 接口和 using 语句,这样在缓冲去满,或者 dispose 时,自动实现资源的本地化。简直是绝了,我一直没有想过能这样用 dispose 和这样实现资源。
其次,对事件的处理,这也是 cuteeditor 做的很好的地方,它把所有的 postbackdate 和postbackevent,封装到了两个隐藏域中,这两个隐藏域是两个 webcontrol,他的值为 post 的数据和事件。这就使新增事件及其简便。只要加上 postback=ture,就可以处理回发。
其次,对脚本的管理,他的脚本都是动态加载的,因此不能调试。又是一个防止破解的招数。
通过 httphandler,他托管了*.js 的加载。
再次,配置文件的管理,他在运行时,会把几个配置文件加载到一个 xmldoc 中,实现统一管理。Js 也实现了类似功能。
还有,Gizip,以及缓存的管理方式,都和一般人的不同,感兴趣的自己去看源码。
类似的诡异实现还有很多。
我写的 editor,主要在下面几点做了改进:
首先是,子控件的管理上,他的管理方式不算好。我把类似 ForeColor 的控件都抽出了基类。
其次,我认为应该让客户更简单的自定义控件。因此在这点上也有改进。
再次,net2.0已有的功能不再自己实现,如 Gizp,在2.o已经有了 Gizpstream。
我希望用 Ma.js 重写他的客户端脚本,因此在服务器端尽量做些支持。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:csdn接DevExpress原厂商通知,将于近日上调旗下产品授权价格,现在下单客户可享受优惠报价!
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号