fbpx

使用 C 語言從頭建立 Linux 遠端程序呼叫(RPC)

Linux 系統程式設計——基於網路 Socket 的伺服器客戶端 RPC 模型,資料序列化( Data Serialization )——不需要第三方程式庫

報名參加課程

從這 6.5 小時的課程,你會學到

  • 可以從 #include <stdio.h> 開始建立遠端程序呼叫
  • 理解資料序列化(Data Serialization)和反序列化(DeSerialization)的概念
  • 理解應用程式狀態同步的概念
  • 理解應用程式狀態檢查點的概念
  • 將瞭解如何將資料物件以位元串流(stream of bytes )操作
  • 將能夠理解如何遞迴地操作物件
  • 學到的概念將能夠延伸和應用在其它程式語言中
  • 能夠理解異質( heterogeneous ) 機器之間的資料傳輸事先要求

要求

  • C 程式設計語言——至少是中級水平 ( 想入門 C 語言可參考 C 語言程式設計初學者課程 – 精通 C 語言)
  • 最小程度的 Socket 程式設計來發送和接收資料是最好的,但不是強制性的
  • Linux 作業系統,任何發佈版本皆可,- 可使用原生或作為虛擬機器執行的 Linux
  • 最重要的工具——熱情和對知識的熱愛

課程說明

關於本課程是關於開發自己的遠端程序呼叫。 本課程的本質和真正的優勢在於不使用任何第三方程式庫。 我在所有其它的課程中都遵循這個原則。 無論你從我的課程中學到什麼,你都是從絕對的底層學到的。 本課程不違反原則,並且教你如何從頭開始一步一步地構建遠端程序呼叫——不需要框架、工具、支援程式庫或任何東西——只有純粹的 C 語言。

本課程實際上是未來許多系統軟體專案的基礎。 其中少部分是更底層並且是這門課程的一部分。

遠端程序呼叫(Remote Procedure Calls,RPC)是一種呼叫函式 / 程序的技術,該函式 / 程序實際駐留在網路中其它地方執行的不同實體機器上——因此被稱為遠端程序。 在本課程中,您將學習幕後的工作概念。 相同的概念可以延伸到實現除 RPC 之外的其它系統程式設計概念,例如-資料同步和檢查指向應用程式狀態。 本課程承諾在其初始版本中提供關於開發 RPCs 的完整內容。

資料同步狀態( Data Synchronization )-這是一個同步完整的應用程式堆積( Heap )狀態到遠端機器的程序。 遠端電腦將構建鏡像堆積( Heap ) 狀態。 如果第一台機器出現故障,則遠端機器可以接管,因為它擁有恢復故障機器操作所需的所有狀態。

檢查指向(Check pointing)——這是一個將應用程式記憶體狀態持久地儲存到磁碟 / 檔案的流程,這樣,應用程式可以在任何時候重新啟動 / 恢復,建立完全相同的記憶體狀態,從先前儲存的記憶體快照到輔助儲存。

檢查指向(Check pointing)將在本課程的後續版本中釋出。

誰應該上這門課?

初學者請自行選修這門課程。 您應該熟悉 C 語言指標以及 C 語言物件在記憶體中的佈局方式。 我希望你在 C 語言程式設計方面至少達到初級水平。 這意味著,只有非常熱情的學生,在他們的大學中想得到一個優勢以超越最聰明的學生應該註冊這門課程。 一般學生請原諒。 求職者和專業開發人員必須註冊。 您從本課程中學到的概念是與程式語言無關的,學習了它們將使您能夠在您選擇的任何程式語言中實現 RPC/Data-Synch/Checkpointing。 如果明天您碰巧使用 Java 程式語言工作,您將瞭解 RPCs 在最低階的實現中是如何運作的。

先決條件

C 語言和擅長指標是本課程的前提條件。 最小的 Socket 程式設計背景是可取的,但不是強制的。 我們從絕對的基礎開始設計這門課程,在真正全力以赴地學習這門課程之前,首先要為學習者打好基礎。 如果你不擅長 C 語言中的指標和記憶體操作,請在滿足先決條件後註冊。

還有,請不要坐著看我的程式碼。 編寫你自己的程式碼,即使它和我的一樣!

本課程使用的程式設計語言:

我們有充分的理由選擇 C 語言作為本課程的語言:

