ACE的起跑點

2021-04-26 23:17:55 字數 1224 閱讀 6159

初學網路通訊者在掌握了幾個連線、偵聽、收發資料的

sdk方法後一定會大呼:這很簡單嘛,有什麼難的。是的,沒錯,假如我們的應用是僅限於區域網內兩台機器之間收發幾十個字元的需求,那的確很簡單。但這樣的應用哪個會有需要呢?那就擴充套件一下想像力,有很多東西我們天天在使用,卻很少去思考它的細節。 以

qq為例,這是乙個典型的網路客戶端程式,它最早的出現是乙個簡單的字串收發終端,後來加入了很多增值功能,五花八門各類應用都有。它在網路通訊領域內應該算是乙個入門級的應用了,如果每個

qq上只有乙個使用者,那麼誰都可以做好。但是,使用者數乙個乙個地增多之後,是否對每個使用者都要進行管理,這時候管理的策略是什麼?因為多使用者處理要求的是實時性,你不能讓使用者順序的響應,而是要根據訊息到達的先後順序進行提示。假如你做的

qq一次只能接收乙個使用者的訊息,而其他使用者的訊息只能迴圈接收時,那將出現乙個很怪異的場景,就是使用者的訊息將會從上往下順序出現,而不是按照到達的時間先後。這就要求客戶端對同步多路事件進行處理,到了這裡就要考慮採用何種機制來分派訊息。

windows

平台與linux

平台都可以使用

select

阻塞式呼叫,再下一步呢?你是想讓所有使用者的訊息都通過乙個套介面傳進來,還是為每個使用者分配乙個套介面?直觀的說,好吧,當然是為每個使用者建立乙個連線,但使用者增長沒有限制,極端的某一天你線上所有使用者都上線了那將是乙個多麼可怕的情景,你會抱怨說怎麼系統變這麼慢啦,訊息發不出去也收不進來。你也許明白了,網路通訊的複雜之處在於不確定性與資料處理的實時性。

ace就是這樣乙個終極寶物,它替你扛下了你最不願面對也是最複雜的部分,你所要做的僅僅是掌握它的規則,建立自己專門的應用就行了。當然,它也像一匹劣馬,沒有高超的技術就像騎上它只會摔的鼻青臉腫。這些技術就包括基本的網路通訊

api使用、

tcp/ip

原理、系統呼叫、

c++模板知識、資料結構、設計模式等。其中最重要的就是設計模式知識了,其他的都是基礎。沒有充分的了解典型的

23種模式,根本不會知道

ace到底在幹什麼。因為你寫出來的應用**只有區區數十行,但在其下卻奔騰著千軍萬馬。試想,乙個下錯了命令的指揮官,看著手下全軍覆沒該是何等痛心,最要命的是還不知道錯在哪。當然,進行網路通訊開發,沒有理由強調你只會

windows

或只懂linux

,那是行外話,但要進行跨平台程式設計常會被不同的系統呼叫所困擾,這是事實。

ace又替你解決了這一切煩惱,同樣的**,不同的平台,編譯之後同樣的執行效果,多麼美好的事情。

輸在起跑點上?

同樣引自侯老師的主頁 輸在起跑點上?摘自 無責任書評3 1996 11 涼風起天末 一文 我發現,在資訊系裡面特別容易出現起跑點極端懸殊的例子。有的同學早在高中,或國中,或甚至小學就開始接觸電腦,可能在進入大學時就已經會寫 windows 程式了,或者對 c c 已經很熟了,或者常常上網,甚至架設過...

ACE筆記(一) 選擇ACE的理由

最早看到ace是2年前 2003年 的事情,當時是下了一本 c 網路程式設計 來看,但是因為當時對網路程式設計的理解不深,草草翻了幾頁,覺得比較晦澀,就沒有再看下去。一直到了2005年11月,因為需要編寫乙個效能 結構良好的伺服器,於是就購買了 c 網路程式設計 1 2來看,到了現在,這個伺服器基本...

ACE學習一 ACE的體系結構

最近在學習ace,把一些筆記整理一下。ace 自適配通訊環境 adaptive communication environment 是物件導向的框架和工具包,它為通訊軟體實現了核心的併發和分布式模式。ace 體系結構 如圖1 1 所示,ace 具有分層的體系結構。在ace 框架中有三個基本層次 1....