軟件各種系統(tǒng)架構(gòu)圖_第1頁
軟件各種系統(tǒng)架構(gòu)圖_第2頁
軟件各種系統(tǒng)架構(gòu)圖_第3頁
軟件各種系統(tǒng)架構(gòu)圖_第4頁
軟件各種系統(tǒng)架構(gòu)圖_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件各種系統(tǒng)架構(gòu)圖LT軟件各種系統(tǒng)架構(gòu)圖發(fā)布一企業(yè)技術(shù)架構(gòu)圖,供大家參考。CTO們有所借鑒。簡(jiǎn)單說明:中間件基礎(chǔ)運(yùn)行環(huán)境是經(jīng)過統(tǒng)一規(guī)劃的以WebLogicJBOSS為主的集群環(huán)境基礎(chǔ)業(yè)務(wù)應(yīng)用的高度集成平臺(tái)數(shù)據(jù)中心是企業(yè)公共數(shù)據(jù)的集中管理比如用戶數(shù)據(jù)、企業(yè)用項(xiàng)目做了不少,都沒畫過架構(gòu)圖,這次被要求畫圖,畫的很丑請(qǐng)大家看圖本身包含的系統(tǒng)架構(gòu)信息一、架構(gòu)整體圖1、核心是兩庫一線接口總線所有算法功能抽象成接口,都是泛型方法,是為了解決某一大類問題的代碼庫代碼庫包含現(xiàn)接口總線中接口的各種實(shí)現(xiàn)應(yīng)用庫提供用戶的界面或者提供給外部的服務(wù)是通過容器配置調(diào)用算法庫中的代碼來實(shí)現(xiàn)的各種應(yīng)用二、應(yīng)用關(guān)系圖自己的應(yīng)用系統(tǒng)

