今天是2017-03-04,我1號(hào)辭職的,今天第4天沒(méi)上班了。在公司我工作也剛好5年了,這5年來(lái)?yè)Q了幾個(gè)工作,但是中間沒(méi)有停留超過(guò)1個(gè)月的。我雖換工作頻繁,但是走的一直是技術(shù)路線,且都是C#桌面軟件開(kāi)發(fā)。辭職的時(shí)候,我的理由是,我對(duì)業(yè)務(wù)根本沒(méi)興趣,走的就是技術(shù)路線,而公司還是傳統(tǒng)的軟件開(kāi)發(fā),技術(shù)上還是采用保守的態(tài)度。公司是做業(yè)績(jī)盈利的不可能讓程序猿自由的寫(xiě)感興趣的代碼的。一個(gè)做delphi開(kāi)發(fā)的項(xiàng)目經(jīng)理帶C#團(tuán)隊(duì),一直強(qiáng)調(diào)快速開(kāi)發(fā),最后出的產(chǎn)品問(wèn)題不斷,這種種的問(wèn)題,只有在公司中存在。

  閑話少扯,繼續(xù)說(shuō)框架,上次的框架又經(jīng)過(guò)我自己的不斷重構(gòu),加入了路由通信機(jī)制,多線程異步加載,同步控制,替換掉osgi加載程序集等功能。下面分別說(shuō)明。

路由通信:程序集A中的a對(duì)象,想調(diào)用程序集B中的b對(duì)象,通過(guò)主界面去找b對(duì)象,而主界面是完全動(dòng)態(tài)加載及動(dòng)態(tài)控制的,主界面分模塊,插件,窗體。

a,b分別屬于不同模塊,不同插件的不同窗體,a怎么調(diào)用b直接在主界面上切換,而不是彈出窗體,這樣的機(jī)制就是路由通信,通信的意思就是需要傳遞參數(shù)。

a只用告訴主界面,我?guī)е鴧?shù)信息需要找b,剩下的工作由主界面完成。字典是查找最快的數(shù)據(jù)結(jié)構(gòu),那就需要把b窗體的插件,模塊維護(hù)成字典。(主界面上所有的窗體對(duì)象都需要這樣的字典維護(hù))。C#中的消息被封裝成事件了,所以需要把窗體的事件處理函數(shù)放在主界面那里管理,窗體a只用觸發(fā)事件,由訂閱的主界面去處理即可。參數(shù)為了統(tǒng)一,我采用的是dynamic對(duì)象,接收窗體再反射解析對(duì)象。

  一個(gè)軟件從登錄到主界面,用戶肯定是不愿意等待的,意思是進(jìn)入主界面越快越好,但是主界面動(dòng)態(tài)構(gòu)建,邏輯數(shù)據(jù)復(fù)雜的話,肯定加載緩慢,且登錄邏輯也需要判斷很多條件,及整個(gè)系統(tǒng)的一些初始化工作。在登錄界面顯示前就開(kāi)一個(gè)線程跑主界面的數(shù)據(jù),在登錄界面出來(lái)后再跑一個(gè)線程取登錄界面的數(shù)據(jù)。登錄界面用this.Update()在shown事件中,意思是登錄界面立刻出現(xiàn),然后跑登錄界面的數(shù)據(jù)。【還有一種辦法是發(fā)用戶消息,用戶消息會(huì)在一個(gè)線程上執(zhí)行,在執(zhí)行Load事件后,立刻更新界面this.Update(),再執(zhí)行消息的處理過(guò)程。這樣可以把界面與加載分開(kāi)處理?!吭诘卿洺晒?,再跑一個(gè)線程取一些緩存數(shù)據(jù)。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式