自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASM實(shí)戰(zhàn):服務(wù)發(fā)現(xiàn)之一

開(kāi)發(fā) 后端
這篇文章是一個(gè)ASM的實(shí)戰(zhàn)篇,并沒(méi)什么什么傳統(tǒng)搜到的插樁System.currentTimeMillis()計(jì)算方法耗時(shí)的實(shí)戰(zhàn)。而且為項(xiàng)目組件化實(shí)現(xiàn)一套服務(wù)發(fā)現(xiàn)的基礎(chǔ)能力。

[[382121]]

本文轉(zhuǎn)載自微信公眾號(hào)「咸魚(yú)正翻身」,作者M(jìn)Dove 。轉(zhuǎn)載本文請(qǐng)聯(lián)系咸魚(yú)正翻身公眾號(hào)。  

前言

這篇文章是一個(gè)ASM的實(shí)戰(zhàn)篇,并沒(méi)什么什么傳統(tǒng)搜到的插樁System.currentTimeMillis()計(jì)算方法耗時(shí)的實(shí)戰(zhàn)。而且為項(xiàng)目組件化實(shí)現(xiàn)一套服務(wù)發(fā)現(xiàn)的基礎(chǔ)能力。

個(gè)人認(rèn)為組件化是一個(gè)項(xiàng)目迭代到一定程度后勢(shì)必要考慮的問(wèn)題,不然整個(gè)項(xiàng)目勢(shì)必變成一整坨shishan…

正文

一、組件化

因此當(dāng)項(xiàng)目足夠龐大復(fù)雜,需求足夠垂直之后,項(xiàng)目整體架構(gòu)如何演進(jìn)就變得頗為重要,如果拆分項(xiàng)目就是一個(gè)亟待解決的問(wèn)題。而組件化則是其中較為正確的一種解決方案。

本質(zhì)的思路:按需求類(lèi)型維度(或其他的抽象維度)對(duì)整個(gè)項(xiàng)目進(jìn)行模塊上的拆解,每個(gè)模塊按照對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉的原則進(jìn)行依賴(lài)隔離的設(shè)計(jì)。在如此的指導(dǎo)下項(xiàng)目自然而然的就分而治之,化繁為簡(jiǎn),化整為零。這也就是常說(shuō)的模塊化(組件化)。

個(gè)人看法:叫組件還是模塊,只是抽象的維度的不一樣罷了,沒(méi)什么好糾結(jié)的。

組件化的意義對(duì)于項(xiàng)目來(lái)說(shuō)在于宏觀上的解耦,具體下的內(nèi)聚。這種思想在設(shè)計(jì)模塊中經(jīng)常被提到:高內(nèi)聚低耦合。

這樣帶來(lái)的“好處”也是顯而易見(jiàn)的,復(fù)雜的工作被拆的足夠簡(jiǎn)單,那么團(tuán)隊(duì)的劃分便會(huì)更科學(xué),執(zhí)行也會(huì)更高效,畢竟只需要負(fù)責(zé)自己的一畝三分地,“鍋也就比較好分了”…

這似乎也是流水線模式下的一種應(yīng)用吧,是好還是壞,作為打工人的我也不好評(píng)判什么,畢竟我也是被流水線上的一員。人生在世又有誰(shuí)是自愿背上枷鎖的呢…

明確組件化的內(nèi)核和意義,接下來(lái)我們就要思考如何去落地。想要徹底拆分和解耦,除了接口上的設(shè)計(jì),編譯隔離也是必須要考慮的問(wèn)題。而走到這一步,很多有經(jīng)驗(yàn)的同學(xué)應(yīng)該意識(shí)到這其中的棘手的問(wèn)題:既然面向的是接口,又是編譯隔離,那么如何拿到接口背后的實(shí)現(xiàn)呢?

路走到這里,也就該面對(duì)服務(wù)發(fā)現(xiàn)(或者接口發(fā)現(xiàn))的問(wèn)題了。

二、服務(wù)發(fā)現(xiàn)

咱們用一張圖來(lái)描述一下上述環(huán)節(jié)聊的這些內(nèi)容:

從圖中,我們可以看到這里對(duì)組件化的方案,是增加了一個(gè)接口層,這層往下都是實(shí)現(xiàn)層。為了實(shí)現(xiàn)編譯隔離,所有的實(shí)現(xiàn)層只能依賴(lài)接口層,這樣對(duì)于實(shí)現(xiàn)層來(lái)說(shuō),就無(wú)法看到其他模塊的實(shí)現(xiàn),也就不會(huì)干預(yù)到其他模塊。

因此如何方便的讓模塊彼此能夠方便的通過(guò)服務(wù)發(fā)現(xiàn)感知到其他模塊的實(shí)現(xiàn)便尤為重要。

對(duì)Java了解比較多的小伙伴應(yīng)該或多或少的接觸過(guò)ServiceLoader,這個(gè)類(lèi)便是JDK為我們提供服務(wù)發(fā)現(xiàn)的能力。今天咱們不去評(píng)判ServiceLoader在android中的優(yōu)劣。畢竟咱們要自己去實(shí)現(xiàn)一套…

所以咱們就要基于使用簡(jiǎn)單的角度來(lái)做一個(gè)服務(wù)發(fā)現(xiàn)庫(kù)。而用到的知識(shí)點(diǎn)也就是前段時(shí)候一直在聊的ASM~

尾聲

由于篇幅原因,所以ASM實(shí)戰(zhàn):服務(wù)發(fā)現(xiàn)將分為多個(gè)章節(jié)。今天是先聊起因;接下來(lái)會(huì)進(jìn)入實(shí)戰(zhàn)環(huán)節(jié),然后基于實(shí)戰(zhàn)代碼,再展開(kāi)ASM、Plugin、Transform相關(guān)的內(nèi)容。

希望能通過(guò)這幾篇文章,串成一個(gè)完整的知識(shí)體系。

 

責(zé)任編輯:武曉燕 來(lái)源: 咸魚(yú)正翻身
相關(guān)推薦

2021-04-21 21:09:36

緩存系統(tǒng)高可用

2013-05-21 09:47:45

虛擬化存儲(chǔ)虛擬化

2009-08-03 13:19:07

WindowsServ虛擬化Hyper-V

2012-02-15 10:26:40

JavaJava Socket

2012-05-03 11:21:58

ApacheCXFJava

2013-11-29 10:24:52

Cluster設(shè)計(jì)資源池

2022-06-01 07:50:46

Web服務(wù)WSDL

2009-05-18 18:08:58

VMware虛擬化服務(wù)器

2021-01-08 10:24:32

Python項(xiàng)目基礎(chǔ)

2023-04-03 07:17:34

CP集群AP

2020-09-24 10:45:52

計(jì)算機(jī)互聯(lián)網(wǎng) 技術(shù)

2023-09-07 23:25:34

微服務(wù)服務(wù)發(fā)現(xiàn)

2022-05-07 15:44:45

eTS 開(kāi)發(fā)鴻蒙

2012-06-28 11:02:27

IT運(yùn)維

2018-09-14 09:23:03

微服務(wù)服務(wù)集成

2021-06-07 10:33:04

企業(yè)數(shù)字化市場(chǎng)

2020-12-14 08:55:00

Node.js服務(wù)性框架

2009-03-20 09:25:39

思科刀片服務(wù)器ucs

2010-07-15 14:55:05

SQL Server數(shù)

2023-11-30 07:45:11

useEffectReact
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)