在操作系統(tǒng)還沒有虛擬內(nèi)存空間的年代驯杜,每個(gè)進(jìn)程都是訪問物理內(nèi)存受啥,進(jìn)程間通信最為簡單,約定好內(nèi)存地址就行了鸽心,比如說進(jìn)程A滚局,從0x23開始,連續(xù)放100個(gè)字節(jié)的數(shù)據(jù)顽频,進(jìn)程B從物理內(nèi)存中將這份數(shù)據(jù)拷貝走即可藤肢。
不過這種操作系統(tǒng)現(xiàn)在我們用不著了,現(xiàn)在每個(gè)進(jìn)程的內(nèi)存空間都是虛擬的糯景,互不相干的嘁圈。接下來最好理解的就是通過硬盤文件來進(jìn)行通信。進(jìn)程A在C盤根目錄產(chǎn)生一個(gè)a.txt文件蟀淮,進(jìn)程B將文件打開最住,將內(nèi)容讀取出來即可。
其實(shí)怠惶,也不是非要一個(gè)硬盤中文件涨缚,也可以是一個(gè)操作系統(tǒng)的文件句柄,傳遞的內(nèi)容不必真的放在硬盤中策治,比如說windows的內(nèi)存共享機(jī)制脓魏,unix的通道機(jī)制,不過這些機(jī)制現(xiàn)在的普通碼農(nóng)可能早就不關(guān)心了通惫。
采用文件來傳遞信息茂翔,在很多嚴(yán)肅的系統(tǒng)間,還是唯一能被雙方接收的方案履腋。A公司和B公司合作檩电,A公司為B公司提供重要數(shù)據(jù)。最靠譜的做法就是A公司啟用一個(gè)FTP服務(wù)器府树,將數(shù)據(jù)生成文件俐末,將FTP訪問權(quán)限開發(fā)給B公司。B公司定時(shí)將文件取走奄侠。別看這樣老土卓箫,但是仔細(xì)想想,這是最容易責(zé)任倒查的方式垄潮,某種程度上烹卒,白紙黑字無可抵賴闷盔,誰對誰錯(cuò)一目了然。
接下來要講的就是通過TCP來跨進(jìn)程通信旅急,不管什么高大上的Web Service逢勾,本質(zhì)上就是通過TCP來通信。兩個(gè)進(jìn)程間建立網(wǎng)絡(luò)連接就可以互相發(fā)信息藐吮,至于信息格式溺拱,如何解析如何組包,這都是細(xì)節(jié)層面的東西谣辞,本文不想去細(xì)說迫摔。
到了現(xiàn)在,各種成熟的跨進(jìn)程通信的方案泥从,基本上都是走網(wǎng)絡(luò)連接了句占。各種方案基本功能都沒有問題,難就難在一些高級特性能否支持躯嫉,比如說能不能將通信內(nèi)容持久化(保留一段時(shí)間纱烘,方便定位故障和責(zé)任倒查),對通信內(nèi)容進(jìn)行可以方便的查詢和過濾祈餐,通信的雙方支持透明的集群和冗余等等擂啥。