(歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者,尊重版權(quán))
作者http://www.tangusoft.com
一.中小企業(yè)進(jìn)銷存系統(tǒng)和運(yùn)行平臺(tái)以及技術(shù)架構(gòu)
1. 中小企業(yè)進(jìn)銷存系統(tǒng)特點(diǎn):
a. 目標(biāo)客戶
零售批發(fā)中小企業(yè),企業(yè)規(guī)模人數(shù)500人以下,銷售額1500萬(wàn)元以下。
b. 數(shù)據(jù)操作頻繁
每天頻繁操作銷售和采購(gòu)以及倉(cāng)庫(kù)出入庫(kù),經(jīng)常需要查看企業(yè)基本信息,包括商品信息,客戶供應(yīng)商信息,應(yīng)收應(yīng)付。并且需要快捷的操作系統(tǒng)。
c.存儲(chǔ)數(shù)據(jù)量有限
商品信息大概5000條,客戶供應(yīng)商大概1000,
每天單據(jù)信息大概50條,每年單據(jù)信息大概20000條
d.并發(fā)操作用戶數(shù)量固定
銷售員,采購(gòu)員,經(jīng)理,財(cái)務(wù),大概20人左右。
e. 用戶使用地點(diǎn)不同
需要直接方便瀏覽器訪問(wèn)系統(tǒng)
f. 客戶瀏覽器處理功能強(qiáng)大
目前客戶電腦普遍內(nèi)存1G, 處理器 雙核2.0 以上
g.中小企業(yè)普遍軟件預(yù)算不高
同時(shí)也盡量避免盜版軟件引起的法律訴訟和糾紛。
2. 運(yùn)行平臺(tái)和系統(tǒng)架構(gòu)
根據(jù)中小企業(yè)進(jìn)銷存系統(tǒng)的眾多特點(diǎn),同時(shí)考慮技術(shù)成熟度和新技術(shù)風(fēng)險(xiǎn),我們決定采取以下運(yùn)行平臺(tái)和系統(tǒng)架構(gòu)
運(yùn)行平臺(tái) Linux Apache Tomcat Mysql
系統(tǒng)架構(gòu)
表現(xiàn)層Flex 3
數(shù)據(jù)處理和控制層Blazds + Spring + Ibatis
Flex/Flash 具有以下優(yōu)點(diǎn)
客戶端 界面友好,數(shù)據(jù)表現(xiàn)能力強(qiáng)大,處理能力強(qiáng)大,有一定的緩存數(shù)量的能力,減少服務(wù)器請(qǐng)求次數(shù),節(jié)省不必要的網(wǎng)絡(luò)傳輸。
BlazDS 能夠處理并發(fā)用戶的請(qǐng)求,并且能夠壓縮數(shù)據(jù)。
Spring 聲明性的代碼配置,減少系統(tǒng)維護(hù)工作量
Ibatis 減少實(shí)際編碼,考慮以后支持多種商業(yè)數(shù)據(jù)庫(kù)
運(yùn)行平臺(tái)免費(fèi),企業(yè)零預(yù)算。
二,框架和代碼生成器
1. 選擇成熟的Flex 框架
cairngorm 和 pure MVC 是目前成熟的open source 框架。
基于Adobe 支持和維護(hù)cairngorm,所以采用cairngorm
同時(shí)cairngorm 對(duì)view 表現(xiàn)層 和 control 控制層 的 隔離和耦合沒(méi)有成熟的解決方案,開(kāi)發(fā)過(guò)程我們?cè)?jīng)使用ViewControllerHelper ,用addListener監(jiān)聽(tīng)器監(jiān)聽(tīng)event 事件的執(zhí)行,實(shí)際過(guò)程發(fā)現(xiàn)代碼維護(hù)成本太高,遂中途放棄。
最后我們同時(shí)引進(jìn)universal mind cairngorm作為補(bǔ)充輔助框架。
2. Ibatis 代碼生成器
選擇Abator
三,解決方案
1. 客戶端盡可能使用單例模式
減少不必要的客戶端內(nèi)存開(kāi)銷
2. 適度利用客戶端緩存
對(duì)于商品以及客戶供應(yīng)商, Flex 緩存這些數(shù)據(jù),各模塊共享數(shù)據(jù)。
3. 盡可能的采用lazy load 惰性載入數(shù)據(jù)
很多Flex 系統(tǒng)采用初始化時(shí)候一次性載入系統(tǒng)所需要數(shù)據(jù),結(jié)果導(dǎo)致延長(zhǎng)用戶登錄時(shí)間,用戶體驗(yàn)非常的差。
4. 不要過(guò)度依賴客戶端處理能力
特別是大數(shù)據(jù)排序或者處理請(qǐng)求大數(shù)據(jù)能力的時(shí)候,flex 很容易導(dǎo)致瀏覽器停頓和不響應(yīng)。請(qǐng)把大數(shù)據(jù)排序放在Java或者數(shù)據(jù)庫(kù)端,適度的分頁(yè)分段向服務(wù)器請(qǐng)求數(shù)據(jù)。
5. 最大有效的利用Flex 3新的類庫(kù)。
減少開(kāi)發(fā)工作量。
例如利用arraycollection 內(nèi)置的filerfunction 進(jìn)行查找數(shù)據(jù)。
6. 定制開(kāi)發(fā)一些特有的控件
帶合計(jì)欄的datagrid
能模糊查詢的combobox
7.報(bào)表開(kāi)發(fā)
使用成熟的jasper report 框架。
8. 用戶權(quán)限的開(kāi)發(fā)
動(dòng)態(tài)創(chuàng)建用戶所能操作的模塊,而不是簡(jiǎn)單控制模塊的可見(jiàn)和不可見(jiàn)屬性
9. 減少生成swf 大小
使用runtime shared library 編譯swf
10. 開(kāi)發(fā)模塊組件化
判斷標(biāo)準(zhǔn)是沒(méi)有出現(xiàn)冗余重復(fù)模塊代,application mxml 文件代碼簡(jiǎn)潔
11. 模塊之間的數(shù)據(jù)和方法調(diào)用
A模塊引用B模塊的數(shù)據(jù)d和方法f,避免簡(jiǎn)單的調(diào)用B.d 和 B.f
需要采用數(shù)據(jù)和方法的傳遞,以免多層次的模塊數(shù)據(jù)和方法調(diào)用導(dǎo)致代碼的復(fù)雜。
12 使用resource bundle
標(biāo)簽和文本以及提示從resource 文件讀取。
四,基于Flex的進(jìn)銷存系統(tǒng)演示地址
http://www.tangusoft.com/Demo/
flex的長(zhǎng)處是數(shù)據(jù)的圖形化。但用flex顯視二維數(shù)據(jù)和傳統(tǒng)的html相比,卻顯得呆版,笨重。