您好,登錄后才能下訂單哦!
你有沒有遇到過,同一個(gè)數(shù)據(jù)庫的數(shù)據(jù),每次做一個(gè)產(chǎn)品都要重新實(shí)現(xiàn)一遍同樣的功能,每一個(gè)產(chǎn)品都要單獨(dú)寫一相同的功能模塊(比如登錄,獲取產(chǎn)品列表等),很多以前寫的功能模塊到現(xiàn)在都不能復(fù)用了,工作幾年下來,公司里沒有沉淀出可以復(fù)用的東西……
如果你遇到過相似的情況,也許你應(yīng)該關(guān)注一下SOA(Service-Oriented Architecture)—— 面向服務(wù)的體系結(jié)構(gòu),這不是一中具體的技術(shù),只是一個(gè)設(shè)計(jì)思想,他的主要思想就是把服務(wù)從項(xiàng)目中分離出來,做成接口的形式供其他項(xiàng)目調(diào)用,這樣的好處很明顯,第一、只要約定好接口形式,任何語言都可以相互調(diào)用;第二、最大化的復(fù)用功能模塊;第三、可以橫向和縱向擴(kuò)展,等等。這時(shí)大家可能想起來Web Service來了,它主要機(jī)遇基于SOAP通過HTTP協(xié)議進(jìn)行調(diào)用,這種形式有很多弊病,比如開發(fā)麻煩,要生成一個(gè)非常大的WSDL文件,生成的數(shù)據(jù)格式很復(fù)雜,有沒有一種既簡單又安全的方式呢,當(dāng)然有了,那就是RESTful(Representational State Transfer)描述了一個(gè)架構(gòu)樣式的網(wǎng)絡(luò)系統(tǒng),很多公司的API都是通過該形式開發(fā),比如微博API,QQ開放平臺(tái),淘寶開發(fā)平臺(tái)等等,那它有什么好處呢,首先它基于HTTP協(xié)議,通過即 POST、GET、HEAD、PUT 、DELETE、OPTIONS、TRACE等請求方式處理資源,然后返回通用數(shù)據(jù)格式,例如XML/JSON等,這樣不管是B/S,C/S架構(gòu)都能很好的支持。下面講解一下RESTful架構(gòu)設(shè)計(jì)。
首先架構(gòu)圖如下:
需要為每個(gè)程序分配一個(gè)appKey和一個(gè)appSecret, 然后通過URL訪問服務(wù),最后服務(wù)返回?cái)?shù)據(jù)(JSON / XML格式)。
可能遇到的問題:
1、安全性
當(dāng)請求端發(fā)送請求的時(shí)候,服務(wù)端要驗(yàn)證合法性,那該如何驗(yàn)證呢,大多數(shù)方案都是遵循OAuth(現(xiàn)在普遍都升級(jí)的到了OAuth3.0)。下面是我設(shè)計(jì)一種簡單方式,在小應(yīng)用上可以采用。
2、請求控制
接口不能無限制的調(diào)用,不然服務(wù)會(huì)被跑慢,所以需要限制請求,方法很多,可以采用Nginx的limit模塊,限制用戶的調(diào)用頻率和最大連接數(shù)等。
3、服務(wù)擴(kuò)展
首先對于以后服務(wù)的升級(jí),需要對接口進(jìn)行非常好的設(shè)計(jì),避免后續(xù)改變URL,這里建議多應(yīng)用設(shè)計(jì)模式來進(jìn)行程序設(shè)計(jì),而隨著服務(wù)的訪問量不斷增加,需要對服務(wù)進(jìn)行框架升級(jí),這個(gè)可以參考我的《項(xiàng)目成長記》專題文章。
SOA架構(gòu)目前已經(jīng)很成熟,大家可以多進(jìn)行研究討論。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。