答案很顯然,要實(shí)現(xiàn)真正完整的 SOA 架構(gòu),只靠原子服務(wù)和服務(wù)是不夠的。首先,我們看一下SOA的基礎(chǔ)定義:SOA基于服務(wù)的架構(gòu),繼承了來(lái)自對(duì)象(指的是“面向?qū)ο蟮募軜?gòu)”)和構(gòu)件設(shè)計(jì)的各種原則,例如,封裝和自我包含等。那些保證服務(wù)的靈活性、松散耦合和復(fù)用能力的設(shè)計(jì)原則,對(duì) SOA 架構(gòu)來(lái)說(shuō)同樣是非常重要的。關(guān)于服務(wù)的基本特性如下: 標(biāo)準(zhǔn)接口服務(wù)提供方以統(tǒng)一的方式即標(biāo)準(zhǔn)的接口向消費(fèi)者提供服務(wù)信息,比如車(chē)載服務(wù)軟件一般會(huì)使用SOME/IP協(xié)議作為實(shí)現(xiàn)基礎(chǔ)。自主和模塊化服務(wù)封裝了那些在業(yè)務(wù)上穩(wěn)定、重復(fù)出現(xiàn)的活動(dòng)和構(gòu)件,實(shí)現(xiàn)服務(wù)的功能實(shí)體是完全獨(dú)立自主的,獨(dú)立進(jìn)行部署、版本控制、自我管理和恢復(fù)。松耦合服務(wù)請(qǐng)求者可見(jiàn)的是服務(wù)的接口,其位置、實(shí)現(xiàn)技術(shù)、當(dāng)前狀態(tài)和私有數(shù)據(jù)等,對(duì)服務(wù)消費(fèi)者而言是不可見(jiàn)的。 互操作性、兼容和策略申明為了確保服務(wù)規(guī)約的全面和明確,策略成為一個(gè)越來(lái)越重要的方面。例如,一個(gè)服務(wù)對(duì)安全性方面的要求;也可以是與業(yè)務(wù)有關(guān)的語(yǔ)義方面的內(nèi)容,例如,需要滿足的費(fèi)用或者服務(wù)級(jí)別方面的要求,這些策略對(duì)于服務(wù)在交互時(shí)是非常重要的。而服務(wù)的最小顆粒度則是上文提到的不可拆分的原子服務(wù)。那原子服務(wù)的顆粒度是不是越小越好呢?答案肯定不是的,如何定義合理的原子服務(wù),如何把握顆粒度的大小,在服務(wù)架構(gòu)設(shè)計(jì)中至關(guān)重要。舉個(gè)更形象的例子,原子服務(wù)就類(lèi)似于電路設(shè)計(jì)中的電容和電阻,他們有著統(tǒng)一的標(biāo)準(zhǔn),看似一樣卻又有著不同的封裝,在不同的ECU控制器中組合成不同的應(yīng)用電路,適當(dāng)調(diào)整又能實(shí)現(xiàn)非常多的新的功能。SOA架構(gòu)的實(shí)現(xiàn)基礎(chǔ)有了理論基礎(chǔ),下一步就是看實(shí)現(xiàn)服務(wù)架構(gòu)的必要條件。很多同學(xué)其實(shí)會(huì)問(wèn),為什么服務(wù)總是和以太網(wǎng),DDS或SOME/IP綁定的呢?CAN網(wǎng)絡(luò)上是否可以實(shí)現(xiàn)完整的SOA架構(gòu)?首先,以SOME/IP舉例,因?yàn)镾OME/IP的完整名稱(chēng)其實(shí)能回答上面的大多數(shù)問(wèn)題,SOME/IP = Scalable service-Oriented MiddlewarE over IP。即“運(yùn)行于IP之上的可伸縮的面向服務(wù)的中間件”。可見(jiàn),并不是SOA必須和SOME/IP綁定,而是SOME/IP天生就是為了SOA架構(gòu)而生。SOME/IP的精華在于“Middleware中間件”,這是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件可借助Middleware在不同的技術(shù)之間共享資源。分布式應(yīng)用軟件,在這里指的就是“服務(wù)”;不同的技術(shù)之間,在這里指的就是不同的平臺(tái)或操作系統(tǒng),比如Linux系統(tǒng)或AUTOSAR OS OSEK等。而Scalable Middleware,顧名思義,則是“可伸縮中間件”,指的是該中間件能夠適配于不同的平臺(tái)及操作系統(tǒng),其支撐的平臺(tái)可大可小。簡(jiǎn)單來(lái)說(shuō),SOA是軟件架構(gòu)的一種設(shè)計(jì)理念;SOME/IP是一種將軟件接口進(jìn)行打包的打包方式,是一種中間件。而汽車(chē)行業(yè)通常所指的"以太網(wǎng)"是泛化之后的概念,涵蓋了基于以太網(wǎng)技術(shù)所實(shí)現(xiàn)的各種相關(guān)技術(shù)手段,包括TCP/IP協(xié)議、DoIP協(xié)議、SOME/IP協(xié)議等。當(dāng)然若通過(guò)其他非以太網(wǎng)的通信方式來(lái)實(shí)現(xiàn)SOA也是可行的,但通常大家不那么用。比如基于CAN總線的架構(gòu),由于其基礎(chǔ)的架構(gòu)和通信協(xié)議棧里不存在Middleware中間層的概念,所以要實(shí)現(xiàn)SOA的代價(jià)是非常巨大的。SOA應(yīng)用的優(yōu)勢(shì)正如大家所知,早期的車(chē)內(nèi)嵌入式軟件沒(méi)有統(tǒng)一標(biāo)準(zhǔn),基礎(chǔ)軟件和應(yīng)用軟件強(qiáng)耦合,不具可移植性;AUTOSAR Classic 的應(yīng)用,對(duì)嵌入式基礎(chǔ)軟件的接口進(jìn)行標(biāo)準(zhǔn)化,讓?xiě)?yīng)用開(kāi)發(fā)者基于統(tǒng)一的基礎(chǔ)軟件接口進(jìn)行應(yīng)用開(kāi)發(fā)。目前采用SOA軟件服務(wù)架構(gòu)的應(yīng)用打通了車(chē)內(nèi)的電子電氣架構(gòu)的壁壘,進(jìn)一步對(duì)嵌入式應(yīng)用軟件的接口(即服務(wù)接口)進(jìn)行了標(biāo)準(zhǔn)化,讓APP開(kāi)發(fā)者基于統(tǒng)一基礎(chǔ)服務(wù)接口進(jìn)行應(yīng)用的迭代開(kāi)發(fā),隱藏了不同車(chē)型配置下應(yīng)用軟件的差異,真正做到了整車(chē)級(jí)軟件接口的"標(biāo)準(zhǔn)"和"開(kāi)放"。