久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2375|回復(fù): 0
收起左側(cè)

反編譯看核心的收獲小記

[復(fù)制鏈接]
ID:113276 發(fā)表于 2016-4-10 20:01 | 顯示全部樓層 |閱讀模式
     序:
        來北京二十多天了,陸陸續(xù)續(xù)也在新公司上班半個(gè)月了。剛來公司沒有立刻進(jìn)入項(xiàng)目組開發(fā),而是先熟悉環(huán)境、熟悉項(xiàng)目結(jié)構(gòu)。在原來的工作里沒有接觸過WCF。卻通過HR、前輩們口中多次聽說過。由于原來的工作比較忙或者說自己比較懶,也沒有去了解學(xué)習(xí)過他。僅僅知道有這么個(gè)東西,知道他基本的作用。公司花錢請(qǐng)你來是為了干活的嗎、所以從TFS上Down下來xx系統(tǒng)源碼,熟悉一下。以方便日后更快的融入項(xiàng)目組。由于保密協(xié)議此篇中僅是思想上的總結(jié)不會(huì)設(shè)計(jì)到任何源碼。主要記錄下原來沒有基礎(chǔ)過的技術(shù)以及好的第三方插件。

    0x01 前臺(tái):不容置疑,MVC火的一塌糊涂。就我上家公司也從WebForm過度到了MVC。而新公司也比例外,“前臺(tái)”也是經(jīng)典的MVC。以及一些常用的JQuery框架,具體的沒有太細(xì)致的看。而我主要關(guān)心的還是通信以及調(diào)用關(guān)系。

    0x02 后臺(tái):“后臺(tái)” 不容置疑一位高手進(jìn)行了設(shè)計(jì)(至少對(duì)于我來說這個(gè)人很厲害)。WCF可以不依附IIS存在,而把他封裝到了Console Application中。一個(gè)黑色的控制臺(tái)窗體不免會(huì)帶來神秘的氣息。查看Main方法僅有一個(gè)靜態(tài)方法的調(diào)用,通過ILSpy進(jìn)行反編譯DLL文件。核心的東西都封裝到了這里面。

    0x03 核心剖析: WCF服務(wù)啟動(dòng)后會(huì)通過企業(yè)級(jí)緩存“Enterprise Library”把一些不經(jīng)常修改的數(shù)據(jù)常駐內(nèi)存,優(yōu)點(diǎn):這樣可以避免重復(fù)讀取數(shù)據(jù)庫,節(jié)約IO資源。緩存加載完成后系統(tǒng)會(huì)反射某一路徑下的DLL文件(即WCF Library)。并對(duì)ServiceHost進(jìn)行繼承封裝。這樣可以批量啟動(dòng)某路徑下的WCF服務(wù)。
        
        此框架設(shè)計(jì)了單點(diǎn)登錄。雖然我原來所設(shè)計(jì)的系統(tǒng)并沒有此功能,但是自己也查過如何實(shí)現(xiàn)。有一天在休息的時(shí)候突然想到可以在數(shù)據(jù)庫中預(yù)留一個(gè)GUID字段。當(dāng)用戶每次登錄后就Create一個(gè)新的GUID值Update到相應(yīng)的用戶,然后用戶攜帶Session值操作業(yè)務(wù)的時(shí)候都與相應(yīng)的數(shù)據(jù)庫GUID字段相比較,如果兩值==則證明此用戶為最新登錄者,如果不等則把當(dāng)前用戶T掉系統(tǒng)并提示“該用戶已在其他地點(diǎn)登錄”。如此實(shí)現(xiàn)SSO未免有些牽強(qiáng),因此方案僅能踢掉最先登錄系統(tǒng)的用戶并不能“準(zhǔn)確”的告訴最新登錄者當(dāng)前帳號(hào)是否在線。

        當(dāng)審計(jì)代碼的時(shí)候,斷點(diǎn)一步一步跟蹤突然系統(tǒng)直接拋出異常“用戶身份驗(yàn)證失敗” 。說明SSO生效了?墒强础扒芭_(tái)”代碼僅僅一行調(diào)用WCF的操作,而我WCF初也加了斷點(diǎn)并且調(diào)試沒有進(jìn)入直接拋出異常。想了很久沒有看明白是怎么會(huì)是。甚至開始懷疑這是自己沒有接觸過的新語法糖。。。通過不停調(diào)試實(shí)驗(yàn)發(fā)現(xiàn)SSO的實(shí)現(xiàn)是寫在了WCF中而非前臺(tái)的Session中,為什么這么說那?因?yàn)楫?dāng)我把WCF關(guān)閉后他拋出的異常就會(huì)變成“監(jiān)聽端口不存在”之類的錯(cuò)誤。所以斷定是WCF進(jìn)行的SSO。但是又沒有進(jìn)入對(duì)應(yīng)斷點(diǎn)的方法,很是糾結(jié)。。。后來想了想MVC有攔截器那WCF會(huì)不會(huì)也有攔截器。查詢后發(fā)現(xiàn)繼承IOperationBehavior, IParameterInspector接口后便可以進(jìn)行攔截了。然“前臺(tái)”調(diào)用WCF的時(shí)候第一個(gè)參數(shù)都是一個(gè)GUID,所以猜測應(yīng)該是核心文件把WCF請(qǐng)求攔截后在內(nèi)存中對(duì)比第一個(gè)GUID值查看是否存在,則進(jìn)行相應(yīng)的提示。

        一個(gè)很厲害的封裝被我這平庸的語文水準(zhǔn)一描述也變的暗淡無光了。。。好尷尬。。。

    尾:
        雖然沒有對(duì)核心文件生成一張完整的結(jié)構(gòu)圖但也有了一個(gè)初步的認(rèn)識(shí)。至少會(huì)對(duì)日后開發(fā)中遇到的稀奇古怪的錯(cuò)誤有一定的幫助。日后還是需要像前輩看起,一個(gè)人技術(shù)的瓶頸完全在于你的觀念。像我現(xiàn)在這樣的猴子僅僅是代碼中的搬運(yùn)工,而此類高手寫的代碼那才是《指尖上的藝術(shù)》。


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久 | av中文字幕在线 | 激情五月婷婷综合 | 呦呦在线视频 | 亚洲成人国产综合 | 日韩有码在线播放 | 免费在线观看av片 | 午夜在线 | 精品久久久久久亚洲精品 | 精品美女久久久 | 成人免费视屏 | 精品91| 精品国产乱码久久久久久久久 | 日本三级在线视频 | 成av人电影在线 | av永久免费 | 欧美一级免费看 | 欧美亚洲国产一区二区三区 | 欧美成人一区二区三区 | 成人av电影免费在线观看 | 红色av社区 | 小早川怜子xxxxaⅴ在线 | 国产成人精品久久 | 老头搡老女人毛片视频在线看 | 在线免费观看黄色 | 久久综合狠狠综合久久综合88 | 天天综合天天 | 国产精品一区二区在线观看 | 日本三级全黄三级三级三级口周 | 国产精品视频免费观看 | 韩国理论电影在线 | 欧美成人精品一区二区男人看 | 一级做a| 欧美一区不卡 | 欧美日韩最新 | 欧美激情在线精品一区二区三区 | 日韩中文电影 | 欧美激情一区二区三区 | 欧美一二精品 | 国产成人免费在线 | 亚洲性视频网站 |