1、應(yīng)用通過配置從應(yīng)用庫中組裝出2(問、權(quán)限數(shù)據(jù)推送、異常處理、緩存、日志等)3、使用消息隊(duì)列做高并發(fā)應(yīng)用支撐(秒殺類似應(yīng)用)4、使用分布式任務(wù)系統(tǒng)做周期作業(yè)、數(shù)據(jù)維護(hù)、數(shù)據(jù)計(jì)算等ENode架構(gòu)圖什么是ENodeEe是一個(gè)ET下,純,于DDD,CQRS,ES,EDA,In-Memory個(gè)應(yīng)用開發(fā)框架。開源項(xiàng)目地址:https://git/tangxuehua/enode/netfocus/category/496012.htmlQQ交流:185 916873微信公眾:ENodeENode框架特色DDD實(shí)現(xiàn)CQRS架構(gòu)思想并且框架提供CEventSourcing(ES)C存in-memorydomainmodelCommandMailbox,EventMailboxActorModelActorMailbox原則GroupCommitDomainevent基于聚合根ID+號(hào)的唯一索引,實(shí)現(xiàn)聚合根的樂觀并發(fā)控制框架保證CommandID對(duì)命令或事件進(jìn)行路EQueue,支持分布式部署基于事件驅(qū)動(dòng)架構(gòu)范式(EDA,Event-DrivenArchitecture)基于隊(duì)列的動(dòng)態(tài)擴(kuò)容/EventDB中因?yàn)榇娣诺亩际遣豢勺兊氖翽rocessManager(Saga,以支持一個(gè)用戶操作跨多個(gè)聚合根的業(yè)ENodeCQRS1、系統(tǒng)安全這是首要考慮的,以這張圖為例,網(wǎng)絡(luò)劃分為3個(gè)區(qū):DMZAppCore區(qū)互通,但不能直接與DBCore區(qū)互通(通常這里放置反向代理Web服務(wù)器)AppCoreDMZDBCore(DBCore區(qū)僅與AppCore(據(jù)庫)2、盡量消除單點(diǎn)故障上圖中,除了“硬件負(fù)載均衡”節(jié)點(diǎn)外,其它節(jié)點(diǎn)都可以部署成集群有點(diǎn)特殊,傳統(tǒng)RDBMS要實(shí)現(xiàn)分布式/集群還是比較困難的,要看具體采用的數(shù)據(jù)庫產(chǎn)品,并非所有數(shù)據(jù)庫都能方便的做ShardingJboss本身可以通過Domain模式+mod_cluster實(shí)現(xiàn)集群、RedisMaster/Slave以SentinelHAIBMMQServerHA、Nginx靜態(tài)資源服務(wù)器自不必說3、成本redisnginxapachemysqlrabbitMQ都是很好的選擇。硬件負(fù)載均衡通常成本不低,DNS輪詢策略,也能達(dá)到類似效果,只不過可靠性略差。4、Database問題常規(guī)企業(yè)應(yīng)用中,傳統(tǒng)關(guān)系型數(shù)據(jù)仍然是主流,但是no-sql經(jīng)過這幾年發(fā)展,技術(shù)也日漸成熟了,一些非關(guān)鍵數(shù)據(jù)可以適當(dāng)采用no-sql類相對(duì)比較獨(dú)立,而且增長(zhǎng)迅速的數(shù)據(jù),可以考慮存儲(chǔ)到no-sqldbHDFS、TFS等分布式開源文件系統(tǒng)中。RDBMS的上限,盡早考慮Shardingmysql就不好說了。5、性能webserver、appserver這些一般都可以通過集群實(shí)現(xiàn)橫向DBDBDB移到“云”上吧。HBase系統(tǒng)架構(gòu)圖組成部件說明 Client: 使用HBaseRPC機(jī)制與HMaster和HRegionServer進(jìn)行通信 與HMaster進(jìn)行通信進(jìn)行管理類操作 Client與HRegionServer進(jìn)行數(shù)據(jù)讀寫類操作 Zookeeper:ZookeeperQuorum存儲(chǔ)表地址、HMaster地址HRegionServer把自己以Ephedral方式注冊(cè)到Zookeeper中隨時(shí)感知各個(gè)HRegionServer的康狀況 Zookeeper避免HMaster單點(diǎn)問題HMaster: HMaster沒有單點(diǎn)問題,HBase中可啟動(dòng)多個(gè)HMaster,通過Zookeeper的MasterElection機(jī)制保證總有一個(gè)Master在運(yùn)行 主要負(fù)責(zé)Table和Region的管理工作:1管理用戶對(duì)表的增刪改查操作 2管理HRegionServer的負(fù)載均衡,調(diào)整Region分布 3RegionSplit后,負(fù)責(zé)新Region的分布 4在HRegionServer停機(jī)后負(fù)責(zé)失效HRegionServer上遷移 HRegionServer: HBase中最核心的模塊,主要負(fù)責(zé)響應(yīng)用戶I/O請(qǐng)求,向HDFS文件系統(tǒng)中讀寫數(shù)據(jù)HRegionServer管理一些列HRegion對(duì)象; 每個(gè)HRegion對(duì)應(yīng)Table中一個(gè)Region,HRegion由多個(gè)HStore組成; 每個(gè)HStore對(duì)應(yīng)Table中一個(gè)ColumnFamily的存儲(chǔ); ColumnFamily就是一個(gè)集中的存儲(chǔ)單元故將具有相同IO特性的Column放在一個(gè)Family會(huì)更高效HBase存儲(chǔ)的核心。由MemStoreStoreFile組成。 MemStore是SortedMemoryBuffer。用戶寫入數(shù)據(jù)的流程:Client->MemStoreMemStore滿->Flush成一個(gè)StoreFil->Compact->StoreFile合并成一個(gè)StoreFile,同時(shí)進(jìn)行版本合并和數(shù)據(jù)刪除->當(dāng)StoreFilesCompactStoreFileStoreFileSplit操作,把當(dāng)RegionSplit2Region,RegionSplit出2RegionHMaster分配到相應(yīng)的HRegionServer1Region的壓力得以分流到2Region上。由此過程可知,HBase只是增加數(shù)據(jù),有所得更新和刪除操作,都是在Compact階段做的,所以,用戶寫操作只需要進(jìn)入到內(nèi)存即可立即返回,從而保證I/O高性能。HLog 引入HLog原因: 在分布式系統(tǒng)環(huán)境中無法避免系統(tǒng)出錯(cuò)或者宕機(jī)一旦HRegionServer意外退出,MemStore中的內(nèi)存數(shù)據(jù)就會(huì)丟失,引入HLog就是防止這種情況 工作機(jī)制: 每個(gè)HRegionServer中都會(huì)有一個(gè)HLog對(duì)象,HLog是一個(gè)實(shí)現(xiàn)WriteAheadLog的類,每次用戶操作寫入Memstore的同時(shí),也會(huì)寫一份數(shù)據(jù)到HLog文件,HLog文件定期會(huì)滾動(dòng)出新,并刪除舊的文件(已持久化到StoreFile中的數(shù)據(jù))HRegionServer意外終止后,HMasterZookeeper感知,HMasterHLoglogregionregionregionHRegionServerLoadRegionHLogReplayHLogMemStoreflush到StoreFiles,完成數(shù)據(jù)恢復(fù)。HBase存儲(chǔ)格式 HBase中的所有數(shù)據(jù)文件都儲(chǔ)在HadoopHDFS文件系統(tǒng)上,格式主要有兩種:1HFileHBase中KeyValue數(shù)據(jù)的存儲(chǔ)格式,HFile是Hadoop的二進(jìn)制格式文件,實(shí)際上StoreFile就是對(duì)做了輕量級(jí)包裝,即StoreFile底層就是HFile 2HLogFile,HBaseAheadHadoopSequenceFileHFile圖片解釋: HFile文件不定長(zhǎng)長(zhǎng)度固定的塊有兩個(gè)和FileInfo Trailer中指針指向其數(shù)據(jù)塊的起始點(diǎn) FileInfo中記錄了文件的一些Meta信息,例如:AVG_KEY_LEN,LAST_KEY,COMPARATOR,MAX_SEQ_ID_KEY等DataIndex和MetaIndex塊記錄了每個(gè)Data塊和Meta塊的起始點(diǎn) DataBlock是HBaseI/O的基本單元,了提高效率,HRegionServer中有基于LRU的BlockCache機(jī)制 每個(gè)Data塊的大小可以在創(chuàng)建一個(gè)Table的時(shí)候通過參數(shù)指定大號(hào)的Block有利于順序小號(hào)Block利于隨機(jī)查詢 每個(gè)Data塊除了開頭的Magic以外就是一個(gè)個(gè)KeyValue對(duì)拼接而成,Magic內(nèi)容就是一些隨機(jī)數(shù)字,目的是防止數(shù)據(jù)損壞HFileKeyValuebyte數(shù)byteKeyLengthValueLength:兩個(gè)固定的長(zhǎng)度,分別代KeyValue的長(zhǎng)度KeyLengthRowKey的長(zhǎng)度,RowRowKeyColumnFamilyLength是固定長(zhǎng)度的數(shù)值,表示Family的長(zhǎng)度 接著就是ColumnFamily再接著是然后是兩個(gè)固定長(zhǎng)度的數(shù)值,表示TimeStamp和KeyType(Put/Delete) Value是純粹的二進(jìn)制數(shù)據(jù)HLogFileHLog文件就是一個(gè)普通的HadoopSequenceFile,SequenceFile的Key是HLogKey對(duì)象,HLogKey中記錄了寫入數(shù)據(jù)的歸屬信息,除了table和region名字外,同時(shí)還包括sequencenumber和timestamp,timestamp是“寫入時(shí)間sequencenumber的起始值為0,或者是最近一存入文件系統(tǒng)中sequencenumber。 HLogSequeceFile的Value是HBase的KeyValue對(duì)象,即對(duì)應(yīng)HFile中的KeyValuehbase來開展。一.三層架構(gòu)圖二.系統(tǒng)各層次職責(zé)UI(UserInterface)層的職責(zé)是數(shù)據(jù)的展現(xiàn)和采集,數(shù)據(jù)EntityobjectBLInterface側(cè)層用于將業(yè)務(wù)或數(shù)據(jù)資源發(fā)布為服務(wù)(如WebService。BL(BusinessLogic)UI層提交的請(qǐng)求。BusinessFunction子層負(fù)責(zé)基本業(yè)務(wù)功能的實(shí)現(xiàn)。BusinessFlowBusinessFunction子層提(TransactionBusinessFlow)ResourceAccess持,并向上層屏蔽資源的來源。Entity子層采用DataAccessServiceAccess子層來提供業(yè)務(wù)需要的基礎(chǔ)數(shù)據(jù)/資源訪問能力。DataAccessBEMSQLDBAdapter子層負(fù)責(zé)屏蔽數(shù)據(jù)庫類型的差異。ORM子層負(fù)責(zé)提供對(duì)象-關(guān)系映射的功能。Relation子層提供ORM無法完成的基于關(guān)系(Relation)的數(shù)據(jù)訪問功能。ServiceAccessSOA的方式從外部系統(tǒng)獲ServiceEntranceService的訪問,它相當(dāng)ServiceServiceEntrance就可以訪問系統(tǒng)發(fā)布的服務(wù)。ServiceEntrance(如Java.Net)的參數(shù)類型轉(zhuǎn)換。ConfigAccessobject或?qū)⑴渲胦bject保存倒配置文件。EntityUI/BEM/ResourceManager層,在這些層之間傳遞數(shù)據(jù)。Entity側(cè)層中包含三類Entity示:三.AspectAspect貫穿于系統(tǒng)各層,是系統(tǒng)的橫切關(guān)注點(diǎn)。通常采用AOP技術(shù)來對(duì)橫切關(guān)注點(diǎn)進(jìn)行建模和實(shí)現(xiàn)。1.SecurtiySecurity/異常處理方式。四.規(guī)則12.Entityobject在各個(gè)層之間傳遞數(shù)據(jù)。3UI傳遞,除此之外,應(yīng)該使用Entityobject傳遞數(shù)據(jù)。4.對(duì)于每一個(gè)數(shù)據(jù)庫表(Table)DBEntityclass與EntityclassBEMClass與之對(duì)應(yīng)。5.有些跨數(shù)據(jù)庫或跨表的操作(如復(fù)雜的聯(lián)合查詢)也需要由相應(yīng)的BEMClass來提供支持。6.對(duì)于相對(duì)簡(jiǎn)單的系統(tǒng),可以考慮將BusinessFunction層和BusinessFlow子層合并為一個(gè)。7.UI層和BL層禁止出現(xiàn)任何SQL語句。五.錯(cuò)誤與異常異??梢苑譃橄到y(tǒng)異常(如網(wǎng)絡(luò)突然斷開)異常(如用戶的輸入值超出最大范圍1.DataAccess層不得向上層隱藏任何異常(該層拋出的異常幾乎都是系統(tǒng)異常。2.要明確區(qū)分業(yè)務(wù)執(zhí)行的結(jié)果和系統(tǒng)異常。比如驗(yàn)證用戶ID不存在,不應(yīng)該拋出異常,而是返回(out參數(shù))一個(gè)表示驗(yàn)證結(jié)果的枚舉值,信息時(shí),數(shù)據(jù)庫連接突然斷開,則應(yīng)該拋出系統(tǒng)異常。3層應(yīng)根據(jù)業(yè)務(wù)的需要捕獲某些系統(tǒng)異BL就需要將數(shù)據(jù)庫連接失敗的系統(tǒng)異常轉(zhuǎn)換為業(yè)務(wù)執(zhí)行的結(jié)果。層(Service層)BLAPI回值來查看業(yè)務(wù)的執(zhí)行結(jié)果外,還需要截獲所有的系統(tǒng)異常,并將其解釋為友好的錯(cuò)誤信息呈現(xiàn)給用戶。六.項(xiàng)目組織目結(jié)構(gòu)以BAS系統(tǒng)為例。1.主目錄結(jié)構(gòu):dlldll的名字EAS.BL.dllEAS.BLEAS.BL.Order與EAS.BL.Permission分別處理不同的業(yè)務(wù)邏輯。包含眾多子項(xiàng)目的龐大項(xiàng)目的物理組織:核心子項(xiàng)目Core的位置:Core子項(xiàng)目中包含一些公共的基礎(chǔ)設(shè)施,如錯(cuò)誤處理、權(quán)限控制方面等。七.發(fā)布服務(wù)與服務(wù)回調(diào)以EAS系統(tǒng)為例。UIPage一樣,服務(wù)也不允許拋出任何異常,而是應(yīng)該以返回錯(cuò)誤碼(int型,1表示成功,其它值表示失敗out參數(shù)提供。BASWebService(Remoting)服務(wù),則BASBAS.Entrance.dllBAS.Entrance.dll封裝了BAS服務(wù)交換信息的通信機(jī)制,客戶系統(tǒng)只要通過BAS.Entrance.dllBAS3BASWebService(Remoting)回調(diào)客戶系統(tǒng),則必須提供僅僅定義了接口的BAS.CallBack.dll,客戶系統(tǒng)將引用該dll,實(shí)現(xiàn)其中的接口,并將其發(fā)布為服務(wù),供BAS回調(diào)。WebService的參數(shù)或返回值需要是復(fù)雜類型――即ServiceEntityServiceEntity應(yīng)該在對(duì)應(yīng)的BAS.EntranceParaDef.dllBAS.CallBackParaDef.dll中定WebServiceXml符串代替(注意,EntranceCallBack接口對(duì)應(yīng)服務(wù)的方法的參數(shù)是強(qiáng)類型的,而Xml字符串和復(fù)雜類型對(duì)象之間BAS.Entrance.dllBAS.CallBack.dll中實(shí)現(xiàn)。Linux內(nèi)核層,分別介紹如下:應(yīng)用程序?qū)覣ndroidSMS短信客戶端程序、電話撥號(hào)程序、圖片瀏覽器、Web瀏覽器等應(yīng)用程序。這些應(yīng)用程序都是用Java語言編寫的,并且這些應(yīng)用程序都是可以被開發(fā)人員開發(fā)的其他應(yīng)用程序所替換這點(diǎn)不同于其他手機(jī)操作統(tǒng)固化在系統(tǒng)內(nèi)部的系統(tǒng)軟件,更加靈活和個(gè) 性化。應(yīng)用程序框架層應(yīng)用程序框架層是我們從事Android開發(fā)的基礎(chǔ)很多核心應(yīng)用程序也是通過這一層來實(shí)現(xiàn)其核心功能的,該層簡(jiǎn)化了組件的重用開發(fā)人員可以直接使用其提 供的組件來進(jìn)行快速的應(yīng)用程序開發(fā)也可以通過繼承而實(shí)現(xiàn)個(gè)性化的拓展。ActivityManager(活動(dòng)管理器)管理各個(gè)應(yīng)用程序生命周期以及通常的導(dǎo)航回退功能WindowManager(窗口管理器)管理所有的窗口程序c)d)e)的提示信息f)

ContentProvider(內(nèi)容提供器)使得不同應(yīng)用程序之間存取或者分享數(shù)據(jù)ViewSystem(視圖系統(tǒng))構(gòu)建應(yīng)用程序的基本組件NotificationManager(通告管理器)使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義PackageManager(包管理器)Android系統(tǒng)內(nèi)的程序管理g)TelephonyManager(電話管理器)管理所有的移動(dòng)設(shè)備功能h)ResourceManager(資源管理器)提供應(yīng)用程序使用的各種非代碼資源,如本地化字符串、圖片、布局文件、顏色文件等LocationManager(位置管理器)提供位置服務(wù)XMPPService(XMPP服務(wù))提供GoogleTalk服務(wù)系統(tǒng)運(yùn)行庫層從圖中可以看出,系統(tǒng)運(yùn)行庫層可以分成兩部分,分別是系統(tǒng)庫和Android運(yùn)行時(shí),分別介紹如下:a)系統(tǒng)庫Linux個(gè):? SurfaceManager:2D3D繪圖進(jìn)行顯示合成。? MediaFramework:多媒體庫,基于PacketVideoOpenCore;支持多種常用的音頻、視頻格式錄制和回放,編碼格式包括MPEG4、MP3、H.264、AAC、ARM。? SQLite:小型的關(guān)系型數(shù)據(jù)庫引擎? OpenGL|ES:繪圖函數(shù)庫

