What you would learn in Build Remote Procedure Calls (RPC) - from Scratch in C course?
DescriptionThis course is about developing Your Remote procedure calls. I will be using Linux OS for this Course, but you can also utilize Windows OS if you are familiar with it. This class's core and the real benefit is no recourse to third-party libraries. I apply this rule in all of my courses. You will learn everything you learn from the courses I teach at the absolute level. This Course is not in violation of the principles and shows you how to construct Remote Procedure Calls step-by- process beginning from completely Scratch. There is no Framework, software, libraries, or anything else - simply the pure C.
This course provides the foundations for future System Software Projects. A few of them are listed below and are included in the course syllabus.
Remote Procedure Calls (RPC) is a way to call the procedure or function on a different physical machine within the network. This is why they are given the term "remote procedures. Through this class, you'll understand the workings behind the background. The same ideas can be applied to other system programming concepts, apart from RPC like Data Synchronization and Check-pointing an application's state. This course will provide all the information needed to develop RPCs from the beginning of its version.
Data Synchronization It is a procedure to synchronize the whole heap state of the application to a remote machine. The remote machine builds the state of the mirror heap. If the primary machine malfunctions, the second machine will take over since it is equipped with the data needed to restart the functioning of the machine that failed.
Checkpointing is a method that saves the application's Memory state to file/disk permanently so that the application can be restarted or restarted at any time, constructing the same Memory state using Memory snapshots previously-stored to secondary storage.
Who should be taking this Course?
Beginning Students, Please attend the Course according to your discretion. You should be proficient with C pointers and how C objects are organized in memory. I would expect you to be at least above the basic level of C programming. This means only highly motivated and would like to gain an advantage over the best students in their college should apply. Average students, Pls excuse me. Professional developers and job seekers must take the Course. The concepts you learn from this Course are language agnostic, and having learned them will enable you to implement the RPC/Data-Synch/Checkpointing in any programming language of your choice. If you decide to be working in Java, you will know the way RPCs function at the lowest stage of implementation.
C and having a good grasp of pointers is an essential requirement of this Course. A basic understanding of socket programming is preferred but not required. The Course is designed with the basics and building the foundations of learners first before launching the Course to full speed. If you're not comfortable with pointers or memory manipulation with C, please enroll only when you meet the prerequisites.
Also, please avoid watching my codes. Create your codes even if they are similar to mine!
Programming Language utilized in this Course:
There are many arguments to pick C as a language in the Course.
RPC is a method that, once you understand the principles, can be used in any programming language you prefer. Understanding RPC by using C can help you understand what's happening behind the workings behind the scenes. C language is a great way to discover lower-level details of its functions. For System Programming, C is by far the essential programming language used, and there isn't an alternative to this language in the realm of System programming.
No third party libraries
Whatever logic you choose to implement the logic you implement, you must start entirely from scratch, starting with"#include."This Course doesn't recommend using any third-party library to complete the job. Utilizing external libraries in a way is not in the program's spirit. However, it is suggested to utilize third-party libraries to create commonly used data structures, such as linked lists, trees/queues, etc. This saves much time when creating this type of data structure.
The Course is split into two main parts :
1. Understanding the concept of Serialization and DeSerialization in detail
2. Utilizing the de-serialization to build a system. This can include :
Construction Remote Procedures Calls
Make sure you are pointing to the state of the application
Section 2 3 4 5 6 will build the foundation for learning the concepts of Serialization and DeSerialization.
Section 7 8, 9 9, 9, are devoted to building and improving the abovementioned systems.
Section 1 - Get Started
Table Of Contents for the Entire Course
Linux Installation and Setup for Beginners
Section 2 - What is Serialization? Why do we need it?
Section 3 The Concept of the concept of Serialization as well as DeSerialization
DeSerializing and Serializing Simple C Structures
Serializing and Deserializing Nested C Structures
Serializing and deSerializing Pointer C Structures
Section 4 - STREAMS – A Data Structure
Design and implementation
Section 5 Data Serialization and DeSerialization implementation in C
Serializing and deSerializing simple C Structures
Serializing and deSerializing Nested c Structures
Serializing and deSerializing Pointer C Structures
Section 6 the serialization of generic data structures
Make use of Function Pointers to serialize the void *
7. Implementing remote Procedure calls made from Scratch
Knowing RPC Concept and Design
Designing Client Stubs - Re-enforcement of RPC Arguments
The development of server Stubs to be used in the development of Server Stubs. UnMarshalling of RPC Arguments
Development of Server Stubs - the Marshalling RPC Return Type
Development of Client Stubs and Unmarshalling of the Return Type
Conceptualization of RPC Identity
RPC Use Cases
Section 8 - State Synchronization
Section 9 checkpointing (Coming soon)
- Shall be able to create Remote procedure calls starting with #include
- Can comprehend the concept behind Data Serialization and DeSerialization
- Learn about how to apply State Synchronization
- Learn the concept of Application State Checkpointing.
- Will be able to comprehend the techniques to alter data objects using a stream of bytes.
- Will be able to comprehend how to manipulate objects in a recursive manner
- Can expand and apply the concepts that are learned in different programming languages
- Know the prerequisites to transmit data between heterogeneous machines