牙牙窩

          BlogJava 聯系 聚合 管理
            8 Posts :: 21 Stories :: 10 Comments :: 0 Trackbacks

          2007年1月19日 #


          初衷是希望有一個簡便,不需要配置文件的辦法,提高數據層的事務處理能力。以及對連接池的支持。

          解決思路是通過修改Spring框架,修改BeanFactory的類搜索機制,默認載入相應的類。

          并采用繼承的方式,在基類中提供默認方法,允許Spring注入在對象實例中。然后再對象實例中調用。


          posted @ 2008-09-15 00:18 大牙 閱讀(135) | 評論 (0)編輯 收藏

              最近項目組要求使用普元EOS進行項目開發,使用了兩個月左右,雖然說有一些心得(這個以后會寫出來),但更多是看到了不足的地方,在這里就討論一下一個成熟的應用框架到底應該有哪些因素。

          底層技術:
              Application Framework(下稱應用框架)是為解決問題而生的,無論是基于JAVA、C++、Ruby等等語言,都必須有基礎技術的支持。如JAVA就有經典的Struts+Spring+Hibernate的組合,因此,一個成熟的應用框架,必須擁有完善的MVC框架,以及完整的業務組件管理容器,還有一個成熟的數據訪問框架。這個是一切的基礎。

          權限管理:
              擁有一個成熟基礎權限架構能夠為應用框架增色不少。如果能夠和框架本身更好地融合,這樣更好。其實目前有很多實現是俄可以借鑒的,如:ACEGI和Spring。

          UI:
              標簽已經非常流行,擁有完善的標簽庫是必不可少的,Struts是個很好的典范。
              Ajax大行其道,如果沒有整合一些方便易用的AJAX控件,估計也算不上是一個好框架。
              另外還有類似于Freemarker、Velocity之類的簡化UI開發的好東東,整合一兩個,對于減少開發、提高維護性有很大幫助。

          開發工具:
              提供敏捷快速的開發工具是一個成熟應用框架所不可或缺的。使用一個成熟的應用框架的開發工具進行開發,可以讓開發者最大程度減少對于技術上的瓶頸,讓開發者很輕松就可以完成高質量的代碼,剩下的精力可以用于專注于業務等其它方面。
              另外還有像:單元測試、應用部署等等方面,都是必不可少的一部分。(PS:我是非常痛恨維護幾百行ANT的build.xml代碼的人)
              這里不得不稱贊一下普元,普元提供的開發環境和它自身的底層技術融合的非常好,對于開發者而言,是非常方便的,可以不需要很多的培訓就可以使用IDE開發出完整的應用。而且測試和部署都很方便。

          代碼生成器:
              其實這個應該和開發工具放在一起,但是因為比較重要,所以單獨提出來說。
              一個好的代碼生成器可以省去開發人員很多不必要的麻煩,能夠非常大地提高開發效率。普元的代碼生成器是個不錯的典范。
              我們公司自己也有一個JOP的應用框架,但非常簡陋,和普元的設計思想不可同日而語。呵呵~~有點扯遠了,但能夠看得出,代碼生成器對于應用框架是必不可少的。

          協同開發:
              整合一個好的協同開發和版本管理工具,能夠最大程度地降低溝通成本。除了能夠支持類似SVN或VSS之類的代碼版本管理工具之外,還應該融合進類似Visual Studio Team的任務管理和缺陷管理工具。最好擁有一個可以進行自我積累的知識庫的實現。WIKI是個不錯的主意。

          設計器:
           
             我提出這個是因為看到了IBM的RUP,擁有一個能夠從設計到代碼實現乃至后面的測試這樣一個全流程開發工具,一直是IT人員的一個美好夢想。
              一個好的設計器,可以很輕松地在設計圖和代碼之間相互轉換,對于需求變更,設計管理、甚至項目后期的文檔都有很重要的意義。
              這里又要提到普元,普元在這方面很聰明,走了一條不同的路,它把代碼變成一個個圖標時,本身就實現了對于設計圖和代碼之間互轉關系。(當然,實現的方式有點土,而且沒有辦法支持標準的UML)

          運行容器:

              大家可能覺得奇怪,容器為什么要單獨提出來說,很多JAVA開發者都會說,只有遵循JAVA標準就可以啦~。其實不然,一個成熟的應用框架當然要考慮其兼容性,但是有時候,過多考慮兼容性往往會犧牲效率。事實上,很多應用框架被開發出來,都是有一定的局限性的使用場景,針對使用場景的環境進行優化,絕對比使用通用的方法效率要高的多。如我們公司的移動項目使用的是WebSphere,我們的框架就有一個針對WebSphere優化的版本,但同時也存在一個通用版本。
              當然還有其它方面也可以引用這種思路,比如使用Oracle自帶的一些JDBC類,其效率就比使用JAVA標準的JDBC類要高得多。

              其實應用框架被創造出來的目的就是快速、高效、低成本地解決問題,這個大家都知道,但是何謂“成熟”,估計100個人應該有100個答案,這里我的理解就是開發快捷、較低的學習成本、運行穩定,就是一個成熟的應用框架。

          PS:上面好像說了一些不少普元的好話,大家千萬不要以為我是普元的“托”,晚點我再寫遍罵它的文章吧~~呵呵~~。其實我更喜歡SpringSide,但是除了“底層技術”這塊之外,在其它方面還有很長的路要走,希望江南白衣兄能夠堅持下去。



          posted @ 2008-04-17 23:14 大牙 閱讀(350) | 評論 (0)編輯 收藏

              今年真的是郁悶透頂了。項目組居然叫我去做我從來沒有做過的接口方面的編程,搞得我焦頭爛額。

              因為沒有經驗,寫的代碼亂七八糟,出了好多問題,不過,也學了不少東西。

              首先就是Socket的編程,我只是在學習JAVA時寫了一些socket方面的例子,從來就沒有仔細研究過,組長居然叫我設計一個JAVA的接口平臺。胡弄了一通之后,系統上線了。但是問題就來了。

              首先第一個問題,長連接必須有心跳。因為之前協議中沒有定義心跳協議,而我又沒有經驗,所以等真正上線之后才發現,如果長連接沒有心跳,很容易導致在Socket連接中,長時間沒有通訊的話,就會導致連接雖然保持,但不能正常通訊的問題。

              第二個問題,必須加入流量控制。這個問題出現在業務高峰期時,會接收到大量請求,這時業務系統的處理速度跟不上請求發起方,導致大量請求積壓在Socket服務器端,導致JVM崩潰。這個問題我之前是使用了JAVA5中所帶的ExecutorService,通過設置固定的線程池數量的方式做流量控制,后來發現不行,線程會不斷增加,導致JVM崩潰。不知道是我代碼問題還是ExecutorService本身的問題。建議使用BlockingQueue來做隊列,我目前用起來還是比較穩定。

              第三個問題,是由上面的問題衍生出來的一個問題,就是效率問題。我之前的線程處理方式是每接到一個請求,會在主線程實例化一個線程實例,再把線程放到線程池中運行,這個方式除了導致上面的問題以外,而且效率很慢,我稱之為“推”的方式。現在經過改良后,在服務起來之后,先事先運行固定數量的線程,然后所有線程都從同一個BlockingQueue中獲取指令,我稱之為“拉”的方式。這種方式讓程序效率提高了很多,省去了每次生成對象的過程。而且這個設計本身也實現了處理量的控制。

              第四個問題,就是指令的返回問題。在處理每個異步指令的過程時,對于返回指令,通常的做法是將返回結果指令放入隊列中,然后再逐一返回。這個做法就存在了一個隱患,就是當服務器的進程core掉,或者因其它原因中斷,所有的返回指令都會丟失。建議的做法是在得到返回指令之后,將要返回的結果指令持久化,通常是放入數據表或者緩存文件中,然后再操作,這樣的話,當重啟進程,也可以重新讀取返回指令,最大可能保證接口的數據準確性。

              第五個問題,其實跟上面有一些接近,就是做接口程序,有一個大原則,就是一切有跡可尋。在受理時要寫日志,執行業務時要記錄、返回結果時要入庫。總之讓運維人員可以很方便的定位問題,排除問題。否則,只能麻煩自己啦!

              至于其它錯誤我就不一一羅列了,總之在錯誤中進步,還是學到不少知識。呵呵~~


          posted @ 2007-12-19 10:43 大牙 閱讀(487) | 評論 (2)編輯 收藏

          ???非常有幸能調到公司的J2EE基礎架構組,負責為公司預研一套完整的架構模型。主要是引入SOA、WorkFlow、AJAX等新技術。
          ???
          ???做了開發人員這么久,也做了這么久項目,根本就沒有時間好好坐下來研究一下新技術。現在必須先跟一跟潮流,看看那些流行的技術以及概念了,呵呵。。。。。。

          ???研究主要是分三個方向:UI、BPM/SOA、構件化。希望能在這幾個方面有所收獲吧!努力努力!!!
          posted @ 2007-01-19 14:11 大牙 閱讀(322) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 通河县| 宜州市| 三江| 隆化县| 堆龙德庆县| 墨竹工卡县| 城市| 江源县| 德阳市| 屏东市| 巴彦淖尔市| 抚顺县| 宜都市| 潜江市| 咸阳市| 扶风县| 米泉市| 玉林市| 慈利县| 团风县| 柘城县| 慈溪市| 司法| 新丰县| 淮北市| 浑源县| 平凉市| 武汉市| 张北县| 从江县| 六安市| 水富县| 沧州市| 固镇县| 临沧市| 武功县| 搜索| 视频| 双城市| 梨树县| 冀州市|