Apache Thrift
ಮಿತವ್ಯಯವು ಹಲವಾರು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಿಗೆ ಸೇವೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಮತ್ತು ರಚಿಸಲು ಬಳಸುವ ಇಂಟರ್ಫೇಸ್ ವ್ಯಾಖ್ಯಾನ ಭಾಷೆ ಮತ್ತು ಬೈನರಿ ಸಂವಹನ ಶಿಷ್ಟಾಚಾರವಾಗಿದೆ. ಇದನ್ನು ಫೇಸ್ಬುಕ್ನಲ್ಲಿ "ಸ್ಕೇಲೆಬಲ್ ಕ್ರಾಸ್-ಲ್ಯಾಂಗ್ವೇಜ್ ಸರ್ವೀಸಸ್ ಡೆವಲಪ್ಮೆಂಟ್" ಗಾಗಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ ಮತ್ತು 2020 ರ ಹೊತ್ತಿಗೆ ಇದು ಅಪಾಚೆ ಸಾಫ್ಟ್ವೇರ್ ಫೌಂಡೇಶನ್ನ ಮುಕ್ತ ಮೂಲ ಯೋಜನೆಯಾಗಿದೆ. ರಿಮೋಟ್ ಪ್ರೊಸೀಜರ್ ಕಾಲ್ (ಆರ್ಪಿಸಿ) ಫ್ರೇಮ್ವರ್ಕ್ನೊಂದಿಗೆ ಇದು ಕ್ರಾಸ್-ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಸೇವೆಗಳನ್ನು ನಿರ್ಮಿಸಲು ಕೋಡ್ ಜನರೇಷನ್ ಎಂಜಿನ್ನೊಂದಿಗೆ ಸಾಫ್ಟ್ವೇರ್ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ, ಇದು ಆಕ್ಷನ್ಸ್ಕ್ರಿಪ್ಟ್, ಸಿ, ಸಿ + +, ಸಿ #, ಕ್ಯಾಪುಸಿನೊ, ಕೋಕೋ, ಡೆಲ್ಫಿ, ಎರ್ಲಾಂಗ್, ಗೋ, ಹ್ಯಾಸ್ಕೆಲ್, ಜಾವಾ, ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್, ಆಬ್ಜೆಕ್ಟಿವ್-ಸಿ, ಒಕ್ಯಾಮ್ಲ್, ಪರ್ಲ್, ಪಿಎಚ್ಪಿ, ಪೈಥಾನ್, ರೂಬಿ, ಎಲಿಕ್ಸಿರ್, ರಸ್ಟ್, ಸ್ಕಾಲಾ, ಸ್ಮಾಲ್ಟಾಕ್ ಮತ್ತು ಸ್ವಿಫ್ಟ್ ಸೇರಿದಂತೆ ವಿವಿಧ ಭಾಷೆಗಳು ಮತ್ತು ಫ್ರೇಮ್ವರ್ಕ್ಗಳಲ್ಲಿ ಬರೆಯಲಾದ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಸಂಪರ್ಕಿಸಬಹುದು. ಈ ಅನುಷ್ಠಾನವನ್ನು ಫೇಸ್ಬುಕ್ ಬಿಡುಗಡೆ ಮಾಡಿದ ಏಪ್ರಿಲ್ 2007ರ ತಾಂತ್ರಿಕ ಪತ್ರಿಕೆಯಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ, ಈಗ ಇದನ್ನು ಅಪಾಚೆ ವಾಹಿನಿಯಲ್ಲಿ ಪ್ರಸಾರ ಮಾಡಲಾಗಿದೆ. ಆರ್ಕಿಟೆಕ್ಚರ್ ಮಿತವ್ಯಯವು ಕ್ಲೈಂಟ್ಗಳು ಮತ್ತು ಸರ್ವರ್ಗಳನ್ನು ರಚಿಸಲು ಸಂಪೂರ್ಣ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ. ಮೇಲಿನ ಭಾಗವು ಮಿತವ್ಯಯದ ವ್ಯಾಖ್ಯಾನದಿಂದ ಕೋಡ್ ಅನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ. ಈ ಕಡತದಿಂದ, ಸೇವೆಗಳು ಕ್ಲೈಂಟ್ ಮತ್ತು ಪ್ರೊಸೆಸರ್ ಕೋಡ್ಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತವೆ. ಅಂತರ್ನಿರ್ಮಿತ ಪ್ರಕಾರಗಳಿಗೆ ವ್ಯತಿರಿಕ್ತವಾಗಿ, ರಚಿಸಲಾದ ದತ್ತಾಂಶ ರಚನೆಗಳನ್ನು ರಚಿಸಲಾದ ಸಂಕೇತದ ಪರಿಣಾಮವಾಗಿ ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ಪ್ರೋಟೋಕಾಲ್ ಮತ್ತು ಸಾರಿಗೆ ಪದರವು ರನ್ಟೈಮ್ ಲೈಬ್ರರಿಯ ಭಾಗವಾಗಿದೆ. ಥ್ರಿಫ್ಟ್ನೊಂದಿಗೆ, ಕೋಡ್ ಅನ್ನು ಮರುಸಂಕಲನೆ ಮಾಡದೆಯೇ ಸೇವೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಮತ್ತು ಶಿಷ್ಟಾಚಾರ ಮತ್ತು ಸಾರಿಗೆಯನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿದೆ. ಕ್ಲೈಂಟ್ ಭಾಗವನ್ನು ಹೊರತುಪಡಿಸಿ, ಮಿತವ್ಯಯವು ಪ್ರೋಟೋಕಾಲ್ಗಳನ್ನು ಜೋಡಿಸಲು ಮತ್ತು ಒಟ್ಟಿಗೆ ಸಾಗಿಸಲು ಸರ್ವರ್ ಮೂಲಸೌಕರ್ಯವನ್ನು ಒಳಗೊಂಡಿದೆ, ಉದಾಹರಣೆಗೆ ನಿರ್ಬಂಧಿಸುವುದು, ನಿರ್ಬಂಧಿಸದಿರುವುದು ಮತ್ತು ಬಹು-ಥ್ರೆಡ್ ಸರ್ವರ್ಗಳು. ಸ್ಟ್ಯಾಕ್ನ ಆಧಾರವಾಗಿರುವ I/O ಭಾಗವನ್ನು ವಿವಿಧ ಭಾಷೆಗಳಿಗೆ ವಿಭಿನ್ನವಾಗಿ ಅಳವಡಿಸಲಾಗಿದೆ. ಮಿತವ್ಯಯವು ಹಲವಾರು ಶಿಷ್ಟಾಚಾರಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆಃ ಟಿಬಿನೇರಿ ಪ್ರೋಟೋಕಾಲ್-ಸರಳವಾದ, ಆದರೆ ಬಾಹ್ಯಾಕಾಶ ದಕ್ಷತೆಗೆ ಹೊಂದಿಕೆಯಾಗದ ನೇರವಾದ ಬೈನರಿ ಸ್ವರೂಪವಾಗಿದೆ. ಪಠ್ಯ ಶಿಷ್ಟಾಚಾರಕ್ಕಿಂತ ವೇಗವಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದು ಆದರೆ ದೋಷನಿವಾರಣೆ ಮಾಡುವುದು ಹೆಚ್ಚು ಸವಾಲಿನದು. ಟಿ. ಸಿ. ಕಾಂಪ್ಯಾಕ್ಟ್ ಪ್ರೊಟೋಕಾಲ್-ಹೆಚ್ಚು ಸಾಂದ್ರವಾದ ಬೈನರಿ ಸ್ವರೂಪ; ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿದೆ ಮತ್ತು ಟಿ. ಜೆ. ಎಸ್. ಓ. ಎನ್. ಪ್ರೊಟೋಕಾಲ್-ದತ್ತಾಂಶವನ್ನು ಎನ್ಕೋಡಿಂಗ್ ಮಾಡಲು ಜೆ. ಎಸ್. ಓ. ಎನ್. ಅನ್ನು ಬಳಸುತ್ತದೆ. ಟಿ ಸಿಂಪಲ್ ಜೆಎಸ್ಒಎನ್ ಪ್ರೊಟೋಕಾಲ್-ಬರೆಯಲು ಮಾತ್ರ ಇರುವ ಒಂದು ಶಿಷ್ಟಾಚಾರವಾಗಿದ್ದು, ಇದು ಜೆಎಸ್ಒಎನ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಮೆಟಾಡೇಟಾವನ್ನು ಬಿಡುವುದರಿಂದ ಮಿತವ್ಯಯದಿಂದ ಪಾರ್ಸ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಭಾಷೆಗಳ ಮೂಲಕ ಪಾರ್ಸಿಂಗ್ ಮಾಡಲು ಸೂಕ್ತವಾಗಿದೆ. ಬೆಂಬಲಿತ ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್ಗಳೆಂದರೆಃ ಟಿ ಸಿಂಪಲ್ಫೈಲ್ ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್-ಈ ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್ ಫೈಲ್ಗೆ ಬರೆಯುತ್ತದೆ. ಟಿಫ್ರೇಮ್ಡ್ ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್-ನಿರ್ಬಂಧಿಸದ ಸರ್ವರ್ ಅನ್ನು ಬಳಸುವಾಗ ಈ ಸಾರಿಗೆಯ ಅಗತ್ಯವಿರುತ್ತದೆ. ಇದು ದತ್ತಾಂಶವನ್ನು ಚೌಕಟ್ಟುಗಳಲ್ಲಿ ಕಳುಹಿಸುತ್ತದೆ, ಪ್ರತಿಯೊಂದೂ ಉದ್ದದ ಮಾಹಿತಿಯಿಂದ ಮುಂಚಿತವಾಗಿರುತ್ತದೆ. ಟಿ. ಎಂ. ಮೆಮೊರಿ ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್-ಐ/ಒಗಾಗಿ ಮೆಮೊರಿಯನ್ನು ಬಳಸುತ್ತದೆ. ಜಾವಾ ಅನುಷ್ಠಾನವು ಆಂತರಿಕವಾಗಿ ಸರಳವಾದ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತದೆ. ಟಿ-ಸಾಕೆಟ್-ಸಾಗಣೆಗೆ ಸಾಕೆಟ್ I/O ಅನ್ನು ನಿರ್ಬಂಧಿಸುವುದನ್ನು ಬಳಸುತ್ತದೆ. ಟಿಝ್ಲಿಬ್ ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್-ಝ್ಲಿಬ್ ಬಳಸಿ ಸಂಕೋಚನವನ್ನು ಮಾಡುತ್ತದೆ. ಮತ್ತೊಂದು ಸಾರಿಗೆಯ ಜೊತೆಯಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ. ಮಿತವ್ಯಯವು ಹಲವಾರು ಸರ್ವರ್ಗಳನ್ನು ಸಹ ಒದಗಿಸುತ್ತದೆ, ಅವುಗಳೆಂದರೆ ಟಿಎನ್ಆನ್ಬ್ಲಾಕಿಂಗ್ ಸರ್ವರ್-ನಿರ್ಬಂಧಿಸದ ಐ/ಒ ಅನ್ನು ಬಳಸುವ ಬಹು-ಥ್ರೆಡ್ ಸರ್ವರ್ (ಜಾವಾ ಅನುಷ್ಠಾನವು ಎನ್ಐಒ ಚಾನೆಲ್ಗಳನ್ನು ಬಳಸುತ್ತದೆ). ಈ ಸರ್ವರ್ನೊಂದಿಗೆ ಟಿಫ್ರೇಮ್ಡ್ ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್ ಅನ್ನು ಬಳಸಬೇಕು. ಟಿ ಸಿಂಪಲ್ ಸರ್ವರ್-ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಬ್ಲಾಕಿಂಗ್ ಐ/ಒ ಅನ್ನು ಬಳಸುವ ಏಕ-ಥ್ರೆಡ್ ಸರ್ವರ್. ಪರೀಕ್ಷೆಗೆ ಉಪಯುಕ್ತವಾಗಿದೆ. ಟಿ ಥ್ರೆಡ್ಡ್ ಸರ್ವರ್-ಪ್ರತಿ ಸಂಪರ್ಕ ಮಾದರಿ ಮತ್ತು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಬ್ಲಾಕಿಂಗ್ ಐ/ಒಗೆ ಥ್ರೆಡ್ ಅನ್ನು ಬಳಸುವ ಬಹು-ಥ್ರೆಡ್ಡ್ ಸರ್ವರ್. TTHREDPoolServer-ಥ್ರೆಡ್ ಪೂಲ್ ಮತ್ತು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಬ್ಲಾಕಿಂಗ್ I/O ಅನ್ನು ಬಳಸುವ ಬಹು-ಥ್ರೆಡ್ ಸರ್ವರ್. ಪ್ರಯೋಜನಗಳು ಮಿತವ್ಯಯದ ಕೆಲವು ಹೇಳಲಾದ ಪ್ರಯೋಜನಗಳೆಂದರೆಃ ಬೈನರಿ ಸ್ವರೂಪದ ಬಳಕೆಯಿಂದಾಗಿ ಎಸ್. ಓ. ಎ. ಪಿ. ಯಂತಹ ಪರ್ಯಾಯಗಳಿಗಿಂತ ಕಡಿಮೆ ಓವರ್ಹೆಡ್ನೊಂದಿಗೆ ಕ್ರಾಸ್-ಲ್ಯಾಂಗ್ವೇಜ್ ಸೀರಿಯಲೈಸೇಶನ್. ಯಾವುದೇ XML ಸಂರಚನೆಯ ಕಡತಗಳಿಲ್ಲ. ಭಾಷೆಯ ಬಂಧಗಳು ಸಹಜವೆನಿಸುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, ಜಾವಾ ಬಳಸುತ್ತದೆ. ಸಿ + + ಎಸ್ಟಿಡಿಃಃ ವೆಕ್ಟರ್ <ಎಸ್ಟಿಡಿಃಃ ಸ್ಟ್ರಿಂಗ್> ಅನ್ನು ಬಳಸುತ್ತದೆ. ಅಪ್ಲಿಕೇಶನ್-ಮಟ್ಟದ ತಂತಿ ಸ್ವರೂಪ ಮತ್ತು ಸೀರಿಯಲೈಸೇಶನ್-ಮಟ್ಟದ ತಂತಿ ಸ್ವರೂಪವನ್ನು ಸ್ವಚ್ಛವಾಗಿ ಬೇರ್ಪಡಿಸಲಾಗಿದೆ. ಅವುಗಳನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಮಾರ್ಪಡಿಸಬಹುದು. ಪೂರ್ವನಿರ್ಧರಿತ ಸೀರಿಯಲೈಸೇಶನ್ ಶೈಲಿಗಳು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒಳಗೊಂಡಿವೆಃ ಬೈನರಿ, ಎಚ್. ಟಿ. ಟಿ. ಪಿ-ಸ್ನೇಹಿ ಮತ್ತು ಕಾಂಪ್ಯಾಕ್ಟ್ ಬೈನರಿ. ಕ್ರಾಸ್-ಲಾಂಗ್ವೇಜ್ ಫೈಲ್ ಸೀರಿಯಲೈಸೇಶನ್ ಆಗಿ ಡಬಲ್ಸ್. ಪ್ರೋಟೋಕಾಲ್. ಮಿತವ್ಯಯಕ್ಕೆ ಪ್ರಮುಖ-ಆವೃತ್ತಿ/ಸಣ್ಣ-ಆವೃತ್ತಿಯಂತಹ ಕೇಂದ್ರೀಕೃತ ಮತ್ತು ಸ್ಪಷ್ಟವಾದ ಕಾರ್ಯವಿಧಾನದ ಅಗತ್ಯವಿಲ್ಲ. ಸಡಿಲವಾಗಿ ಜೋಡಿಸಲಾದ ತಂಡಗಳು ಆರ್ಪಿಸಿ ಕರೆಗಳನ್ನು ಮುಕ್ತವಾಗಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಬಹುದು. ಯಾವುದೇ ಬಿಲ್ಡ್ ಡಿಪೆಂಡೆನ್ಸಿಗಳು ಅಥವಾ ಪ್ರಮಾಣಿತವಲ್ಲದ ಸಾಫ್ಟ್ವೇರ್ ಇಲ್ಲ. ಹೊಂದಾಣಿಕೆಯಾಗದ ಸಾಫ್ಟ್ವೇರ್ ಪರವಾನಗಿಗಳ ಮಿಶ್ರಣವಿಲ್ಲ. ಮಿತವ್ಯಯ ಸೇವೆಯನ್ನು ರಚಿಸುವುದು ಮಿತವ್ಯಯವನ್ನು ಸಿ + + ನಲ್ಲಿ ಬರೆಯಲಾಗುತ್ತದೆ, ಆದರೆ ಇದು ಹಲವಾರು ಭಾಷೆಗಳಿಗೆ ಕೋಡ್ ಅನ್ನು ರಚಿಸಬಹುದು. ಮಿತವ್ಯಯದ ಸೇವೆಯನ್ನು ರಚಿಸಲು, ಅದನ್ನು ವಿವರಿಸುವ ಮಿತವ್ಯಯದ ಕಡತಗಳನ್ನು ಬರೆಯಬೇಕು, ಗಮ್ಯಸ್ಥಾನದ ಭಾಷೆಯಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ರಚಿಸಬೇಕು, ಸರ್ವರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಕೆಲವು ಕೋಡ್ ಅನ್ನು ಬರೆಯಬೇಕು ಮತ್ತು ಕ್ಲೈಂಟ್ನಿಂದ ಕರೆ ಮಾಡಬೇಕು. ಅಂತಹ ವಿವರಣಾತ್ಮಕ ಕಡತದ ಕೋಡ್ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆಃ ಎನಮ್ ಫೋನ್ ಟೈಪ್ {ಹೋಮ್, ವರ್ಕ್, ಮೊಬೈಲ್, ಇತರ} ರಚನೆಯ ಫೋನ್ {1: ಐ32 ಐಡಿ, 2: ಸ್ಟ್ರಿಂಗ್ ಸಂಖ್ಯೆ, 3: ಫೋನ್ ಟೈಪ್ ಪ್ರಕಾರ} ಸೇವೆ ಫೋನ್ ಸರ್ವಿಸ್ {ಫೋನ್ ಫೈಂಡ್ಬೈಡ್ (1: ಐ32 ಐಡಿ), ಪಟ್ಟಿ <ಫೋನ್> ಫೈಂಡಅಲ್ ()} ಮಿತವ್ಯಯವು ಈ ವಿವರಣಾತ್ಮಕ ಮಾಹಿತಿಯಿಂದ ಕೋಡ್ ಅನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಜಾವಾದಲ್ಲಿ, ಫೋನ್ ಟೈಪ್ ಫೋನ್ ವರ್ಗದೊಳಗೆ ಸರಳವಾದ ಎನಮ್ ಆಗಿರುತ್ತದೆ. ಡೇಟಾ ಸೀರಿಯಲೈಸೇಶನ್ ಫಾರ್ಮ್ಯಾಟ್ಗಳ ಹೋಲಿಕೆಯನ್ನು ಸಹ ನೋಡಿ ಅಪಾಚೆ ಅವ್ರೋ ಅಬ್ಸ್ಟ್ರಾಕ್ಟ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ನೊಟೇಶನ್ ಒನ್ (ASN.1) ಹೆಸ್ಸಿಯನ್ ಪ್ರೊಟೊಕಾಲ್ ಬಫರ್ಸ್ ಎಕ್ಸ್ಟರ್ನಲ್ ಡೇಟಾ ರೆಪ್ರೆಸೆಂಟೇಶನ್ (XDR) ಇಂಟರ್ನೆಟ್ ಕಮ್ಯುನಿಕೇಷನ್ಸ್ ಎಂಜಿನ್ (ಐಸ್) gRPC SDXF ಉಲ್ಲೇಖಗಳು ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಮಿತವ್ಯಯ ಅಪ್ಲಿಕೇಶನ್ ಲೇಯರ್ ಪ್ರೊಟೊಕಾಲ್ಗಳು ಡೇಟಾ ಸೀರಿಯಲೈಸೇಶನ್ ಫಾರ್ಮ್ಯಾಟ್ಗಳು ಅಂತರ-ಪ್ರಕ್ರಿಯೆ ಸಂವಹನ ರಿಮೋಟ್ ಪ್ರೊಸೀಜರ್ ಕಾಲ್ ಮಿತವ್ಯಯ