构建远程过程调用 (RPC) – 用 C 从头开始
系统编程项目 – 通过网络套接字的服务器客户端 RPC 模型,数据序列化 – Windows/Linux
讲师:Abhishek CSEPracticals
口袋资源独家Udemy付费课程,独家中英文字幕,配套资料齐全!
用不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。
你将学到什么
- 应能够构建从 #include <stdio.h> 开始的远程过程调用
- 将了解数据序列化和反序列化的概念
- 了解应用程序状态同步的概念
- 了解应用程序状态检查点的概念
- 将了解如何将数据对象作为字节流进行操作
- 将能够理解如何递归地操作对象
- 将能够扩展和应用在其他编程语言中学到的概念
- 将了解异构机器之间数据传输所需的先决条件
要求
- C 编程语言 – 至少中级水平
- 发送和接收数据的最小套接字编程是可取的,但不是强制性的
- Linux 操作系统,任何风格,- 作为本机或虚拟机运行
- 最重要的工具 – 对知识的热情和热爱
描述
关于本课程是关于开发您自己的远程过程调用 – 我将在本课程中使用 Linux 操作系统,但是如果您习惯的话,也可以使用 Windows 操作系统。本课程的本质和真正的优势是不使用任何第三方库。我在所有其他课程中都遵循这一原则。无论您通过我的课程学到什么,您都是从绝对的基础水平学习的。本课程不违反原则,教你如何从绝对的零开始一步步构建远程过程调用 – 没有框架、工具、支持库或任何东西 – 只是纯 C。
本课程实际上为许多未来的系统软件项目奠定了基础。下面列出了其中一些内容,并且是本课程的一部分。
远程过程调用 (RPC)是一种调用实际上驻留在网络中其他地方运行的不同物理机器上的函数/过程的技术 – 因此称为远程过程。在本课程中,您将学习幕后工作的概念。除了 RPC 之外,还可以扩展相同的概念来实现其他系统编程概念,例如数据同步和应用程序状态检查点。 本课程承诺在其初始版本中提供有关开发 RPC 的完整内容。
数据同步– 这是将完整的应用程序堆状态同步到远程计算机的过程。远程机器将构建镜像堆状态。如果第一台机器发生故障,远程机器可以接管,因为它具有恢复故障机器操作所需的所有状态。
检查点 –这是将应用程序内存状态持久保存到磁盘/文件的过程,以便应用程序可以随时重新启动/恢复,从先前存储到辅助存储的内存快照构建完全相同的内存状态。
检查点将在本课程的后续版本中提供。
谁应该学习这门课程?
初学者请自行决定参加本课程。您应该熟悉 C 指针以及 C 对象在内存中的布局方式。我希望您在 C 编程方面至少达到初级水平。这意味着,只有非常热情、想要超越大学里最聪明的学生的学生才应该报名。一般学生请见谅。求职者和专业开发人员必须注册。您从本课程中学到的概念与语言无关,学习它们将使您能够以您选择的任何编程语言实现RPC/数据同步/检查点。如果明天您碰巧使用 Java 工作,您将了解 RPC 在最低实现级别上是如何工作的。
先决条件
C 语言和擅长指针是本课程的先决条件。具有最低限度的套接字编程背景是可取的,但不是强制性的。我们从绝对基础开始设计这门课程,在真正全力推进课程之前,首先为学习者打下基础。如果您不擅长 C 语言中的指针和内存操作,请仅在满足先决条件后注册。
另外,请不要坐下来看我的代码。编写你自己的代码,即使它与我的相同!
本课程中使用的编程语言:
我们有充分的理由选择 C 作为本课程的语言:
RPC 是一种技术,如果了解其概念,就可以用您选择的任何编程语言来实现。使用 C 学习 RPC 可以帮助您了解幕后发生的事情。 C 语言确实揭示了系统实际工作原理的底层细节。在系统编程中,C 是唯一使用的语言,并且在系统编程方面甚至没有这种语言的远程替代语言。
没有第三方库
无论您实现什么逻辑,您都需要从头开始实现它,从 #include <stdio.h> 开始。本课程不建议借助任何第三方图书馆来完成工作。使用外部库完全违背了课程的目的。但是,建议对常用数据结构(例如链表/树/队列等)使用第三方库,这样可以节省大量实现这些数据结构的时间。
相关课程
RPC 是在网络中不同计算机上运行的两个进程之间进行进程间通信的一种方式。您可能还想查看我的另一门课程,其中讨论了Linux IPC 技术。
警告:本课程具有系统自动生成的字幕,可能并不完美。请根据您的方便禁用字幕。
课程
本课程分为两大部分——
1.详细理解序列化和反序列化的概念
2. 使用序列化和反序列化来实际解决/构建系统。这包括 :
- 构建远程过程调用
- 状态同步
- 检查指向应用程序状态
第2、3、4、5、6节致力于为彻底掌握序列化和反序列化的概念奠定基础。
第 7、8、9 节致力于构建和开发上述系统
- 第 1 部分 – 开始
- 整个课程的目录
- 适合初学者的 Linux 安装
- 第 2 部分 – 什么是序列化以及为什么我们需要它?
- 第 3 节 – 数据序列化和反序列化的概念
- 序列化和反序列化简单的 C 结构
- 序列化和反序列化嵌套 C 结构
- 序列化和反序列化指针 C 结构
- 第 4 节 – STREAMS – 数据结构
- 设计与实现
- 第 5 节 – C 中的数据序列化和反序列化实现
- 序列化和反序列化简单的 C 结构
- 序列化和反序列化嵌套 C 结构
- 序列化和反序列化指针 C 结构
- 一个例子
- 第 6 节 – 序列化通用数据结构
- 使用函数指针序列化 void *
- 第 7 节 – 从头开始实现远程过程调用
- 了解 RPC 概念和设计
- 开发客户端存根 – RPC 参数的编组
- 开发服务器存根 – RPC 参数的解组
- 开发服务器存根 – RPC 返回类型的编组
- 开发客户端存根 – RPC 返回类型的解组
- RPC身份的概念
- RPC 用例
- 第 8 节 – 状态同步
- 第 9 节 – 检查点(即将推出)
**审计审判**
2018 年 9 月 30 日– 添加了关于状态同步的第 8 节
2018 年 9 月 29 日– 添加了有关序列化通用数据结构的第 6 节
本课程适合谁:
- 想要在人群中脱颖而出的学生
- 希望提升职业生涯或换工作的专业人士
- 那些热爱编码和构建实际系统软件的人