OpenGLES1.0API3D? 提供點(diǎn)陣字與向量字的描繪與顯示? 一套網(wǎng)頁瀏覽器的軟件引擎? SGL:底層的2D圖形渲染引擎? SSL:在Andorid上通信過程中實(shí)現(xiàn)握手? Libc:BSDCembeddedlinux的設(shè)備定制b)Android運(yùn)行時(shí)AndroidJava語言編寫,程Android虛擬機(jī)兩部分。? 核心庫核心庫提供了Java語言API中的大多數(shù)Android的一些核心API,如、android.media等等。? Dalvik虛擬機(jī)Android程序不同于J2me程序,每個(gè)Android應(yīng)用程序都有一個(gè)專有的進(jìn)程,并且不是多個(gè)程序運(yùn)行在一個(gè)虛擬機(jī)中,而是每個(gè)Android程序都有一Dalivik虛擬機(jī)的實(shí)例,并在該實(shí)例中執(zhí)行。Dalvik虛擬Java虛擬機(jī),而不是傳統(tǒng)的基于棧dxJavadex格式的中間碼。Linux內(nèi)核層AndroidLinux2.6Linux內(nèi)核。EntityFrameworkADO.NETEntityFramework,ADO.NETORM(Object/RelationalMapping)框架。EntityFramework的主要特點(diǎn):支持多種數(shù)據(jù)庫(MicrosoftSQLServer,Oracle,DB2;強(qiáng)勁的映射引擎,能很好地支持存儲(chǔ)過程;VisualStudio集成工具,進(jìn)行可視化操作;ASP.NET,WPF,WCF,WCFData2剛剛來到一家新公司,首先會(huì)對(duì)項(xiàng)目進(jìn)行一個(gè)大致了解,研究了兩天了,有了個(gè)總體的把握了,下面就是我這小菜鳥畫的簡(jiǎn)單系統(tǒng)架構(gòu)圖! 有的時(shí)候架構(gòu)龐大的要我們?nèi)フJ(rèn)真學(xué)習(xí),揣摩!非就是一個(gè)字→是而且還拆的很到位,所以加油!人看法!Struts2架構(gòu)圖Struts2架構(gòu)圖請(qǐng)求首先通過Filterchain,F(xiàn)ilter主要包括ActionContextCleanUp,它主要清理當(dāng)前線程的ActionContext和Dispatcher;FilterDispatcher主要通過AcionMapper來決定需要調(diào)用哪個(gè)Action。ActionMapperActionMapping后,在DispatcherserviceActionActionProxy,ActionProxyActionInvocationActionInvocationInterceptorsActionResult當(dāng)然,如果要在返回之前做些什么,可以實(shí)現(xiàn)PreResultListener。Struts2部分類介紹Struts2ActionMapperActionMapperHttpServletRequest和ActionActionRequestjavaServlet類的依賴。Struts2中它的默認(rèn)實(shí)現(xiàn)類是DefaultActionMapper,ActionMapper很大的用處可以根據(jù)urlRestfuldocs\actionmapper.html。ActionProxy&amp;ActionInvocationAction的一個(gè)代理,由ActionProxyFactoryActionDefaultActionProxyActionInvocationAction實(shí)例。ActionProxy作用Action,無論是本地還是遠(yuǎn)程。而ActionInvocationAction,攔截器的功能ActionInvocation中實(shí)現(xiàn)的。ConfigurationProvider&amp;ConfigurationConfigurationProviderStruts2解析器,Struts2中的配置文件主要是尤其實(shí)現(xiàn)類XmlConfigurationProvider及其子類StrutsXmlConfigurationProvider來解析,Struts2請(qǐng)求流程1、客戶端發(fā)送請(qǐng)求2、請(qǐng)求先通過ActionContextCleanUp--&gt;FilterDispatcher3FilterDispatcherActionMapperRequest需要調(diào)用哪個(gè)Action4ActionMapperAction,F(xiàn)ilterDispatcher把請(qǐng)求的處理交給ActionProxy轉(zhuǎn)到它的Delegate--Dispatcher來執(zhí)行5、ActionProxy根據(jù)ActionMapping和ConfigurationManager找到需要調(diào)用的Action類6、ActionProxy創(chuàng)建一個(gè)ActionInvocation的實(shí)例7ActionInvocation調(diào)用真正的攔截器的調(diào)用8、Action執(zhí)行完畢,ActionInvocation創(chuàng)建Result并返回,當(dāng)然,如果要在返回之前做些什么,可以實(shí)現(xiàn)PreResultListener。添加PreResultListener可以在Interceptor中實(shí)現(xiàn),不知道其它還有什么方式?短連接聊天服務(wù),每半分鐘刷新一次..3blit傳輸:spriteMC架構(gòu)圖:模塊與模塊之間的通信也通過sendNotifcation發(fā)送消息。神仙道尋路方法:22正常尋路關(guān)于flash共享庫:aurla發(fā)布的swfurlb引入a源..b..burla瀏覽器緩存地址:C:\DocumentsandSettings\Administrator\LocalSettings\TemporaryInternetFiles網(wǎng)頁游戲的swf都加載到這里了。<深度排序>那就不停的遍歷更具顯示對(duì)象的Y設(shè)置它們?cè)偃萜骼锩娴纳疃?不知道把同屏顯示對(duì)象的Y再數(shù)組里面排序好設(shè)置深度速度快 還是變排序邊設(shè)置深度快并且在數(shù)組里面排序好這種方法要速度很好NPCiworldObjectdepth.sortOn("depth");Array.Numbericdepth是npc也統(tǒng)一有這個(gè)屬性然后就不用yy+heightdepth這個(gè)屬性排序這里判斷這個(gè)玩家的深度如果已經(jīng)符合,就不要排序。setChildIndex消耗挺大的詳解三層架構(gòu)圖PS:在看三層架構(gòu)的時(shí)候,找的了一個(gè)我感覺不錯(cuò)的材料,里面有如下一張圖,打算詳細(xì)的解釋一下這張圖,也總結(jié)一下三層的知識(shí)一、系統(tǒng)各層次職責(zé)UI(UserInterface)EntityobjectBL層處理ServiceInterface(如WebService。BL(BusinessLogic)UI層提交的請(qǐng)求。BusinessFunction子層負(fù)責(zé)基本業(yè)務(wù)功能的實(shí)現(xiàn)。BusinessFlowBusinessFunction子(TransactionBusinessFlow)ResourceAccess層的職責(zé)是提供全面的資源訪問功能支持,并向上層屏蔽資源的來源。BEM(BusinessEntityManager)子層采用DataAccessServiceAccess礎(chǔ)數(shù)據(jù)/資源訪問能力。DataAccess子層負(fù)責(zé)從數(shù)據(jù)庫中存取資源,并向BEMSQLDBAdapter子層負(fù)責(zé)屏蔽數(shù)據(jù)庫類型的差異。ORM子層負(fù)責(zé)提供對(duì)象-關(guān)系映射的功能。RelationORM無法完成的基于關(guān)系(Relation)的數(shù)據(jù)訪問功能。ServiceAccessSOA的方式從外部系統(tǒng)注Entrance用于簡(jiǎn)化對(duì)Service的訪問它相當(dāng)于Service的代理,客戶直接使用ServiceEntrance就可以訪問系統(tǒng)發(fā)布的服務(wù)Service Entrance為特定的平臺(tái)(如Java.Net)提供強(qiáng)類型的接口,內(nèi)部可能隱藏了復(fù)雜的參數(shù)類型轉(zhuǎn)換。ConfigAccessobject或?qū)⑴渲胦bject保存倒配置文件。EntityUI/BEM/ResourceManager層,在這些層之間傳遞數(shù)據(jù)。Entity側(cè)層中包含三類Entity圖所示:二、AspectAspectAOP技術(shù)來對(duì)橫切關(guān)注點(diǎn)進(jìn)行建模和實(shí)現(xiàn)。SecurtiySecurity提供支持。ErrorHandling:整個(gè)系統(tǒng)采用一致的錯(cuò)誤/異常處理方式。Log三、規(guī)則1.系統(tǒng)各層次及層內(nèi)部子層次之間都不得跨層調(diào)用。2.Entityobject在各個(gè)層之間傳遞數(shù)據(jù)。3.需要在UI層綁定到列表的數(shù)據(jù)采用基于關(guān)系的DataSetEntityobject傳遞數(shù)據(jù)。對(duì)于每一個(gè)數(shù)據(jù)庫表(Table)都有一個(gè)DBclassEntityclassBEMClass與之對(duì)應(yīng)。有些跨數(shù)據(jù)庫或跨表的操作(如復(fù)雜的聯(lián)合查詢BEMClass來提供支持。BusinessFunction子層和BusinessFlow子層合并為一個(gè)。UIBLSQL語句。四、錯(cuò)誤與異常異??梢苑譃橄到y(tǒng)異常(如網(wǎng)絡(luò)突然斷開)和業(yè)務(wù)異常(如用戶的輸入值超出最大范圍轉(zhuǎn)化為業(yè)務(wù)執(zhí)行的結(jié)果。DataAccess層不得向上層隱藏任何異常(的異常幾乎都是系統(tǒng)異常。要明確區(qū)分業(yè)務(wù)執(zhí)行的結(jié)果和系統(tǒng)異常。比如驗(yàn)證ID不存在,不應(yīng)該拋出異常,而是返回(out參數(shù))一個(gè)表示驗(yàn)證結(jié)果的枚舉值,這屬于

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論