日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从控件开发的角度看几个editor控件,Freetextbox,radtoolbar,abouteditor,cuteeditor

發布時間:2023/12/1 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从控件开发的角度看几个editor控件,Freetextbox,radtoolbar,abouteditor,cuteeditor 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天控件的開發有了很大進展,寫些東西。在開發之前,我看了幾個控件的源代碼,如Freetextbox,radtoolbr,abouteditor以及cuteeditor。今天憑會議總結一下他們的特點,能記下來的都是他們很獨特的地方。

首先是FreeTextbox

此控件是生成的控件(相對于復合控件),不論是toolbar還是toolbaritem,都不是以子控件的形式存在,因此有更好的性能。這種方式的缺點是,不能很好的利用現有的Asp控件,降低了用戶自定義控件的方便性。如,我想在toolbari上加上combox,必須自己實現。

視圖狀態,視圖狀態的管理是令人頭疼的問題,弄不好就會加大視圖狀態的大小。從Freetextbox對視圖狀態的實現來看,它的實現中規中矩,完全符合ms推薦的實現方式。但是,是否每個toolbaritem都有必要實行視圖狀態?其實從Freetextbox的實現分析,大部分的實現是不必要的,因為他們都不會改變。如果把這些實現剔除,Freetextbox的代碼會簡單很多。

子控件的實現方式,此控件不存在子控件,toolbaritem被定義為實現了IstateMananger的類,每個Item都是一個類,如BoldItalic等。

總之,這個控件的服務器段代碼,十分符合MS推薦的控件實現方式,它的內部實現,類似于ASP的服務器控件實現。也符合常人的思路,代碼比較容易理解。結構也不錯可以給80分。

其次,Radtoolbar

此控件用的是復合控件。每個toolbaritem都被實現為子控件,并且暴露給客戶。從用法來看比較像asp的一些復合控件,即子控件要在aspx中聲明。但這種方式對客戶來說,用起來很不方便,因為要寫許多聲明代碼。

視圖狀態,此控件對視圖狀態的管理,可以說壞到了極點。它竟然通過把控件的屬性序列化為xml,然后把xml作為視圖狀態。這就造成,任何一個細微的改變,都會把視圖狀態項記為dirty,造成整個xml序列被序列化的客戶端。再者xml本身就包含許多不必要的文本,如<sdds>ss</sdds>。可以看到元素名稱是很浪費空間的。這就造成此控件的視圖狀態,會比標準的asp實現大十倍左右。

子控件的實現方式,子控件是通過序列化的方式從配置文件讀取。子控件沒有細分,如沒有類似于BoldItalic的項。只被粗略分成了Toolbarbuttontoolbarseprator等。

總之,這個控件實現沒有細看,因為不論從哪方面來說,它都算不上優秀。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的資源文件,也不是通過自己定義資源管理類來在用到資源時本地化。而是通過重寫Textwriterinnerwriterresponsefilter實現。細節上,他用到了Idispose接口和using語句,這樣在緩沖去滿,或者dispose時,自動實現資源的本地化。簡直是絕了,我一直沒有想過能這樣用dispose和這樣實現資源。

其次,對事件的處理,這也是cuteeditor做的很好的地方,它把所有的postbackdatepostbackevent,封裝到了兩個隱藏域中,這兩個隱藏域是兩個webcontrol,他的值為post的數據和事件。這就使新增事件及其簡便。只要加上postback=ture,就可以處理回發。

其次,對腳本的管理,他的腳本都是動態加載的,因此不能調試。又是一個防止破解的招數。

通過httphandler,他托管了*.js的加載。

再次,配置文件的管理,他在運行時,會把幾個配置文件加載到一個xmldoc中,實現統一管理。Js也實現了類似功能。

還有,Gizip,以及緩存的管理方式,都和一般人的不同,感興趣的自己去看源碼。

類似的詭異實現還有很多。

我寫的editor,主要在下面幾點做了改進:

首先是,子控件的管理上,他的管理方式不算好。我把類似ForeColor的控件都抽出了基類。

其次,我認為應該讓客戶更簡單的自定義控件。因此在這點上也有改進。

再次,net2.0已有的功能不再自己實現,如Gizp,在2.o已經有了Gizpstream

我希望用Ma.js重寫他的客戶端腳本,因此在服務器端盡量做些支持。

看了回復才知道還有個RadEditor,看了他的代碼和效果。發現它才是最好的。90分吧
其中,界面滿分20。cuteeditor和Radeditor都是20分。freetextbox10分
服務器端代碼部分,ce60,freetextbox70,radeditore70。滿分80

轉載于:https://www.cnblogs.com/neil-zhao/archive/2008/07/23/1250011.html

總結

以上是生活随笔為你收集整理的从控件开发的角度看几个editor控件,Freetextbox,radtoolbar,abouteditor,cuteeditor的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。