RPC 是一種技術,如果知道這些概念就可以在您選擇的任何程式語言中實現。 使用 C 語言學習 RPC 可以幫助您理解幕後發生的事情。 C 語言確實暴露了系統實際運作方式的底層細節。 在系統程式設計中,C 是唯一使用的語言,在系統程式設計中,甚至還沒有一種未來語言可以替代這種語言。

不需要第三方程式庫

無論你實現什麼邏輯,你都需要從頭開始實現它,從 #include <stdio.h> 開始。 本課程不建議使用任何第三方程式庫來完成這些工作。 使用外部程式庫完全違背了課程的目的。 但是,對於常用的資料結構,如連結串列 ( linked lists )/ 樹 ( Trees )/ 佇列( Queues )等,建議使用第三方程式庫,這樣可以節省大量實現這些資料結構的時間。

相關課程

RPC 是在網路中執行在不同機器上的兩個程式之間進行程式間通訊的一種方式。 您可能還想檢視我的另一個討論過 Linux IPC 技術的課程

警告: 本課程有自動系統生成的字幕,可能並不完美。 請根據您的方便取消或使用字幕。

課程

本課程分為兩大部分-

  1. 詳細理解序列化和反序列化的概念
  2. 使用序列化和反序列化實際解決 / 構建系統。 這包括:
    1. 建立遠端程序呼叫
    2. 狀態同步
    3. 檢查指向( Check pointing )應用程式狀態

第2、3、4、5、6節致力於在充分掌握序列化和反序列化概念的基礎上建立基礎。

第7、8、9節致力於建立和開發上述系統

  • 第一部分-開始
    • 整個課程目錄
    • 初學者的 Linux 安裝
  • 第二部分-什麼是序列化以及我們為什麼需要它?
  • 第三部分-資料序列化和反序列化的概念
    • 簡單 C 語言結構的序列化和反序列化
    • 序列化和反序列化巢狀 C 語言結構
    • 序列化和反序列化指標 C 語言結構
  • 第四部分-資料流程-資料結構
    • 設計與實現
  • 第五部分-資料序列化和反序列化在 C 語言中的實現
    • 簡單 C 結構的序列化和反序列化
    • 序列化和反序列化巢狀 C 結構
    • Serializing and DeSerializing Pointer C Structures
    • 指標 c 結構的序列化和反序列化
    • 一個範例
  • 第六部分-序列化通用資料結構
    • 使用函式指標到序列化 void *
  • 第七部分——從頭實現遠端程序呼叫
    • 理解 RPC 概念和設計
    • 開發客戶端 Stubs—— RPC 參數的編排(Marshalling)
    • 開發伺服器端 Stubs—— RPC 參數的解構(UnMarshalling)
    • 開發伺服器端 Stubs — RPC 返回型別的編排( Marshalling )
    • 客戶端 Stubs 的開發 — RPC 返回型別的解構(UnMarshalling)
    • RPC Identity 的概念
    • RPC 使用案例
  • 第八部分-狀態同步
  • 第九部分-檢查指向(即將推出)

* * 變更紀錄 * *

2018年9月30日-增加關於狀態同步的第8部分

2018年9月29日-增加關於通用資料結構序列化的第6部分

目標受眾

  • 想要從人群中脫穎而出的學生
  • 想要提升自己職涯的專業人士或者要換工作
  • 喜歡程式設計和建立實際系統軟體的人

講師簡介

Abhishek Sagar 在 Juniper 擔任網路通訊協定開發者 ( 更多講師主講課程介紹 )

你好,我是孟買理工學院的畢業生,目前在網路跨國公司從事網路通訊協定開發。

我有6年以上的業界經驗,從事網路程式設計和開發已超過8年的經驗。

我曾經在的跨國網路公司- Brocade 通訊公司工作,現在在 Juniper Networks 工作。

我精通 Linux 開發環境,我藉此機會通過 Udemy 在 Linux 網路開發領域培訓世界各地的人。 我熱愛並鼓勵知識共享。

Shiwani Nigam 數位行銷主管

嗨,我是市場行銷學博士 Shivani Nigam。 我擅長研究消費者在網上購買產品時的行為。 我負責在這個平台上銷售線上內容(Udemy 課程)。

我還確保課程由技術指導員以完美的音訊 / 視訊質量授課,並確保學生的疑問和問題並由技術指導員優先處理。

英文字幕:有

  • 想要了解如何將英文字幕自動翻譯成中文? 請參考這篇 How-To

報名參加課程

Sponsored by Udemy

也許你會有興趣

 歡迎使用 e-mail 訂閱 Soft & Share 

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: