|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/linuxrpc/
课程评论:没有评论
**课程名称:** 从零开始用C语言构建远程过程调用(RPC) **课程概述:** 本课程专注于使用纯C语言从零开始开发自己的远程过程调用(RPC)系统。课程以Linux操作系统为主要环境,但也兼容Windows。其核心亮点在于**不使用任何第三方库**,所有功能都从底层实现,让学习者深入理解RPC的工作原理。 **课程内容:** 本课程旨在传授RPC的核心概念和底层实现,包括: * **序列化与反序列化:** 深入理解如何将C语言数据结构(简单、嵌套、指针)转换为字节流(序列化)以及如何从字节流恢复数据结构(反序列化)。 * **STREAMS数据结构:** 设计和实现用于数据传输和处理的数据结构。 * **RPC的构建:** 从概念、客户端存根(参数封送)到服务器存根(参数解封、返回值封送/解封),一步步实现完整的RPC系统。 * **状态同步:** 学习如何同步应用程序的堆状态到远程机器,实现镜像堆状态,以便在主机器故障时接管。 * **检查点(即将推出):** 学习如何将应用程序的内存状态持久化到磁盘/文件,以便随时恢复应用程序。 **目标学员:** * **进阶C语言学习者:** 熟练掌握C语言指针和内存布局,对系统编程有强烈兴趣的学习者。 * **求职者和专业开发者:** 希望深入理解RPC、数据同步和检查点等系统编程概念,并能在任何编程语言中应用这些知识的开发者。 **先修要求:** * 扎实的C语言基础,尤其是指针和内存操作。 * 具备基础的Socket编程背景(非强制,但有帮助)。 * **强烈建议:** 亲自动手编写代码,而非仅仅观看。 **课程特色:** * **纯C语言实现:** 深入理解系统底层工作原理。 * **无第三方库:** 确保学习的彻底性和独立性。 * **语言无关性:** 学习的底层概念可应用于其他编程语言。 * **系统软件基础:** 为未来更复杂的系统软件项目打下坚实基础。 **潜在应用:** RPC是进程间通信(IPC)的一种形式,本课程教授的原理也可用于数据同步和应用程序状态的检查点。
About This course is about Developing your own Remote procedure calls - I will use Linux OS for this course, however you can use Windows OS if you are used to it. The essence and real strength of this course is No use of any third party libraries. I follow this principle in all my other courses. Whatever you learn through my courses, you learn from absolute ground level. This course does not violate the principle and teaches you how to build Remote Procedure Calls step by step from absolute scratch - No framework, tools, supporting libraries or anything - just pure C. This course actually lays the foundation of many future System Software Projects. Few of which are below and is a part of this course curriculum.Remote Procedure Calls (RPC) is a technique to invoke the function/procedure which actually resides on different physical machine running somewhere else in the network - hence the name remote procedures. In this course, you will learn the concepts working behind the scenes. The same concepts can be extended to implement other system programming concepts, besides RPC, such as - Data Synchronization and Check-pointing the application state. This course promise to deliver the complete content on developing RPCs in its initial release.Data Synchronization - It is a process to synchronize the complete application Heap state to remote machine. The remote machine will build the mirror heap state. In the event, the first machine fails, the remote machine can take over as it has all the state required to resume the operation of failed machine.Check pointing - It is a process of saving the application Memory state to disk/file persistently, so that, the application can be restarted/resumed any time building the exact same Memory state from Memory snapshot stored earlier to secondary storage.Check pointing shall be delivered in subsequent releases of this course.Who should do this course ?Beginners Please take this course at your discretion. You should be good with C pointers and how C objects are laid out in memory. I expect you to be at-least above beginner level in C programming. This means, that only very enthusiastic students who wants to get an edge over the smartest student in their college should enroll. Average students Pls excuse. Job seekers and professional developers Must enroll. The concepts you learn from this course is language agnostic and having learned them will enable you to implement the RPC/Data-Synch/Checkpointing in any programming language of your choice. If tomorrow you happen to work in Java, you shall be knowing how RPCs work at the lowest level of implementation. Pre-requisiteC and being good at pointers is a pre-requiste of this course. A minimal socket programming back-ground is desirable but not mandatory. We designed this course starting from absolute basics and building the foundation of learners first before actually pulling the course at full throttle. If you are not good with pointers and memory manipulation in C, Pls enroll only after meeting the pre-requisite criteria.Also, Please just do not sit and watch my codes. Write your own codes, even if it is same as mine!Programming Language used In this course:We have a strong reasons to choose C as a language for this course:RPC is a technique which if knowing the concepts can be implemented in any programming language of your choice. Learning RPC using C helps you understand what is going on behind the scenes. C language really exposes the low level details about how system actually works. In System programming, C is the only language to be used and there is not even a remote substitute of this language when it comes to System programming.No Third Party librariesWhatever logic you implement, you need to implement it from scratch, beginning from #include. This course do not suggest taking help of any third party library to get the jobs done. Use of external libraries completely defeats the purpose of the course. However, it is recommended to use third party libraries for commonly used data structures such as linked lists/Trees/Queues etc which saves a lot of time implementing these data structures.Related CoursesRPC is one way of carrying out Inter Process Communication between two processes running on separate machines in the network. You may also want to check my another course in which Linux IPC techniques has been discussed.Warning: This course has auto system-generated subtitles which may not be perfect. Please disable subtitles as per your convenience.CurriculumThis Course is divided into two major parts - 1. Understanding the Concept of Serialization and DeSerialization in great detail2. Using the Serialization and DeSerialization to actually solve/build system. This includes:Building Remote Procedure CallsState SynchronizationCheck pointing the application stateSection 2, 3, 4, 5, 6 are dedicated to build up the base on thoroughly mastering the concept of Serialization and DeSerialization.Section 7, 8, 9 are dedicated to build and develop above stated systemsSection 1 - Get StartedTable Of Contents of the Entire CourseLinux Installation for BeginnersSection 2 - What is Serialization and Why we need it ?Section 3 - Concept of Data Serialization and DeSerializationSerializing and DeSerializing Simple C StructuresSerializing and DeSerializing Nested C StructuresSerializing and DeSerializing Pointer C StructuresSection 4 - STREAMS - A Data StructureDesign and ImplementationSection 5 - Data Serialization and DeSerialization Implementation in CSerializing and DeSerializing Simple C StructuresSerializing and DeSerializing Nested C StructuresSerializing and DeSerializing Pointer C StructuresAn ExampleSection 6 - Serializing Generic Data structuresUse Function Pointers to Serialize void *Section 7 - Implementing Remote procedure calls from ScratchUnderstanding RPC Concept and Design Developing Client Stubs - Marshalling of RPC ArgumentsDeveloping Server Stubs - UnMarshalling of RPC ArgumentsDeveloping Server Stubs - Marshalling of RPC Return TypeDeveloping Client Stubs - UnMarshalling of RPC Return TypeConcept of RPC IdentityRPC Use CasesSection 8 - State SynchronizationSection 9 - Checkpointing (Coming Soon)**Audit Trial **30 Sept 2018 - Added Section 8 on State Synchronization29 Sept 2018 - Added Section 6 on Serializing Generic Data structures