今天是2017-03-04,我1號辭職的,今天第4天沒上班了。在公司我工作也剛好5年了,這5年來換了幾個(gè)工作,但是中間沒有停留超過1個(gè)月的。我雖換工作頻繁,但是走的一直是技術(shù)路線,且都是C#桌面軟件開發(fā)。辭職的時(shí)候,我的理由是,我對業(yè)務(wù)根本沒興趣,走的就是技術(shù)路線,而公司還是傳統(tǒng)的軟件開發(fā),技術(shù)上還是采用保守的態(tài)度。公司是做業(yè)績盈利的不可能讓程序猿自由的寫感興趣的代碼的。一個(gè)做delphi開發(fā)的項(xiàng)目經(jīng)理帶C#團(tuán)隊(duì),一直強(qiáng)調(diào)快速開發(fā),最后出的產(chǎn)品問題不斷,這種種的問題,只有在公司中存在。
閑話少扯,繼續(xù)說框架,上次的框架又經(jīng)過我自己的不斷重構(gòu),加入了路由通信機(jī)制,多線程異步加載,同步控制,替換掉osgi加載程序集等功能。下面分別說明。
路由通信:程序集A中的a對象,想調(diào)用程序集B中的b對象,通過主界面去找b對象,而主界面是完全動態(tài)加載及動態(tài)控制的,主界面分模塊,插件,窗體。
a,b分別屬于不同模塊,不同插件的不同窗體,a怎么調(diào)用b直接在主界面上切換,而不是彈出窗體,這樣的機(jī)制就是路由通信,通信的意思就是需要傳遞參數(shù)。
a只用告訴主界面,我?guī)е鴧?shù)信息需要找b,剩下的工作由主界面完成。字典是查找最快的數(shù)據(jù)結(jié)構(gòu),那就需要把b窗體的插件,模塊維護(hù)成字典。(主界面上所有的窗體對象都需要這樣的字典維護(hù))。C#中的消息被封裝成事件了,所以需要把窗體的事件處理函數(shù)放在主界面那里管理,窗體a只用觸發(fā)事件,由訂閱的主界面去處理即可。參數(shù)為了統(tǒng)一,我采用的是dynamic對象,接收窗體再反射解析對象。
一個(gè)軟件從登錄到主界面,用戶肯定是不愿意等待的,意思是進(jìn)入主界面越快越好,但是主界面動態(tài)構(gòu)建,邏輯數(shù)據(jù)復(fù)雜的話,肯定加載緩慢,且登錄邏輯也需要判斷很多條件,及整個(gè)系統(tǒng)的一些初始化工作。在登錄界面顯示前就開一個(gè)線程跑主界面的數(shù)據(jù),在登錄界面出來后再跑一個(gè)線程取登錄界面的數(shù)據(jù)。登錄界面用this.Update()在shown事件中,意思是登錄界面立刻出現(xiàn),然后跑登錄界面的數(shù)據(jù)。【還有一種辦法是發(fā)用戶消息,用戶消息會在一個(gè)線程上執(zhí)行,在執(zhí)行Load事件后,立刻更新界面this.Update(),再執(zhí)行消息的處理過程。這樣可以把界面與加載分開處理?!吭诘卿洺晒?,再跑一個(gè)線程取一些緩存數(shù)據(jù)。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26