ವೆಬ್ ಸೇವೆಗಳನ್ನು ಆಯೋಜಿಸುವುದು


ಟೋಪಿಗಳು ಜುಲೈ 23, 2013 ರಂದು 01:09 ಅಪರಾಹ್ನ

PHP ಯಲ್ಲಿ SOAP ಕ್ಲೈಂಟ್-ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬರೆಯುವುದು

  • PHP
  • ಟ್ಯುಟೋರಿಯಲ್

ಎಲ್ಲರಿಗು ನಮಸ್ಖರ!
ಇತ್ತೀಚೆಗೆ ನಾನು ವೆಬ್ ಸೇವೆಗಳ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ತೊಡಗಿಸಿಕೊಂಡಿದ್ದೇನೆ. ಆದರೆ ಇಂದು ವಿಷಯವು ನನ್ನ ಬಗ್ಗೆ ಅಲ್ಲ, ಆದರೆ SOAP 1.2 ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಆಧರಿಸಿ ನಾವು ನಮ್ಮದೇ ಆದ XML ವೆಬ್ ಸೇವೆಯನ್ನು ಹೇಗೆ ಬರೆಯಬಹುದು ಎಂಬುದರ ಕುರಿತು.

ವಿಷಯವನ್ನು ಓದಿದ ನಂತರ, ನಿಮಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ:

  • ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ನ ನಿಮ್ಮ ಸ್ವಂತ ಸರ್ವರ್ ಅನುಷ್ಠಾನವನ್ನು ಬರೆಯಿರಿ;
  • ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ನ ನಿಮ್ಮ ಸ್ವಂತ ಕ್ಲೈಂಟ್ ಅನುಷ್ಠಾನವನ್ನು ಬರೆಯಿರಿ;
  • ನಿಮ್ಮ ಸ್ವಂತ ವೆಬ್ ಸೇವಾ ವಿವರಣೆಯನ್ನು ಬರೆಯಿರಿ (WSDL);
  • ಕ್ಲೈಂಟ್‌ನಿಂದ ಸರ್ವರ್‌ಗೆ ಒಂದೇ ರೀತಿಯ ಡೇಟಾದ ಸರಣಿಗಳನ್ನು ಕಳುಹಿಸಿ.
ನೀವು ಊಹಿಸುವಂತೆ, ಎಲ್ಲಾ ಮ್ಯಾಜಿಕ್ ಅನ್ನು PHP ಮತ್ತು ಅಂತರ್ನಿರ್ಮಿತ SoapClient ಮತ್ತು SoapServer ತರಗತಿಗಳನ್ನು ಬಳಸಿ ಮಾಡಲಾಗುತ್ತದೆ. ಮೊಲವಾಗಿ, ನಾವು sms ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸುವ ಸೇವೆಯನ್ನು ಹೊಂದಿದ್ದೇವೆ.

1 ಸಮಸ್ಯೆ ಹೇಳಿಕೆ

1.1 ಗಡಿಗಳು

ಆರಂಭದಲ್ಲಿ, ವಿಷಯದ ಕೊನೆಯಲ್ಲಿ ನಾವು ಸಾಧಿಸುವ ಫಲಿತಾಂಶವನ್ನು ಎದುರಿಸಲು ನಾನು ಪ್ರಸ್ತಾಪಿಸುತ್ತೇನೆ. ಮೇಲೆ ಘೋಷಿಸಿದಂತೆ, ನಾವು sms ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಲು ಸೇವೆಯನ್ನು ಬರೆಯುತ್ತೇವೆ ಮತ್ತು ಹೆಚ್ಚು ನಿಖರವಾಗಿ, ನಾವು SOAP ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ವಿವಿಧ ಮೂಲಗಳಿಂದ ಸಂದೇಶಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತೇವೆ. ಅದರ ನಂತರ, ಅವರು ಯಾವ ರೂಪದಲ್ಲಿ ಸರ್ವರ್ಗೆ ಬರುತ್ತಾರೆ ಎಂಬುದನ್ನು ನಾವು ಪರಿಗಣಿಸುತ್ತೇವೆ. ಒದಗಿಸುವವರಿಗೆ ಮತ್ತಷ್ಟು ಕಳುಹಿಸಲು ಸಂದೇಶಗಳನ್ನು ಸರದಿಯಲ್ಲಿ ಇರಿಸುವ ಪ್ರಕ್ರಿಯೆಯು, ದುರದೃಷ್ಟವಶಾತ್, ಹಲವು ಕಾರಣಗಳಿಗಾಗಿ ಈ ಪೋಸ್ಟ್‌ನ ವ್ಯಾಪ್ತಿಯನ್ನು ಮೀರಿದೆ.

1.2 ಯಾವ ಡೇಟಾವನ್ನು ಬದಲಾಯಿಸಲಾಗುವುದು?

ಸರಿ, ನಾವು ಮಿತಿಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ! ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್ ನಡುವೆ ನಾವು ಯಾವ ಡೇಟಾವನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳುತ್ತೇವೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುವುದು ಮುಂದಿನ ಹಂತವಾಗಿದೆ. ಈ ವಿಷಯದ ಬಗ್ಗೆ, ದೀರ್ಘಕಾಲದವರೆಗೆ ಬುದ್ಧಿವಂತರಾಗಿರಬಾರದು ಮತ್ತು ನಿಮಗಾಗಿ ಮುಖ್ಯ ಪ್ರಶ್ನೆಗಳಿಗೆ ತಕ್ಷಣವೇ ಉತ್ತರಿಸಲು ನಾನು ಪ್ರಸ್ತಾಪಿಸುತ್ತೇನೆ:
  • ಚಂದಾದಾರರಿಗೆ SMS ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಲು ಸರ್ವರ್‌ಗೆ ಯಾವ ಕನಿಷ್ಠ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಬೇಕು?
  • ಕ್ಲೈಂಟ್‌ನ ಅಗತ್ಯಗಳನ್ನು ಪೂರೈಸಲು ಸರ್ವರ್‌ನಿಂದ ಕಳುಹಿಸಬೇಕಾದ ಕನಿಷ್ಠ ಪ್ರಮಾಣದ ಡೇಟಾ ಯಾವುದು?
ಇದಕ್ಕಾಗಿ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಕಳುಹಿಸುವುದು ಅವಶ್ಯಕ ಎಂದು ಏನೋ ಹೇಳುತ್ತದೆ:
  • ಮೊಬೈಲ್ ಫೋನ್ ಸಂಖ್ಯೆ, ಮತ್ತು
  • SMS ಪಠ್ಯ.
ತಾತ್ವಿಕವಾಗಿ, ಈ ಎರಡು ಗುಣಲಕ್ಷಣಗಳನ್ನು ಕಳುಹಿಸಲು ಸಾಕು, ಆದರೆ ಹುಟ್ಟುಹಬ್ಬದ ಶುಭಾಶಯಗಳೊಂದಿಗೆ sms ಬೆಳಿಗ್ಗೆ 3 ಗಂಟೆಗೆ ಅಥವಾ 4 ಗಂಟೆಗೆ ನಿಮಗೆ ಬರುತ್ತದೆ ಎಂದು ನನಗೆ ತಕ್ಷಣ ತೋರುತ್ತದೆ! ಈ ಕ್ಷಣದಲ್ಲಿ, ನನ್ನ ಬಗ್ಗೆ ಮರೆಯದಿದ್ದಕ್ಕಾಗಿ ನಾನು ಎಲ್ಲರಿಗೂ ತುಂಬಾ ಕೃತಜ್ಞನಾಗಿದ್ದೇನೆ! ಆದ್ದರಿಂದ, ನಾವು ಸರ್ವರ್‌ಗೆ ಕಳುಹಿಸುತ್ತೇವೆ ಮತ್ತು
  • SMS ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಿದ ದಿನಾಂಕ.
ನಾನು ಸರ್ವರ್‌ಗೆ ಕಳುಹಿಸಲು ಬಯಸುವ ಮುಂದಿನ ವಿಷಯ
  • ಸಂದೇಶ ಪ್ರಕಾರ.
ಈ ನಿಯತಾಂಕವು ಕಡ್ಡಾಯವಲ್ಲ, ಆದರೆ ನಮ್ಮ ಸುದ್ದಿಗಳೊಂದಿಗೆ ನಾವು ಎಷ್ಟು ಗ್ರಾಹಕರನ್ನು "ಸಂತೋಷಗೊಳಿಸಿದ್ದೇವೆ" ಎಂದು ಬಾಸ್‌ಗೆ ತ್ವರಿತವಾಗಿ ಹೇಳಬೇಕಾದರೆ ಅದು ನಮಗೆ ತುಂಬಾ ಉಪಯುಕ್ತವಾಗಿರುತ್ತದೆ ಮತ್ತು ಈ ವಿಷಯದ ಬಗ್ಗೆ ಕೆಲವು ಸುಂದರವಾದ ಅಂಕಿಅಂಶಗಳನ್ನು ಸಹ ಸೆಳೆಯುತ್ತದೆ.

ಮತ್ತು ಇನ್ನೂ, ನಾನು ಏನನ್ನಾದರೂ ಮರೆತಿದ್ದೇನೆ! ನಾವು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಪ್ರತಿಬಿಂಬಿಸಿದರೆ, ಕ್ಲೈಂಟ್ ಒಂದು ಸಮಯದಲ್ಲಿ ಸರ್ವರ್ಗೆ ಒಂದು SMS ಸಂದೇಶವನ್ನು ಅಥವಾ ಅವುಗಳಲ್ಲಿ ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯನ್ನು ಕಳುಹಿಸಬಹುದು ಎಂದು ಗಮನಿಸಬೇಕಾದ ಅಂಶವಾಗಿದೆ. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಒಂದು ಡೇಟಾ ಪ್ಯಾಕೆಟ್‌ನಲ್ಲಿ ಒಂದರಿಂದ ಅನಂತ ಸಂದೇಶಗಳಿರಬಹುದು.

ಪರಿಣಾಮವಾಗಿ, SMS ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಲು ನಮಗೆ ಈ ಕೆಳಗಿನ ಡೇಟಾ ಬೇಕಾಗುತ್ತದೆ ಎಂದು ನಾವು ಪಡೆಯುತ್ತೇವೆ:

  • ಸೆಲ್ ಫೋನ್ ಸಂಖ್ಯೆ,
  • SMS ಪಠ್ಯ,
  • ಚಂದಾದಾರರಿಗೆ SMS ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುವ ಸಮಯ,
  • ಸಂದೇಶ ಪ್ರಕಾರ.

ನಾವು ಮೊದಲ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸಿದ್ದೇವೆ, ಈಗ ಎರಡನೇ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸುವುದು ಅವಶ್ಯಕ. ಮತ್ತು ಬಹುಶಃ ನಾನು ಸ್ವಲ್ಪ ಮೋಸ ಮಾಡಲು ಅವಕಾಶ ನೀಡುತ್ತೇನೆ. ಆದ್ದರಿಂದ, ಸರ್ವರ್‌ನಿಂದ ನಾವು ಬೂಲಿಯನ್ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಕಳುಹಿಸುತ್ತೇವೆ, ಅದರ ಮೌಲ್ಯವು ಈ ಕೆಳಗಿನ ಅರ್ಥವನ್ನು ಹೊಂದಿದೆ:

  • ನಿಜ - ಪ್ಯಾಕೆಟ್ ಯಶಸ್ವಿಯಾಗಿ ಸರ್ವರ್ ಅನ್ನು ತಲುಪಿದೆ, ದೃಢೀಕರಣವನ್ನು ಅಂಗೀಕರಿಸಿದೆ ಮತ್ತು sms ಪೂರೈಕೆದಾರರಿಗೆ ಕಳುಹಿಸಲು ಸರತಿಯಲ್ಲಿದೆ
  • ತಪ್ಪು - ಎಲ್ಲಾ ಇತರ ಸಂದರ್ಭಗಳಲ್ಲಿ

ಇದು ಸಮಸ್ಯೆಯ ಹೇಳಿಕೆಯ ವಿವರಣೆಯನ್ನು ಮುಕ್ತಾಯಗೊಳಿಸುತ್ತದೆ! ಮತ್ತು ಅಂತಿಮವಾಗಿ, ನಾವು ಅತ್ಯಂತ ಆಸಕ್ತಿದಾಯಕ ಭಾಗಕ್ಕೆ ಇಳಿಯೋಣ - ಈ ಸೋಪ್ ಯಾವ ರೀತಿಯ ವಿಲಕ್ಷಣ ಪ್ರಾಣಿ ಎಂದು ನಾವು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತೇವೆ!

2 SOAP ಎಂದರೇನು?

ಸಾಮಾನ್ಯವಾಗಿ, ಆರಂಭದಲ್ಲಿ ನಾನು SOAP ಎಂದರೇನು ಎಂಬುದರ ಕುರಿತು ಏನನ್ನೂ ಬರೆಯಲು ಯೋಜಿಸಲಿಲ್ಲ ಮತ್ತು ಅಗತ್ಯ ವಿಶೇಷಣಗಳೊಂದಿಗೆ w3.org ಸೈಟ್‌ಗೆ ಲಿಂಕ್‌ಗಳಿಗೆ ಮತ್ತು ವಿಕಿಪೀಡಿಯಾಕ್ಕೆ ಲಿಂಕ್‌ಗಳಿಗೆ ನನ್ನನ್ನು ಮಿತಿಗೊಳಿಸಲು ಬಯಸುತ್ತೇನೆ. ಆದರೆ ಕೊನೆಯಲ್ಲಿ ನಾನು ಈ ಪ್ರೋಟೋಕಾಲ್ ಬಗ್ಗೆ ಸಣ್ಣ ಉಲ್ಲೇಖವನ್ನು ಬರೆಯಲು ನಿರ್ಧರಿಸಿದೆ.

ಮತ್ತು ಈ ಡೇಟಾ ವಿನಿಮಯ ಪ್ರೋಟೋಕಾಲ್ RPC (ರಿಮೋಟ್ ಪ್ರೊಸೀಜರ್ ಕಾಲ್) ಮಾದರಿಯ ಆಧಾರದ ಮೇಲೆ ಪ್ರೋಟೋಕಾಲ್‌ಗಳ ಉಪವಿಭಾಗಕ್ಕೆ ಸೇರಿದೆ ಎಂಬ ಅಂಶದೊಂದಿಗೆ ನಾನು ನನ್ನ ಕಥೆಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇನೆ, ಇದರ ಆಂಟಿಪೋಡ್ REST (ಪ್ರತಿನಿಧಿ ರಾಜ್ಯ ವರ್ಗಾವಣೆ, ಪ್ರಾತಿನಿಧಿಕ ರಾಜ್ಯ ವರ್ಗಾವಣೆ) . ವಿಕಿಪೀಡಿಯಾದಲ್ಲಿ ನೀವು ಇದರ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ಓದಬಹುದು, ಲೇಖನಗಳಿಗೆ ಲಿಂಕ್‌ಗಳು ವಿಷಯದ ಕೊನೆಯಲ್ಲಿವೆ. ಈ ಲೇಖನಗಳಿಂದ, ನಾವು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾಗಿದೆ: "ಆರ್ಪಿಸಿ ವಿಧಾನವು ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ವಿಧಾನಗಳು ಮತ್ತು ಸಂಕೀರ್ಣ ಪ್ರೋಟೋಕಾಲ್ನೊಂದಿಗೆ ಸಣ್ಣ ಪ್ರಮಾಣದ ನೆಟ್ವರ್ಕ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. REST ವಿಧಾನದೊಂದಿಗೆ, ವಿಧಾನಗಳ ಸಂಖ್ಯೆ ಮತ್ತು ಪ್ರೋಟೋಕಾಲ್‌ನ ಸಂಕೀರ್ಣತೆಯು ತೀವ್ರವಾಗಿ ಸೀಮಿತವಾಗಿದೆ, ಇದು ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ವೈಯಕ್ತಿಕ ಸಂಪನ್ಮೂಲಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು. ಅಂದರೆ, ನಮಗೆ ಸಂಬಂಧಿಸಿದಂತೆ, ಇದರರ್ಥ RPC ವಿಧಾನದ ಸಂದರ್ಭದಲ್ಲಿ, ಸೈಟ್ ಯಾವಾಗಲೂ ಸೇವೆಗೆ ಒಂದು ಇನ್‌ಪುಟ್ (ಲಿಂಕ್) ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ ಮತ್ತು ಡೇಟಾದೊಂದಿಗೆ ನಾವು ರವಾನಿಸುವ ಒಳಬರುವ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಯಾವ ವಿಧಾನವನ್ನು ಕರೆಯಬೇಕು ನಮ್ಮ ಸೈಟ್‌ನಲ್ಲಿ REST ವಿಧಾನದೊಂದಿಗೆ ಅನೇಕ ಇನ್‌ಪುಟ್‌ಗಳನ್ನು (ಲಿಂಕ್‌ಗಳು) ಹೊಂದಿದೆ, ಪ್ರತಿಯೊಂದೂ ಕೆಲವು ಡೇಟಾವನ್ನು ಮಾತ್ರ ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ. ಈ ವಿಧಾನಗಳಲ್ಲಿನ ವ್ಯತ್ಯಾಸವನ್ನು ಇನ್ನಷ್ಟು ಸುಲಭವಾಗಿ ವಿವರಿಸುವುದು ಹೇಗೆ ಎಂದು ಓದುವ ಯಾರಿಗಾದರೂ ತಿಳಿದಿದ್ದರೆ, ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ ಬರೆಯಲು ಮರೆಯದಿರಿ!

SOAP ಬಗ್ಗೆ ನಾವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಮುಂದಿನ ವಿಷಯವೆಂದರೆ ಈ ಪ್ರೋಟೋಕಾಲ್ ಅದೇ XML ಅನ್ನು ಸಾರಿಗೆಯಾಗಿ ಬಳಸುತ್ತದೆ, ಇದು ಒಂದು ಕಡೆ ತುಂಬಾ ಒಳ್ಳೆಯದು, ಏಕೆಂದರೆ. ನಮ್ಮ ಆರ್ಸೆನಲ್ ತಕ್ಷಣವೇ ಈ ಮಾರ್ಕ್ಅಪ್ ಭಾಷೆಯ ಆಧಾರದ ಮೇಲೆ ತಂತ್ರಜ್ಞಾನಗಳ ಸ್ಟಾಕ್‌ನ ಸಂಪೂರ್ಣ ಶಕ್ತಿಯನ್ನು ಒಳಗೊಂಡಿದೆ, ಅವುಗಳೆಂದರೆ XML-ಸ್ಕೀಮಾ - XML ​​ಡಾಕ್ಯುಮೆಂಟ್‌ನ ರಚನೆಯನ್ನು ವಿವರಿಸುವ ಭಾಷೆ (ವಿಕಿಪೀಡಿಯಾಕ್ಕೆ ಧನ್ಯವಾದಗಳು!), ಇದು ಸರ್ವರ್‌ಗೆ ಆಗಮಿಸುವ ಡೇಟಾವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ದೃಢೀಕರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಗ್ರಾಹಕರಿಂದ.

ಆದ್ದರಿಂದ, SOAP ರಿಮೋಟ್ ಕಾರ್ಯವಿಧಾನದ ಕರೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಬಳಸುವ ಪ್ರೋಟೋಕಾಲ್ ಎಂದು ಈಗ ನಮಗೆ ತಿಳಿದಿದೆ ಮತ್ತು ಇದು XML ಅನ್ನು ಸಾರಿಗೆಯಾಗಿ ಬಳಸುತ್ತದೆ! ನೀವು ವಿಕಿಪೀಡಿಯಾದಲ್ಲಿ ಲೇಖನವನ್ನು ಓದಿದರೆ, ಅಲ್ಲಿಂದ ನೀವು ಅದನ್ನು ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ ಲೇಯರ್ ಪ್ರೋಟೋಕಾಲ್‌ನಲ್ಲಿ ಬಳಸಬಹುದೆಂದು ಕಲಿಯಬಹುದು, ಮತ್ತು ಕೇವಲ HTTP ಯೊಂದಿಗೆ ಜೋಡಿಯಾಗಿಲ್ಲ (ದುರದೃಷ್ಟವಶಾತ್, ಈ ವಿಷಯದಲ್ಲಿ ನಾವು HTTP ಮೇಲೆ SOAP ಅನ್ನು ಮಾತ್ರ ಪರಿಗಣಿಸುತ್ತೇವೆ). ಮತ್ತು ಈ ಎಲ್ಲದರ ಬಗ್ಗೆ ನಾನು ಹೆಚ್ಚು ಇಷ್ಟಪಡುತ್ತೇನೆ ಎಂದು ನಿಮಗೆ ತಿಳಿದಿದೆಯೇ? ಯಾವುದೇ ಊಹೆಗಳಿಲ್ಲದಿದ್ದರೆ, ನಾನು ನಿಮಗೆ ಸುಳಿವು ನೀಡುತ್ತೇನೆ - SOAP!... ಹೇಗಾದರೂ ಯಾವುದೇ ಊಹೆಗಳಿಲ್ಲವೇ?... ನೀವು ಖಂಡಿತವಾಗಿ ವಿಕಿಪೀಡಿಯಾದಲ್ಲಿನ ಲೇಖನವನ್ನು ಓದಿದ್ದೀರಾ?... ಸಾಮಾನ್ಯವಾಗಿ, ನಾನು ನಿಮ್ಮನ್ನು ಮತ್ತಷ್ಟು ಹಿಂಸಿಸುವುದಿಲ್ಲ. ಆದ್ದರಿಂದ, ನಾನು ತಕ್ಷಣ ಉತ್ತರಕ್ಕೆ ಹೋಗುತ್ತೇನೆ: “SOAP (ಇಂಗ್ಲಿಷ್‌ನಿಂದ. ಸರಳ ವಸ್ತು ಪ್ರವೇಶ ಪ್ರೋಟೋಕಾಲ್ - ಸರಳವಾಗಿದೆ ಶಿಷ್ಟಾಚಾರವಸ್ತುಗಳಿಗೆ ಪ್ರವೇಶ; ನಿರ್ದಿಷ್ಟತೆ 1.2 ವರೆಗೆ)". ಈ ಸಾಲಿನ ಹೈಲೈಟ್ ಇಟಾಲಿಕ್ಸ್‌ನಲ್ಲಿದೆ! ಈ ಎಲ್ಲದರಿಂದ ನೀವು ಯಾವ ತೀರ್ಮಾನಗಳನ್ನು ತೆಗೆದುಕೊಂಡಿದ್ದೀರಿ ಎಂದು ನನಗೆ ತಿಳಿದಿಲ್ಲ, ಆದರೆ ನಾನು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ನೋಡುತ್ತೇನೆ - ಈ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು "ಸರಳ" ಎಂದು ಕರೆಯಲಾಗುವುದಿಲ್ಲ (ಮತ್ತು ಸ್ಪಷ್ಟವಾಗಿ w3 ಸಹ ಇದನ್ನು ಒಪ್ಪುತ್ತದೆ), ನಂತರ ಆವೃತ್ತಿ 1.2 ರಿಂದ ಅದು ಸ್ಥಗಿತಗೊಂಡಿದೆ ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ! ಮತ್ತು ಇದು SOAP ಎಂದು ಹೆಸರಾಯಿತು, ಕೇವಲ SOAP ಮತ್ತು ಅವಧಿ.

ಸರಿ, ಸರಿ, ನಾನು ನಿಮ್ಮ ಕ್ಷಮೆಯನ್ನು ಬೇಡುತ್ತೇನೆ, ಸ್ವಲ್ಪ ಬದಿಗೆ ಸ್ಕಿಡ್ ಮಾಡಿದೆ. ನಾನು ಮೊದಲೇ ಬರೆದಂತೆ, XML ಅನ್ನು ಸಾರಿಗೆಯಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ ಮತ್ತು ಕ್ಲೈಂಟ್ ಮತ್ತು ಸರ್ವರ್ ನಡುವೆ ಚಲಿಸುವ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು SOAP ಲಕೋಟೆಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಹೊದಿಕೆಯ ಸಾಮಾನ್ಯ ರಚನೆಯನ್ನು ನಾವು ಪರಿಗಣಿಸಿದರೆ, ಅದು ನಿಮಗೆ ತುಂಬಾ ಪರಿಚಿತವಾಗಿದೆ, ಏಕೆಂದರೆ HTML ಪುಟದ ರಚನೆಯನ್ನು ಹೋಲುತ್ತದೆ. ಇದು ಮುಖ್ಯ ವಿಭಾಗವನ್ನು ಹೊಂದಿದೆ - ಆವರಿಸು, ಇದು ವಿಭಾಗಗಳನ್ನು ಒಳಗೊಂಡಿದೆ ಶಿರೋಲೇಖಮತ್ತು ದೇಹ, ಅಥವಾ ದೋಷ. AT ದೇಹಡೇಟಾವನ್ನು ರವಾನಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಇದು ಹೊದಿಕೆಯ ಕಡ್ಡಾಯ ವಿಭಾಗವಾಗಿದೆ ಶಿರೋಲೇಖಐಚ್ಛಿಕವಾಗಿದೆ. AT ಶಿರೋಲೇಖಅಧಿಕೃತತೆಯನ್ನು ರವಾನಿಸಬಹುದು, ಅಥವಾ ವೆಬ್ ಸೇವಾ ಕಾರ್ಯವಿಧಾನಗಳ ಇನ್‌ಪುಟ್ ಡೇಟಾಗೆ ನೇರವಾಗಿ ಸಂಬಂಧಿಸದ ಯಾವುದೇ ಡೇಟಾ. ಪ್ರೊ ದೋಷಯಾವುದೇ ದೋಷಗಳ ಸಂದರ್ಭದಲ್ಲಿ ಸರ್ವರ್‌ನಿಂದ ಕ್ಲೈಂಟ್‌ಗೆ ಬರುತ್ತದೆ ಎಂಬುದನ್ನು ಹೊರತುಪಡಿಸಿ ಹೇಳಲು ವಿಶೇಷವಾದ ಏನೂ ಇಲ್ಲ.

ಇಲ್ಲಿಯೇ SOAP ಪ್ರೋಟೋಕಾಲ್ ಕುರಿತು ನನ್ನ ಅವಲೋಕನ ಕಥೆ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ (ನಮ್ಮ ಕ್ಲೈಂಟ್ ಮತ್ತು ಸರ್ವರ್ ಅಂತಿಮವಾಗಿ ಅವುಗಳನ್ನು ಪರಸ್ಪರ ಹೇಗೆ ಚಲಾಯಿಸಬೇಕು ಎಂಬುದನ್ನು ಕಲಿತಾಗ ನಾವು ಲಕೋಟೆಗಳನ್ನು ಮತ್ತು ಅವುಗಳ ರಚನೆಯನ್ನು ಹೆಚ್ಚು ವಿವರವಾಗಿ ನೋಡುತ್ತೇವೆ) ಮತ್ತು ಹೊಸದು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ - SOAP ಕಂಪ್ಯಾನಿಯನ್ ಬಗ್ಗೆ ಎಂದು ಕರೆದರು WSDL(ವೆಬ್ ಸೇವೆಗಳ ವಿವರಣೆ ಭಾಷೆ). ಹೌದು, ಹೌದು, ಈ ಪ್ರೋಟೋಕಾಲ್‌ನಲ್ಲಿ ನಮ್ಮದೇ ಆದ API ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುವ ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಪ್ರಯತ್ನದಿಂದ ಇದು ನಮ್ಮಲ್ಲಿ ಹೆಚ್ಚಿನವರನ್ನು ಹೆದರಿಸುವ ವಿಷಯವಾಗಿದೆ. ಪರಿಣಾಮವಾಗಿ, ನಾವು ಸಾಮಾನ್ಯವಾಗಿ ನಮ್ಮ ಚಕ್ರವನ್ನು JSON ನೊಂದಿಗೆ ಸಾರಿಗೆಯಾಗಿ ಮರುಶೋಧಿಸುತ್ತೇವೆ. ಹಾಗಾದರೆ, WSDL ಎಂದರೇನು? WSDL ಎನ್ನುವುದು XML (c) ವಿಕಿಪೀಡಿಯಾ ಭಾಷೆಯ ಆಧಾರದ ಮೇಲೆ ವೆಬ್ ಸೇವೆಗಳನ್ನು ವಿವರಿಸಲು ಮತ್ತು ಅವುಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಒಂದು ಭಾಷೆಯಾಗಿದೆ. ಈ ವ್ಯಾಖ್ಯಾನದಿಂದ ಈ ತಂತ್ರಜ್ಞಾನದ ಸಂಪೂರ್ಣ ಪವಿತ್ರ ಅರ್ಥವು ನಿಮಗೆ ಸ್ಪಷ್ಟವಾಗಿಲ್ಲದಿದ್ದರೆ, ನಾನು ಅದನ್ನು ನನ್ನ ಸ್ವಂತ ಮಾತುಗಳಲ್ಲಿ ವಿವರಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ!

WSDL ಅನ್ನು ನಮ್ಮ ಕ್ಲೈಂಟ್‌ಗಳು ಸರ್ವರ್‌ನೊಂದಿಗೆ ಸಾಮಾನ್ಯವಾಗಿ ಸಂವಹನ ಮಾಡಲು ಅನುಮತಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಇದನ್ನು ಮಾಡಲು, ಈ ಕೆಳಗಿನ ಮಾಹಿತಿಯನ್ನು "*.wsdl" ವಿಸ್ತರಣೆಯೊಂದಿಗೆ ಫೈಲ್‌ನಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ:

  • ಯಾವ ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳನ್ನು ಬಳಸಲಾಗಿದೆ,
  • ಯಾವ ಡೇಟಾ ಯೋಜನೆಗಳನ್ನು ಬಳಸಲಾಗಿದೆ,
  • ವೆಬ್ ಸೇವೆಯು ಗ್ರಾಹಕರಿಂದ ಯಾವ ರೀತಿಯ ಸಂದೇಶಗಳನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ,
  • ಯಾವ ಡೇಟಾ ಯಾವ ವೆಬ್ ಸೇವಾ ಕಾರ್ಯವಿಧಾನಗಳಿಗೆ ಸೇರಿದೆ,
  • ವೆಬ್ ಸೇವೆಯು ಯಾವ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಒಳಗೊಂಡಿದೆ,
  • ಕ್ಲೈಂಟ್ ವೆಬ್ ಸೇವಾ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಹೇಗೆ ಕರೆಯಬೇಕು,
  • ಕ್ಲೈಂಟ್ ಕರೆಗಳನ್ನು ಯಾವ ವಿಳಾಸಕ್ಕೆ ಕಳುಹಿಸಬೇಕು.
ನೀವು ನೋಡುವಂತೆ, ಈ ಫೈಲ್ ಸಂಪೂರ್ಣ ವೆಬ್ ಸೇವೆಯಾಗಿದೆ. ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ WSDL ಫೈಲ್‌ನ ವಿಳಾಸವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಮೂಲಕ, ನಾವು ಯಾವುದೇ ವೆಬ್ ಸೇವೆಯ ಬಗ್ಗೆ ಎಲ್ಲವನ್ನೂ ತಿಳಿಯುತ್ತೇವೆ! ಪರಿಣಾಮವಾಗಿ, ವೆಬ್ ಸೇವೆಯು ಎಲ್ಲಿದೆ ಎಂಬುದರ ಕುರಿತು ನಾವು ಸಂಪೂರ್ಣವಾಗಿ ಏನನ್ನೂ ತಿಳಿದುಕೊಳ್ಳಬೇಕಾಗಿಲ್ಲ. ಅದರ WSDL ಫೈಲ್ ಇರುವ ಸ್ಥಳವನ್ನು ತಿಳಿದರೆ ಸಾಕು! SOAP ಚಿತ್ರಿಸಿದಷ್ಟು ಭಯಾನಕವಲ್ಲ ಎಂದು ಶೀಘ್ರದಲ್ಲೇ ನಾವು ಕಂಡುಕೊಳ್ಳುತ್ತೇವೆ (ಸಿ) ರಷ್ಯಾದ ಗಾದೆ.

3 XML ಸ್ಕೀಮಾ ಪರಿಚಯ

ಈಗ ನಾವು SOAP ಎಂದರೇನು, ಅದರೊಳಗೆ ಏನಿದೆ ಎಂಬುದರ ಕುರಿತು ನಮಗೆ ಸಾಕಷ್ಟು ತಿಳಿದಿದೆ ಮತ್ತು ಅದರ ಸುತ್ತಲೂ ಯಾವ ರೀತಿಯ ತಂತ್ರಜ್ಞಾನದ ಸ್ಟಾಕ್ ಇದೆ ಎಂಬುದರ ಅವಲೋಕನವನ್ನು ನಾವು ಹೊಂದಿದ್ದೇವೆ. ಮೊದಲನೆಯದಾಗಿ, SOAP ಕ್ಲೈಂಟ್ ಮತ್ತು ಸರ್ವರ್ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆಯ ವಿಧಾನವಾಗಿದೆ ಮತ್ತು XML ಮಾರ್ಕ್ಅಪ್ ಭಾಷೆಯನ್ನು ಅದರ ಸಾರಿಗೆಯಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ, XML ಸ್ಕೀಮಾಗಳ ಮೂಲಕ ಸ್ವಯಂಚಾಲಿತ ಡೇಟಾ ಮೌಲ್ಯೀಕರಣವು ಹೇಗೆ ಸಂಭವಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಈ ವಿಭಾಗದಲ್ಲಿ ನಾವು ಸ್ವಲ್ಪ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತೇವೆ.

ನಾವು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಹೊರಟಿರುವ ಡೇಟಾದ ರಚನೆಯನ್ನು ವಿವರಿಸುವುದು ಸ್ಕೀಮಾದ ಮುಖ್ಯ ಕಾರ್ಯವಾಗಿದೆ. XML ಸ್ಕೀಮಾಗಳಲ್ಲಿನ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ವಿಂಗಡಿಸಲಾಗಿದೆ ಸರಳ(ಸ್ಕೇಲಾರ್) ಮತ್ತು ಸಂಕೀರ್ಣ(ರಚನೆಗಳು) ವಿಧಗಳು. ಸರಳ ವಿಧಗಳು ಅಂತಹ ಪ್ರಕಾರಗಳನ್ನು ಒಳಗೊಂಡಿವೆ:

  • ಸಾಲು,
  • ಸಂಖ್ಯೆ,
  • ಬೂಲಿಯನ್,
  • ದಿನಾಂಕ.
ಒಳಗೆ ಯಾವುದೇ ವಿಸ್ತರಣೆಗಳಿಲ್ಲದ ಅತ್ಯಂತ ಸರಳವಾದದ್ದು. ಅವರ ಆಂಟಿಪೋಡ್ ಸಂಕೀರ್ಣ ಸಂಕೀರ್ಣ ವಿಧವಾಗಿದೆ. ಪ್ರತಿಯೊಬ್ಬರ ಮನಸ್ಸಿಗೆ ಬರುವ ಸಂಕೀರ್ಣ ಪ್ರಕಾರದ ಸರಳ ಉದಾಹರಣೆಯೆಂದರೆ ವಸ್ತುಗಳು. ಉದಾಹರಣೆಗೆ, ಒಂದು ಪುಸ್ತಕ. ಪುಸ್ತಕವು ಗುಣಲಕ್ಷಣಗಳನ್ನು ಒಳಗೊಂಡಿದೆ: ಲೇಖಕ, ಶೀರ್ಷಿಕೆ, ಬೆಲೆ, ISBN ಸಂಖ್ಯೆಇತ್ಯಾದಿ ಮತ್ತು ಈ ಗುಣಲಕ್ಷಣಗಳು, ಪ್ರತಿಯಾಗಿ, ಸರಳ ವಿಧಗಳು ಮತ್ತು ಸಂಕೀರ್ಣವಾದವುಗಳಾಗಿರಬಹುದು. ಮತ್ತು XML ಸ್ಕೀಮಾದ ಕಾರ್ಯವು ಅದನ್ನು ವಿವರಿಸುವುದು.

ನಮ್ಮ sms ಸಂದೇಶಕ್ಕಾಗಿ ಹೆಚ್ಚು ದೂರ ಹೋಗಿ XML ಸ್ಕೀಮಾವನ್ನು ಬರೆಯಬಾರದೆಂದು ನಾನು ಪ್ರಸ್ತಾಪಿಸುತ್ತೇನೆ! sms ಸಂದೇಶದ xml ವಿವರಣೆಯನ್ನು ಕೆಳಗೆ ನೀಡಲಾಗಿದೆ:

71239876543 ಪರೀಕ್ಷಾ ಸಂದೇಶ 2013-07-20T12:00:00 12
ನಮ್ಮ ಸಂಕೀರ್ಣ ಪ್ರಕಾರದ ಸ್ಕೀಮಾ ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:


ಈ ನಮೂದು ಈ ಕೆಳಗಿನಂತೆ ಓದುತ್ತದೆ: ನಾವು ವೇರಿಯಬಲ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ " ಸಂದೇಶ" ಮಾದರಿ " ಸಂದೇಶ"ಮತ್ತು ಒಂದು ಸಂಕೀರ್ಣ ಪ್ರಕಾರವಿದೆ" ಸಂದೇಶ", ಇದು ಅಂಶಗಳ ಅನುಕ್ರಮ ಗುಂಪನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ" ದೂರವಾಣಿ" ಮಾದರಿ ಸ್ಟ್ರಿಂಗ್, « ಪಠ್ಯ" ಮಾದರಿ ಸ್ಟ್ರಿಂಗ್, « ದಿನಾಂಕ" ಮಾದರಿ ದಿನಾಂಕ ಸಮಯ, « ಮಾದರಿ" ಮಾದರಿ ದಶಮಾಂಶ. ಈ ಪ್ರಕಾರಗಳು ಸರಳವಾಗಿದೆ ಮತ್ತು ಸ್ಕೀಮಾ ವ್ಯಾಖ್ಯಾನದಲ್ಲಿ ಈಗಾಗಲೇ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಅಭಿನಂದನೆಗಳು! ನಾವು ನಮ್ಮ ಮೊದಲ XML ಸ್ಕೀಮಾವನ್ನು ಬರೆದಿದ್ದೇವೆ!

ಅಂಶಗಳ ಅರ್ಥ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ " ಅಂಶ" ಮತ್ತು " ಸಂಕೀರ್ಣ ಪ್ರಕಾರ» ಎಲ್ಲವೂ ನಿಮಗೆ ಹೆಚ್ಚು ಕಡಿಮೆ ಸ್ಪಷ್ಟವಾಯಿತು, ಆದ್ದರಿಂದ ನಾವು ಇನ್ನು ಮುಂದೆ ಅವುಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುವುದಿಲ್ಲ ಮತ್ತು ತಕ್ಷಣವೇ ಸಂಯೋಜಕ ಅಂಶಕ್ಕೆ ಬದಲಾಯಿಸುತ್ತೇವೆ « ಅನುಕ್ರಮ". ನಾವು ಸಂಯೋಜಕ ಅಂಶವನ್ನು ಬಳಸುವಾಗ " ಅನುಕ್ರಮ» ಅದರಲ್ಲಿ ಸೇರಿಸಲಾದ ಅಂಶಗಳು ಯಾವಾಗಲೂ ಸ್ಕೀಮ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಅನುಕ್ರಮದಲ್ಲಿರಬೇಕು ಮತ್ತು ಅವೆಲ್ಲವೂ ಕಡ್ಡಾಯವಾಗಿದೆ ಎಂದು ನಾವು ನಿಮಗೆ ತಿಳಿಸುತ್ತೇವೆ. ಆದರೆ ಹತಾಶೆ ಮಾಡಬೇಡಿ! XML ಸ್ಕೀಮಾಗಳಲ್ಲಿ ಇನ್ನೂ ಎರಡು ಸಂಯೋಜಕ ಅಂಶಗಳಿವೆ: ಆಯ್ಕೆ" ಮತ್ತು " ಎಲ್ಲಾ". ಸಂಯೋಜಕ ಆಯ್ಕೆ"ಅದರಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾದ ಅಂಶಗಳಲ್ಲಿ ಒಂದನ್ನು ಮತ್ತು ಸಂಯೋಜಕ ಇರಬೇಕು ಎಂದು ಸೂಚಿಸುತ್ತದೆ" ಎಲ್ಲಾ»- ಪಟ್ಟಿ ಮಾಡಲಾದ ಅಂಶಗಳ ಯಾವುದೇ ಸಂಯೋಜನೆ.

ನಿಮಗೆ ನೆನಪಿರುವಂತೆ, ವಿಷಯದ ಮೊದಲ ವಿಭಾಗದಲ್ಲಿ, ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಒಂದರಿಂದ ಅನಂತ sms ಸಂದೇಶಗಳಿಗೆ ರವಾನಿಸಬಹುದು ಎಂದು ನಾವು ಒಪ್ಪಿಕೊಂಡಿದ್ದೇವೆ. ಆದ್ದರಿಂದ, XML ಸ್ಕೀಮಾದಲ್ಲಿ ಅಂತಹ ಡೇಟಾವನ್ನು ಹೇಗೆ ಘೋಷಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ನಾನು ಪ್ರಸ್ತಾಪಿಸುತ್ತೇನೆ. ಸಾಮಾನ್ಯ ಪ್ಯಾಕೇಜ್ ರಚನೆಯು ಈ ರೀತಿ ಕಾಣಿಸಬಹುದು:

71239876543 ಪರೀಕ್ಷಾ ಸಂದೇಶ 1 2013-07-20T12:00:00 12 71239876543 ಪರೀಕ್ಷಾ ಸಂದೇಶ ಎನ್ 2013-07-20T12:00:00 12
ಅಂತಹ ಸಂಕೀರ್ಣ ಪ್ರಕಾರದ ಸ್ಕೀಮಾ ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:


ಮೊದಲ ಬ್ಲಾಕ್ ಸಂಕೀರ್ಣ ಪ್ರಕಾರದ ಪರಿಚಿತ ಘೋಷಣೆಯನ್ನು ಒಳಗೊಂಡಿದೆ " ಸಂದೇಶ". ನೀವು ಗಮನಿಸಿದರೆ, ಪ್ರತಿ ಸರಳ ಪ್ರಕಾರದಲ್ಲಿ ಸೇರಿಸಲಾಗುತ್ತದೆ " ಸಂದೇಶ", ಹೊಸ ಅರ್ಹತಾ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ " ನಿಮಿಷ ಸಂಭವಿಸುತ್ತದೆ" ಮತ್ತು " ಗರಿಷ್ಠ ಸಂಭವಿಸುತ್ತದೆ". ಹೆಸರಿನಿಂದ ಊಹಿಸಲು ಕಷ್ಟವಾಗದ ಕಾರಣ, ಮೊದಲನೆಯದು ( ನಿಮಿಷ ಸಂಭವಿಸುತ್ತದೆ) ನೀಡಿರುವ ಅನುಕ್ರಮವು ಪ್ರಕಾರದ ಕನಿಷ್ಠ ಒಂದು ಅಂಶವನ್ನು ಹೊಂದಿರಬೇಕು ಎಂದು ಸೂಚಿಸುತ್ತದೆ " ದೂರವಾಣಿ», « ಪಠ್ಯ», « ದಿನಾಂಕ" ಮತ್ತು " ಮಾದರಿ”, ಮುಂದಿನ ಸಂದರ್ಭದಲ್ಲಿ ( ಗರಿಷ್ಠ ಸಂಭವಿಸುತ್ತದೆ) ಗುಣಲಕ್ಷಣವು ನಮ್ಮ ಅನುಕ್ರಮದಲ್ಲಿ ಅಂತಹ ಒಂದು ಅಂಶವಿದೆ ಎಂದು ನಮಗೆ ಘೋಷಿಸುತ್ತದೆ. ಪರಿಣಾಮವಾಗಿ, ನಾವು ಯಾವುದೇ ಡೇಟಾಕ್ಕಾಗಿ ನಮ್ಮ ಸ್ಕೀಮಾಗಳನ್ನು ಬರೆಯುವಾಗ, ಅವುಗಳನ್ನು ಹೇಗೆ ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು ಎಂಬುದರ ಕುರಿತು ನಮಗೆ ವಿಶಾಲವಾದ ಆಯ್ಕೆಯನ್ನು ನೀಡಲಾಗುತ್ತದೆ!

ಸ್ಕೀಮಾದ ಎರಡನೇ ಬ್ಲಾಕ್ ಅಂಶವನ್ನು ಘೋಷಿಸುತ್ತದೆ " ಸಂದೇಶ ಪಟ್ಟಿ" ಮಾದರಿ " ಸಂದೇಶ ಪಟ್ಟಿ". ಇದು ಸ್ಪಷ್ಟವಾಗಿದೆ " ಸಂದೇಶ ಪಟ್ಟಿ' ಕನಿಷ್ಠ ಒಂದು ಅಂಶವನ್ನು ಒಳಗೊಂಡಿರುವ ಒಂದು ಸಂಕೀರ್ಣ ಪ್ರಕಾರವಾಗಿದೆ ' ಸಂದೇಶ”, ಆದರೆ ಅಂತಹ ಅಂಶಗಳ ಗರಿಷ್ಠ ಸಂಖ್ಯೆ ಸೀಮಿತವಾಗಿಲ್ಲ!

4 ನಿಮ್ಮ WSDL ಬರೆಯುವುದು

WSDL ನಮ್ಮ ವೆಬ್ ಸೇವೆ ಎಂದು ನಿಮಗೆ ನೆನಪಿದೆಯೇ? ನಿಮಗೆ ನೆನಪಿದೆ ಎಂದು ಭಾವಿಸುತ್ತೇವೆ! ನಾವು ಅದನ್ನು ಬರೆಯುತ್ತಿದ್ದಂತೆ, ನಮ್ಮ ಪುಟ್ಟ ವೆಬ್ ಸೇವೆಯು ಅದರ ಮೇಲೆ ತೇಲುತ್ತದೆ. ಹಾಗಾಗಿ ಮೋಸ ಮಾಡಬೇಡಿ ಎಂದು ಸಲಹೆ ನೀಡುತ್ತೇನೆ.

ಸಾಮಾನ್ಯವಾಗಿ, ಎಲ್ಲವೂ ನಮಗೆ ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡಲು, ನಾವು ಕ್ಲೈಂಟ್‌ಗೆ ಸರಿಯಾದ MIME ಪ್ರಕಾರದೊಂದಿಗೆ WSDL ಫೈಲ್ ಅನ್ನು ವರ್ಗಾಯಿಸಬೇಕಾಗಿದೆ. ಇದನ್ನು ಮಾಡಲು, ನೀವು ನಿಮ್ಮ ವೆಬ್ ಸರ್ವರ್ ಅನ್ನು ಅದಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ, ಅವುಗಳೆಂದರೆ, *.wsdl ವಿಸ್ತರಣೆಯೊಂದಿಗೆ ಫೈಲ್‌ಗಳಿಗಾಗಿ MIME ಪ್ರಕಾರವನ್ನು ಈ ಕೆಳಗಿನ ಸಾಲಿಗೆ ಹೊಂದಿಸಿ:

ಅಪ್ಲಿಕೇಶನ್/wsdl+xml
ಆದರೆ ಪ್ರಾಯೋಗಿಕವಾಗಿ, ನಾನು ಸಾಮಾನ್ಯವಾಗಿ HTTP ಹೆಡರ್ ಅನ್ನು PHP ಮೂಲಕ ಕಳುಹಿಸಿದೆ " ಪಠ್ಯ/xml»:

ಶಿರೋಲೇಖ("ವಿಷಯ-ಪ್ರಕಾರ: ಪಠ್ಯ/xml; charset=utf-8");
ಮತ್ತು ಎಲ್ಲವೂ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡಿದೆ!

ನಾನು ಈಗಿನಿಂದಲೇ ನಿಮಗೆ ಎಚ್ಚರಿಕೆ ನೀಡಲು ಬಯಸುತ್ತೇನೆ, ನಮ್ಮ ಸರಳ ವೆಬ್ ಸೇವೆಯು ಹೆಚ್ಚು ಪ್ರಭಾವಶಾಲಿ ವಿವರಣೆಯನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಆದ್ದರಿಂದ ಗಾಬರಿಯಾಗಬೇಡಿ, ಏಕೆಂದರೆ. ಹೆಚ್ಚಿನ ಪಠ್ಯವು ಕಡ್ಡಾಯ ನೀರು ಮತ್ತು ಒಮ್ಮೆ ಬರೆದ ನಂತರ ಅದನ್ನು ನಿರಂತರವಾಗಿ ಒಂದು ವೆಬ್ ಸೇವೆಯಿಂದ ಇನ್ನೊಂದಕ್ಕೆ ನಕಲಿಸಬಹುದು!

WSDL XML ಆಗಿರುವುದರಿಂದ, ಮೊದಲ ಸಾಲಿನಲ್ಲಿ ನೀವು ಅದರ ಬಗ್ಗೆ ನೇರವಾಗಿ ಬರೆಯಬೇಕಾಗಿದೆ. ಫೈಲ್‌ನ ಮೂಲ ಅಂಶವನ್ನು ಯಾವಾಗಲೂ ಹೆಸರಿಸಬೇಕು " ವ್ಯಾಖ್ಯಾನಗಳು»:


ಸಾಮಾನ್ಯವಾಗಿ, WSDL 4-5 ಮುಖ್ಯ ಬ್ಲಾಕ್ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಮೊದಲ ಬ್ಲಾಕ್ ವೆಬ್ ಸೇವೆಯ ವ್ಯಾಖ್ಯಾನವಾಗಿದೆ, ಅಥವಾ ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಪ್ರವೇಶ ಬಿಂದು.


ನಾವು ಸೇವೆಯನ್ನು ಹೊಂದಿದ್ದೇವೆ ಎಂದು ಇಲ್ಲಿ ಹೇಳುತ್ತದೆ - " ಎಸ್ಎಂಎಸ್ ಸೇವೆ". ತಾತ್ವಿಕವಾಗಿ, WSDL ಫೈಲ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಹೆಸರುಗಳನ್ನು ನೀವು ಬಯಸಿದಂತೆ ಬದಲಾಯಿಸಬಹುದು, ಏಕೆಂದರೆ ಅವರು ಸಂಪೂರ್ಣವಾಗಿ ಯಾವುದೇ ಪಾತ್ರವನ್ನು ವಹಿಸುವುದಿಲ್ಲ.

ಅದರ ನಂತರ, ನಾವು ಅದನ್ನು ನಮ್ಮ ವೆಬ್ ಸೇವೆಯಲ್ಲಿ ಘೋಷಿಸುತ್ತೇವೆ " ಎಸ್ಎಂಎಸ್ ಸೇವೆ"ಎಂಟ್ರಿ ಪಾಯಿಂಟ್ ("ಪೋರ್ಟ್") ಇದೆ, ಅದನ್ನು "ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ SmsServicePort". ಈ ಪ್ರವೇಶ ಬಿಂದುವಿಗೆ ಕ್ಲೈಂಟ್‌ಗಳಿಂದ ಸರ್ವರ್‌ಗೆ ಎಲ್ಲಾ ವಿನಂತಿಗಳನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ಮತ್ತು ನಾವು ಅಂಶದಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತೇವೆ " ವಿಳಾಸ» ವಿನಂತಿಗಳನ್ನು ಸ್ವೀಕರಿಸುವ ಹ್ಯಾಂಡ್ಲರ್ ಫೈಲ್‌ಗೆ ಲಿಂಕ್.

ನಾವು ವೆಬ್ ಸೇವೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿದ ನಂತರ ಮತ್ತು ಅದಕ್ಕೆ ಪ್ರವೇಶ ಬಿಂದುವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ನಂತರ, ನಾವು ಅದಕ್ಕೆ ಬೆಂಬಲಿತ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಬಂಧಿಸುವ ಅಗತ್ಯವಿದೆ:


ಇದನ್ನು ಮಾಡಲು, ಇದು ಯಾವ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮತ್ತು ಯಾವ ರೂಪದಲ್ಲಿ y ಎಂದು ಕರೆಯಲ್ಪಡುತ್ತದೆ ಎಂಬುದನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ. ಆ. ಬಂದರಿಗಾಗಿ SmsServicePort"ಹೆಸರಿನ ಬೈಂಡಿಂಗ್" SmsServiceBinding", ಇದು ಕರೆ ಪ್ರಕಾರವನ್ನು ಹೊಂದಿದೆ" rpc” ಮತ್ತು HTTP ಅನ್ನು ವರ್ಗಾವಣೆ ಪ್ರೋಟೋಕಾಲ್ (ಸಾರಿಗೆ) ಆಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಹೀಗಾಗಿ, ನಾವು HTTP ಮೂಲಕ RPC ಕರೆಯನ್ನು ಮಾಡುತ್ತೇವೆ ಎಂದು ನಾವು ಇಲ್ಲಿ ಸೂಚಿಸಿದ್ದೇವೆ. ಅದರ ನಂತರ, ನಾವು ಯಾವ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ವಿವರಿಸುತ್ತೇವೆ ( ಕಾರ್ಯಾಚರಣೆ) ವೆಬ್ ಸೇವೆಯಲ್ಲಿ ಬೆಂಬಲಿತವಾಗಿದೆ. ನಾವು ಕೇವಲ ಒಂದು ಕಾರ್ಯವಿಧಾನವನ್ನು ಬೆಂಬಲಿಸುತ್ತೇವೆ - " SMS ಕಳುಹಿಸಿ". ಈ ಕಾರ್ಯವಿಧಾನದ ಮೂಲಕ, ನಮ್ಮ ಅದ್ಭುತ ಸಂದೇಶಗಳನ್ನು ಸರ್ವರ್‌ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ! ಕಾರ್ಯವಿಧಾನವನ್ನು ಘೋಷಿಸಿದ ನಂತರ, ಡೇಟಾವನ್ನು ಯಾವ ರೂಪದಲ್ಲಿ ರವಾನಿಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಸೂಚಿಸುವುದು ಅವಶ್ಯಕ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಪ್ರಮಾಣಿತ SOAP ಲಕೋಟೆಗಳನ್ನು ಬಳಸಲಾಗುವುದು ಎಂದು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ.

ಅದರ ನಂತರ, ನಾವು ಸಂದೇಶಗಳಿಗೆ ಕಾರ್ಯವಿಧಾನವನ್ನು ಬಂಧಿಸಬೇಕಾಗಿದೆ:


ಇದನ್ನು ಮಾಡಲು, ನಮ್ಮ ಬೈಂಡಿಂಗ್ ("ಬೈಂಡಿಂಗ್") "ಟೈಪ್" ಎಂದು ನಾವು ಸೂಚಿಸುತ್ತೇವೆ SmsServicePortType"ಮತ್ತು ಅಂಶದಲ್ಲಿ" ಪೋರ್ಟ್ಟೈಪ್»ಅದೇ ರೀತಿಯ ಹೆಸರಿನೊಂದಿಗೆ, ಸಂದೇಶಗಳಿಗೆ ಕಾರ್ಯವಿಧಾನಗಳ ಬೈಂಡಿಂಗ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ. ಆದ್ದರಿಂದ, ಒಳಬರುವ ಸಂದೇಶವನ್ನು (ಕ್ಲೈಂಟ್‌ನಿಂದ ಸರ್ವರ್‌ಗೆ) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ " sendSmsRequest", ಮತ್ತು ಹೊರಹೋಗುವ (ಸರ್ವರ್‌ನಿಂದ ಕ್ಲೈಂಟ್‌ಗೆ)" sendSmsResponse". WSDL ನಲ್ಲಿನ ಎಲ್ಲಾ ಹೆಸರುಗಳಂತೆ, ಒಳಬರುವ ಮತ್ತು ಹೊರಹೋಗುವ ಸಂದೇಶಗಳ ಹೆಸರುಗಳು ಅನಿಯಂತ್ರಿತವಾಗಿವೆ.

ಈಗ ನಾವು ಸಂದೇಶಗಳನ್ನು ಸ್ವತಃ ವಿವರಿಸಬೇಕಾಗಿದೆ, ಅಂದರೆ. ಒಳಬರುವ ಮತ್ತು ಹೊರಹೋಗುವ:


ಇದನ್ನು ಮಾಡಲು, ನಾವು ಅಂಶಗಳನ್ನು ಸೇರಿಸುತ್ತೇವೆ " ಸಂದೇಶ"ಹೆಸರುಗಳೊಂದಿಗೆ" sendSmsRequest" ಮತ್ತು " sendSmsResponse"ಕ್ರಮವಾಗಿ. ಅವುಗಳಲ್ಲಿ, ಇನ್ಪುಟ್ಗೆ ಹೊದಿಕೆ ಬರಬೇಕು ಎಂದು ನಾವು ಸೂಚಿಸುತ್ತೇವೆ, ಅದರ ರಚನೆಯು ಡೇಟಾ ಪ್ರಕಾರಕ್ಕೆ ಅನುರೂಪವಾಗಿದೆ " ವಿನಂತಿ". ಅದರ ನಂತರ, ಡೇಟಾ ಪ್ರಕಾರವನ್ನು ಹೊಂದಿರುವ ಲಕೋಟೆಯನ್ನು ಸರ್ವರ್‌ನಿಂದ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ - " ಪ್ರತಿಕ್ರಿಯೆ».

ಈಗ ನಾವು ಸ್ವಲ್ಪ ಮಾಡಬೇಕಾಗಿದೆ - ನಮ್ಮ WSDL ಫೈಲ್‌ಗೆ ಈ ಪ್ರಕಾರಗಳ ವಿವರಣೆಯನ್ನು ಸೇರಿಸಿ! ಮತ್ತು WSDL ಒಳಬರುವ ಮತ್ತು ಹೊರಹೋಗುವ ಡೇಟಾವನ್ನು ಹೇಗೆ ವಿವರಿಸುತ್ತದೆ ಎಂದು ನೀವು ಯೋಚಿಸುತ್ತೀರಿ? ನೀವು ದೀರ್ಘಕಾಲದವರೆಗೆ ಎಲ್ಲವನ್ನೂ ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೀರಿ ಮತ್ತು XML ಸ್ಕೀಮಾಗಳ ಸಹಾಯದಿಂದ ನೀವೇ ಹೇಳಿದ್ದೀರಿ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ! ಮತ್ತು ನೀವು ಸಂಪೂರ್ಣವಾಗಿ ಸರಿಯಾಗುತ್ತೀರಿ!


ನೀವು ನಮ್ಮನ್ನು ಅಭಿನಂದಿಸಬಹುದು! ನಮ್ಮ ಮೊದಲ WSDL ಅನ್ನು ಬರೆಯಲಾಗಿದೆ! ಮತ್ತು ನಮ್ಮ ಗುರಿಯನ್ನು ಸಾಧಿಸಲು ನಾವು ಒಂದು ಹೆಜ್ಜೆ ಹತ್ತಿರವಾಗಿದ್ದೇವೆ.
ಮುಂದೆ, ನಮ್ಮ ಸ್ವಂತ ವಿತರಿಸಿದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು PHP ನಮಗೆ ಏನನ್ನು ಒದಗಿಸುತ್ತದೆ ಎಂಬುದರ ಕುರಿತು ನಾವು ವ್ಯವಹರಿಸುತ್ತೇವೆ.

5 ನಮ್ಮ ಮೊದಲ SOAP ಸರ್ವರ್

PHP ಯಲ್ಲಿ SOAP ಸರ್ವರ್ ರಚಿಸಲು, ನಾವು ಅಂತರ್ನಿರ್ಮಿತ SoapServer ವರ್ಗವನ್ನು ಬಳಸುತ್ತೇವೆ ಎಂದು ನಾನು ಮೊದಲು ಬರೆದಿದ್ದೇನೆ. ಎಲ್ಲಾ ಮುಂದಿನ ಕ್ರಿಯೆಗಳು ನನ್ನಂತೆಯೇ ಸಂಭವಿಸಲು, ನೀವು ನಿಮ್ಮ PHP ಅನ್ನು ಸ್ವಲ್ಪಮಟ್ಟಿಗೆ ತಿರುಚಬೇಕಾಗುತ್ತದೆ. ಇನ್ನೂ ಹೆಚ್ಚು ನಿಖರವಾಗಿರಲು, ನೀವು "php-soap" ವಿಸ್ತರಣೆಯನ್ನು ಸ್ಥಾಪಿಸಿರುವಿರಿ ಎಂದು ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು. ನಿಮ್ಮ ವೆಬ್ ಸರ್ವರ್‌ನಲ್ಲಿ ಅದನ್ನು ಹೇಗೆ ಹಾಕುವುದು ಎಂಬುದನ್ನು ಅಧಿಕೃತ PHP ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿ ಉತ್ತಮವಾಗಿ ಓದಬಹುದು (ಉಲ್ಲೇಖಗಳನ್ನು ನೋಡಿ).

ಎಲ್ಲವನ್ನೂ ಸ್ಥಾಪಿಸಿದ ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ ನಂತರ, ನಾವು ಫೈಲ್ ಅನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ " smsservice.php» ಕೆಳಗಿನ ವಿಷಯದೊಂದಿಗೆ:

setClass ("SoapSmsGateWay"); //ಸರ್ವರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ $server->ಹ್ಯಾಂಡಲ್();
“ini_set” ಫಂಕ್ಷನ್‌ನೊಂದಿಗೆ ರೇಖೆಯ ಮೇಲೆ ಏನಿದೆ, ವಿವರಿಸುವ ಅಗತ್ಯವಿಲ್ಲ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. ಏಕೆಂದರೆ ಇದು ನಾವು ಸರ್ವರ್‌ನಿಂದ ಕ್ಲೈಂಟ್‌ಗೆ ಯಾವ HTTP ಹೆಡರ್‌ಗಳನ್ನು ಕಳುಹಿಸುತ್ತೇವೆ ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತದೆ ಮತ್ತು ಪರಿಸರವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತದೆ. "ini_set" ಸಾಲಿನಲ್ಲಿ, ನಾವು WSDL ಫೈಲ್‌ನ ಕ್ಯಾಶಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತೇವೆ ಇದರಿಂದ ನಮ್ಮ ಬದಲಾವಣೆಗಳು ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ತಕ್ಷಣವೇ ಪರಿಣಾಮ ಬೀರುತ್ತವೆ.

ಈಗ ನಾವು ಸರ್ವರ್‌ಗೆ ಬರುತ್ತೇವೆ! ನೀವು ನೋಡುವಂತೆ, ಸಂಪೂರ್ಣ SOAP ಸರ್ವರ್ ಕೇವಲ ಮೂರು ಸಾಲುಗಳ ಉದ್ದವಾಗಿದೆ! ಮೊದಲ ಸಾಲಿನಲ್ಲಿ, ನಾವು SoapServer ಆಬ್ಜೆಕ್ಟ್‌ನ ಹೊಸ ನಿದರ್ಶನವನ್ನು ರಚಿಸುತ್ತೇವೆ ಮತ್ತು ನಮ್ಮ WSDL ವೆಬ್ ಸೇವಾ ವಿವರಣೆಯ ವಿಳಾಸವನ್ನು ಅದರ ಕನ್‌ಸ್ಟ್ರಕ್ಟರ್‌ಗೆ ರವಾನಿಸುತ್ತೇವೆ. ಹೇಳುವ ಹೆಸರಿನೊಂದಿಗೆ ಫೈಲ್‌ನಲ್ಲಿ ಹೋಸ್ಟಿಂಗ್ ರೂಟ್‌ನಲ್ಲಿ ಅದು ಇದೆ ಎಂದು ಈಗ ನಮಗೆ ತಿಳಿದಿದೆ " smsservice.wsdl.php". ಎರಡನೇ ಸಾಲಿನಲ್ಲಿ, ಕ್ಲೈಂಟ್‌ನಿಂದ ಸ್ವೀಕರಿಸಿದ ಲಕೋಟೆಯನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆಯೊಂದಿಗೆ ಲಕೋಟೆಯನ್ನು ಹಿಂತಿರುಗಿಸಲು ಯಾವ ವರ್ಗವನ್ನು ಎಳೆಯಬೇಕು ಎಂದು ನಾವು SOAP ಸರ್ವರ್‌ಗೆ ಹೇಳುತ್ತೇವೆ. ನೀವು ಊಹಿಸಿದಂತೆ, ಈ ವರ್ಗದಲ್ಲಿ ನಮ್ಮ ಏಕೈಕ ವಿಧಾನವನ್ನು ವಿವರಿಸಲಾಗುವುದು. SMS ಕಳುಹಿಸಿ. ಮೂರನೇ ಸಾಲಿನಲ್ಲಿ ನಾವು ಸರ್ವರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ! ಎಲ್ಲವೂ, ನಮ್ಮ ಸರ್ವರ್ ಸಿದ್ಧವಾಗಿದೆ! ಇದರೊಂದಿಗೆ ನಾನು ನಮ್ಮೆಲ್ಲರನ್ನೂ ಅಭಿನಂದಿಸುತ್ತೇನೆ!

ಈಗ ನಾವು WSDL ಫೈಲ್ ಅನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ. ಇದನ್ನು ಮಾಡಲು, ನೀವು ಹಿಂದಿನ ವಿಭಾಗದಿಂದ ಅದರ ವಿಷಯಗಳನ್ನು ಸರಳವಾಗಿ ನಕಲಿಸಬಹುದು, ಅಥವಾ ಸ್ವಾತಂತ್ರ್ಯವನ್ನು ತೆಗೆದುಕೊಂಡು ಅದನ್ನು ಸ್ವಲ್ಪ "ಟೆಂಪ್ಲೇಟ್" ಮಾಡಬಹುದು:

"; ?> /" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http:// schemas.xmlsoap.org/wsdl/http/" name="SmsWsdl" xmlns="http://schemas.xmlsoap.org/wsdl/"> /"> /smsservice.php" />
ಈ ಹಂತದಲ್ಲಿ, ಪರಿಣಾಮವಾಗಿ ಸರ್ವರ್ ನಮಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಸರಿಹೊಂದಬೇಕು, ಏಕೆಂದರೆ. ನಾವು ಅದಕ್ಕೆ ಬರುವ ಲಕೋಟೆಗಳನ್ನು ಲಾಗ್ ಮಾಡಬಹುದು ಮತ್ತು ನಂತರ ಒಳಬರುವ ಡೇಟಾವನ್ನು ಶಾಂತವಾಗಿ ವಿಶ್ಲೇಷಿಸಬಹುದು. ನಾವು ಸರ್ವರ್‌ನಲ್ಲಿ ಏನನ್ನಾದರೂ ಸ್ವೀಕರಿಸಲು, ನಮಗೆ ಕ್ಲೈಂಟ್ ಅಗತ್ಯವಿದೆ. ಆದ್ದರಿಂದ ನಾವು ಅವರೊಂದಿಗೆ ಮುಂದುವರಿಯೋಣ!

6 SOAP ಕ್ಲೈಂಟ್ ದಾರಿಯಲ್ಲಿದೆ

ಮೊದಲನೆಯದಾಗಿ, ನಾವು ಕ್ಲೈಂಟ್ ಅನ್ನು ಬರೆಯುವ ಫೈಲ್ ಅನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ. ಎಂದಿನಂತೆ, ನಾವು ಅದನ್ನು ಹೋಸ್ಟ್‌ನ ಮೂಲದಲ್ಲಿ ರಚಿಸುತ್ತೇವೆ ಮತ್ತು ಅದನ್ನು ಕರೆಯುತ್ತೇವೆ " client.php", ಮತ್ತು ಒಳಗೆ ನಾವು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಬರೆಯುತ್ತೇವೆ:

ಸಂದೇಶಪಟ್ಟಿ = ಹೊಸ ಸಂದೇಶ ಪಟ್ಟಿ(); $req->messageList->ಸಂದೇಶ = ಹೊಸ ಸಂದೇಶ(); $req->messageList->message->phone = "79871234567"; $req->messageList->message->text = "ಟೆಸ್ಟ್ ಸಂದೇಶ 1"; $req->messageList->message->date = "2013-07-21T15:00:00.26"; $req->messageList->message->type = 15; $client = ಹೊಸ SoapClient("http://($_SERVER["HTTP_HOST"])/smsservice.wsdl.php", array("soap_version" => SOAP_1_2)); var_dump($client->sendSms($req));
ನಮ್ಮ ವಸ್ತುಗಳನ್ನು ವಿವರಿಸೋಣ. ನಾವು WSDL ಅನ್ನು ಬರೆದಾಗ, ಸರ್ವರ್‌ಗೆ ಪ್ರವೇಶಿಸುವ ಹೊದಿಕೆಗಾಗಿ ಮೂರು ಘಟಕಗಳನ್ನು ವಿವರಿಸಲಾಗಿದೆ: ವಿನಂತಿ, ಸಂದೇಶ ಪಟ್ಟಿಮತ್ತು ಸಂದೇಶ. ಅದರಂತೆ, ತರಗತಿಗಳು ವಿನಂತಿ, ಸಂದೇಶ ಪಟ್ಟಿಮತ್ತು ಸಂದೇಶನಮ್ಮ PHP ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಈ ಘಟಕಗಳ ಪ್ರತಿಬಿಂಬಗಳಾಗಿವೆ.

ನಾವು ವಸ್ತುಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿದ ನಂತರ, ನಾವು ಒಂದು ವಸ್ತುವನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ ( $req), ಇದನ್ನು ಸರ್ವರ್‌ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ನಂತರ ನಮಗೆ ಎರಡು ಅತ್ಯಂತ ಪಾಲಿಸಬೇಕಾದ ಸಾಲುಗಳು ಬನ್ನಿ! ನಮ್ಮ SOAP ಕ್ಲೈಂಟ್! ಇದನ್ನು ನಂಬಿರಿ ಅಥವಾ ಇಲ್ಲ, ಆದರೆ ನಮ್ಮ ಸರ್ವರ್‌ಗೆ ಕ್ಲೈಂಟ್‌ನಿಂದ ಸಂದೇಶಗಳನ್ನು ಸುರಿಯಲು ಪ್ರಾರಂಭಿಸಲು ಇದು ಸಾಕು, ಹಾಗೆಯೇ ನಮ್ಮ ಸರ್ವರ್ ಅವುಗಳನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸ್ವೀಕರಿಸಲು ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು! ಅವುಗಳಲ್ಲಿ ಮೊದಲನೆಯದರಲ್ಲಿ, ನಾವು SoapClient ವರ್ಗದ ಉದಾಹರಣೆಯನ್ನು ರಚಿಸುತ್ತೇವೆ ಮತ್ತು WSDL ಫೈಲ್‌ನ ಸ್ಥಳದ ವಿಳಾಸವನ್ನು ಅದರ ಕನ್‌ಸ್ಟ್ರಕ್ಟರ್‌ಗೆ ರವಾನಿಸುತ್ತೇವೆ ಮತ್ತು SOAP ಪ್ರೋಟೋಕಾಲ್ ಆವೃತ್ತಿ 1.2 ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಕೆಲಸ ಮಾಡುತ್ತೇವೆ ಎಂದು ನಿಯತಾಂಕಗಳಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗಿ ಸೂಚಿಸುತ್ತೇವೆ. ಮುಂದಿನ ಸಾಲಿನಲ್ಲಿ ನಾವು ವಿಧಾನವನ್ನು ಕರೆಯುತ್ತೇವೆ SMS ಕಳುಹಿಸಿವಸ್ತು $ ಕ್ಲೈಂಟ್ಮತ್ತು ತಕ್ಷಣವೇ ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಫಲಿತಾಂಶವನ್ನು ಪ್ರದರ್ಶಿಸಿ.
ಅದನ್ನು ಚಲಾಯಿಸೋಣ ಮತ್ತು ನಾವು ಅಂತಿಮವಾಗಿ ಏನನ್ನು ಪಡೆದುಕೊಂಡಿದ್ದೇವೆ ಎಂಬುದನ್ನು ನೋಡೋಣ!

ನಾನು ಸರ್ವರ್‌ನಿಂದ ಈ ಕೆಳಗಿನ ವಸ್ತುವನ್ನು ಸ್ವೀಕರಿಸಿದ್ದೇನೆ:

ಆಬ್ಜೆಕ್ಟ್(stdClass) ಸಾರ್ವಜನಿಕ "ಸ್ಥಿತಿ" => ಬೂಲಿಯನ್ ನಿಜ
ಮತ್ತು ಇದು ಅದ್ಭುತವಾಗಿದೆ, ಏಕೆಂದರೆ. ಈಗ ನಮ್ಮ ಸರ್ವರ್ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಮತ್ತು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂದು ನಮಗೆ ಖಚಿತವಾಗಿ ತಿಳಿದಿದೆ, ಆದರೆ ಕ್ಲೈಂಟ್‌ಗೆ ಕೆಲವು ಮೌಲ್ಯಗಳನ್ನು ಹಿಂತಿರುಗಿಸಬಹುದು!

ಈಗ ನಾವು ಸರ್ವರ್ ಬದಿಯಲ್ಲಿ ವಿವೇಕದಿಂದ ಇಡುವ ಲಾಗ್ ಅನ್ನು ನೋಡೋಣ! ಅದರ ಮೊದಲ ಭಾಗದಲ್ಲಿ, ಸರ್ವರ್ ಅನ್ನು ನಮೂದಿಸಿದ ಕಚ್ಚಾ ಡೇಟಾವನ್ನು ನಾವು ನೋಡುತ್ತೇವೆ:

79871234567 ಪರೀಕ್ಷಾ ಸಂದೇಶ 1 2013-07-21T15:00:00.26 15
ಇದು ಹೊದಿಕೆ. ಅದು ಹೇಗೆ ಕಾಣುತ್ತದೆ ಎಂದು ಈಗ ನಿಮಗೆ ತಿಳಿದಿದೆ! ಆದರೆ ಅದನ್ನು ನಿರಂತರವಾಗಿ ಮೆಚ್ಚಿಸಲು ನಾವು ಆಸಕ್ತಿ ಹೊಂದಲು ಅಸಂಭವವಾಗಿದೆ, ಆದ್ದರಿಂದ ಲಾಗ್ ಫೈಲ್‌ನಿಂದ ವಸ್ತುವನ್ನು ನಿರ್ಮೂಲನೆ ಮಾಡೋಣ ಮತ್ತು ಎಲ್ಲವೂ ನಮ್ಮೊಂದಿಗೆ ಉತ್ತಮವಾಗಿದೆಯೇ ಎಂದು ನೋಡೋಣ:

ಆಬ್ಜೆಕ್ಟ್(stdClass) ಸಾರ್ವಜನಿಕ "messageList" => ವಸ್ತು (stdClass) ಸಾರ್ವಜನಿಕ "ಸಂದೇಶ" => ವಸ್ತು (stdClass) ಸಾರ್ವಜನಿಕ "ಫೋನ್" => ಸ್ಟ್ರಿಂಗ್ "79871234567" (ಉದ್ದ = 11) ಸಾರ್ವಜನಿಕ "ಪಠ್ಯ" => ಸ್ಟ್ರಿಂಗ್ "ಪರೀಕ್ಷಾ ಸಂದೇಶ 1 " (ಉದ್ದ = 37) ಸಾರ್ವಜನಿಕ "ದಿನಾಂಕ" => ಸ್ಟ್ರಿಂಗ್ "2013-07-21T15:00:00.26" (ಉದ್ದ = 22) ಸಾರ್ವಜನಿಕ "ಪ್ರಕಾರ" => ಸ್ಟ್ರಿಂಗ್ "15" (ಉದ್ದ =2)
ನೀವು ನೋಡುವಂತೆ, ವಸ್ತುವನ್ನು ಸರಿಯಾಗಿ ಡಿಸರಿಯಲೈಸ್ ಮಾಡಲಾಗಿದೆ, ಅದರೊಂದಿಗೆ ನಾನು ನಮ್ಮೆಲ್ಲರನ್ನು ಅಭಿನಂದಿಸಲು ಬಯಸುತ್ತೇನೆ! ಮುಂದೆ, ಹೆಚ್ಚು ಆಸಕ್ತಿದಾಯಕ ಏನೋ ನಮಗೆ ಕಾಯುತ್ತಿದೆ! ಅವುಗಳೆಂದರೆ, ನಾವು ಕ್ಲೈಂಟ್‌ನಿಂದ ಸರ್ವರ್‌ಗೆ ಒಂದು sms-ಸಂದೇಶವಲ್ಲ, ಆದರೆ ಸಂಪೂರ್ಣ ಪ್ಯಾಕ್ ಅನ್ನು ಕಳುಹಿಸುತ್ತೇವೆ (ಹೆಚ್ಚು ನಿಖರವಾಗಿ ಹೇಳಬೇಕೆಂದರೆ, ಮೂರು ಸಂಪೂರ್ಣ)!

7 ಸಂಕೀರ್ಣ ವಸ್ತುಗಳನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ

ಒಂದು ಪ್ಯಾಕೇಜ್‌ನಲ್ಲಿ ನಾವು ಸರ್ವರ್‌ಗೆ ಸಂಪೂರ್ಣ ಸಂದೇಶಗಳನ್ನು ಹೇಗೆ ಕಳುಹಿಸಬಹುದು ಎಂಬುದರ ಕುರಿತು ಯೋಚಿಸೋಣ? ಬಹುಶಃ ಸುಲಭವಾದ ಮಾರ್ಗವೆಂದರೆ ಸಂದೇಶಪಟ್ಟಿ ಅಂಶದೊಳಗೆ ಒಂದು ಶ್ರೇಣಿಯನ್ನು ಸಂಘಟಿಸುವುದು! ಅದನ್ನು ಮಾಡೋಣ:

// ಸರ್ವರ್‌ಗೆ ಕಳುಹಿಸಲು ವಸ್ತುವನ್ನು ರಚಿಸಿ $req = ಹೊಸ ವಿನಂತಿ(); $req->messageList = ಹೊಸ MessageList(); $msg1 = ಹೊಸ ಸಂದೇಶ(); $msg1->ಫೋನ್ = "79871234567"; $msg1->ಪಠ್ಯ = "ಪರೀಕ್ಷಾ ಸಂದೇಶ 1"; $msg1->ದಿನಾಂಕ = "2013-07-21T15:00:00.26"; $msg1->ಪ್ರಕಾರ = 15; $msg2 = ಹೊಸ ಸಂದೇಶ(); $msg2->ಫೋನ್ = "79871234567"; $msg2->ಪಠ್ಯ = "ಪರೀಕ್ಷಾ ಸಂದೇಶ 2"; $msg2->ದಿನಾಂಕ = "2014-08-22T16:01:10"; $msg2->ಪ್ರಕಾರ = 16; $msg3 = ಹೊಸ ಸಂದೇಶ(); $msg3->ಫೋನ್ = "79871234567"; $msg3->ಪಠ್ಯ = "ಪರೀಕ್ಷಾ ಸಂದೇಶ 3"; $msg3->ದಿನಾಂಕ = "2014-08-22T16:01:10"; $msg3->ಪ್ರಕಾರ = 17; $req->messageList->ಸಂದೇಶ = $msg1; $req->messageList->ಸಂದೇಶ = $msg2; $req->messageList->message = $msg3;
ಕೆಳಗಿನ ಪ್ಯಾಕೆಟ್ ಕ್ಲೈಂಟ್‌ನಿಂದ ಬಂದಿದೆ ಎಂದು ನಮ್ಮ ಲಾಗ್‌ಗಳು ತೋರಿಸುತ್ತವೆ:

79871234567 ಪರೀಕ್ಷಾ ಸಂದೇಶ 1 2013-07-21T15:00:00.26 15 79871234567 ಪರೀಕ್ಷಾ ಸಂದೇಶ 2 2014-08-22T16:01:10 16 79871234567 ಪರೀಕ್ಷಾ ಸಂದೇಶ 3 2014-08-22T16:01:10 17
ಏನು ಅಸಂಬದ್ಧ, ನೀವು ಹೇಳುತ್ತೀರಿ? ಮತ್ತು ನೀವು ಒಂದು ಅರ್ಥದಲ್ಲಿ ಸರಿಯಾಗಿರುತ್ತೀರಿ, ಏಕೆಂದರೆ. ಕ್ಲೈಂಟ್‌ನಿಂದ ಯಾವ ವಸ್ತುವು ಬಿಟ್ಟಿದೆ ಎಂದು ನಾವು ಕಲಿತಂತೆಯೇ, ಅದು ನಮ್ಮ ಸರ್ವರ್‌ಗೆ ಲಕೋಟೆಯ ರೂಪದಲ್ಲಿ ನಿಖರವಾಗಿ ಅದೇ ರೂಪದಲ್ಲಿ ಬಂದಿತು. ನಿಜ, sms ಸಂದೇಶಗಳನ್ನು ನಮಗೆ ಅಗತ್ಯವಿರುವ ರೀತಿಯಲ್ಲಿ XML ನಲ್ಲಿ ಧಾರಾವಾಹಿಯಾಗಿ ಮಾಡಲಾಗಿಲ್ಲ - ಅವುಗಳನ್ನು ಅಂಶಗಳಲ್ಲಿ ಸುತ್ತಿಡಬೇಕಾಗಿತ್ತು ಸಂದೇಶ, ಒಳಗೆ ಇಲ್ಲ ಸ್ಟ್ರಕ್ಟ್. ಅಂತಹ ವಸ್ತುವು ಯಾವ ರೂಪದಲ್ಲಿ ವಿಧಾನಕ್ಕೆ ಬರುತ್ತದೆ ಎಂದು ಈಗ ನೋಡೋಣ SMS ಕಳುಹಿಸಿ:

ಆಬ್ಜೆಕ್ಟ್(stdClass) ಸಾರ್ವಜನಿಕ "messageList" => ವಸ್ತು (stdClass) ಸಾರ್ವಜನಿಕ "ಸಂದೇಶ" => ವಸ್ತು (stdClass) ಸಾರ್ವಜನಿಕ "ಸ್ಟ್ರಕ್ಟ್" => ಅರೇ (ಗಾತ್ರ = 3) 0 => ವಸ್ತು (stdClass) ಸಾರ್ವಜನಿಕ "ಫೋನ್" => ಸ್ಟ್ರಿಂಗ್ "79871234567" (ಉದ್ದ = 11) ಸಾರ್ವಜನಿಕ "ಪಠ್ಯ" => ಸ್ಟ್ರಿಂಗ್ "ಟೆಸ್ಟ್ ಸಂದೇಶ 1" (ಉದ್ದ = 37) ಸಾರ್ವಜನಿಕ "ದಿನಾಂಕ" => ಸ್ಟ್ರಿಂಗ್ "2013-07-21T15:00:00.26" (ಉದ್ದ = 22) ಸಾರ್ವಜನಿಕ " ಪ್ರಕಾರ 37) ಸಾರ್ವಜನಿಕ "ದಿನಾಂಕ" => ಸ್ಟ್ರಿಂಗ್ "2014-08-22T16:01:10" (ಉದ್ದ = 19) ಸಾರ್ವಜನಿಕ "ಪ್ರಕಾರ" => ಸ್ಟ್ರಿಂಗ್ "16" (ಉದ್ದ = 2) 2 => ವಸ್ತು(stdClass) ಸಾರ್ವಜನಿಕ "ಫೋನ್ " => ಸ್ಟ್ರಿಂಗ್ "79871234567" (ಉದ್ದ = 11) ಸಾರ್ವಜನಿಕ "ಪಠ್ಯ" => ಸ್ಟ್ರಿಂಗ್ "ಟೆಸ್ಟ್ ಸಂದೇಶ 3" (ಉದ್ದ = 37) ಸಾರ್ವಜನಿಕ "ದಿನಾಂಕ" => ಸ್ಟ್ರಿಂಗ್ "2014-08-22T16:01:10" (ಉದ್ದ = 19) ಸಾರ್ವಜನಿಕ "ಪ್ರಕಾರ" => ಸ್ಟ್ರಿಂಗ್ "17" (ಉದ್ದ = 2)
ಈ ಜ್ಞಾನವು ನಮಗೆ ಏನು ನೀಡುತ್ತದೆ? ನಾವು ಆಯ್ಕೆ ಮಾಡಿದ ಮಾರ್ಗವು ಸರಿಯಾಗಿಲ್ಲ ಮತ್ತು ನಾವು ಪ್ರಶ್ನೆಗೆ ಉತ್ತರವನ್ನು ಸ್ವೀಕರಿಸಿಲ್ಲ - “ಸರ್ವರ್‌ನಲ್ಲಿ ನಾವು ಸರಿಯಾದ ಡೇಟಾ ರಚನೆಯನ್ನು ಹೇಗೆ ಪಡೆಯಬಹುದು?”. ಆದರೆ ಹತಾಶೆ ಮಾಡದಿರಲು ನಾನು ಸಲಹೆ ನೀಡುತ್ತೇನೆ ಮತ್ತು ನಮ್ಮ ಶ್ರೇಣಿಯನ್ನು ಪ್ರಕಾರಕ್ಕೆ ಬಿತ್ತರಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ ಒಂದು ವಸ್ತು:

$req->messageList->message = (ವಸ್ತು)$req->messageList->ಸಂದೇಶ;
ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು ಇನ್ನೊಂದು ಲಕೋಟೆಯನ್ನು ಸ್ವೀಕರಿಸುತ್ತೇವೆ:

79871234567 ಪರೀಕ್ಷಾ ಸಂದೇಶ 1 2013-07-21T15:00:00.26 15 79871234567 ಪರೀಕ್ಷಾ ಸಂದೇಶ 2 2014-08-22T16:01:10 16 79871234567 ಪರೀಕ್ಷಾ ಸಂದೇಶ 3 2014-08-22T16:01:10 17
ವಿಧಾನಕ್ಕೆ ಬಂದರು SMS ಕಳುಹಿಸಿವಸ್ತುವು ಈ ಕೆಳಗಿನ ರಚನೆಯನ್ನು ಹೊಂದಿದೆ:

ಆಬ್ಜೆಕ್ಟ್(stdClass) ಸಾರ್ವಜನಿಕ "messageList" => ವಸ್ತು (stdClass) ಸಾರ್ವಜನಿಕ "ಸಂದೇಶ" => ವಸ್ತು (stdClass) ಸಾರ್ವಜನಿಕ "BOGUS" => ರಚನೆ (ಗಾತ್ರ=3) 0 => ವಸ್ತು(stdClass) ಸಾರ್ವಜನಿಕ "ಫೋನ್" => ಸ್ಟ್ರಿಂಗ್ "79871234567" (ಉದ್ದ = 11) ಸಾರ್ವಜನಿಕ "ಪಠ್ಯ" => ಸ್ಟ್ರಿಂಗ್ "ಟೆಸ್ಟ್ ಸಂದೇಶ 1" (ಉದ್ದ = 37) ಸಾರ್ವಜನಿಕ "ದಿನಾಂಕ" => ಸ್ಟ್ರಿಂಗ್ "2013-07-21T15:00:00.26" (ಉದ್ದ = 22) ಸಾರ್ವಜನಿಕ " ಪ್ರಕಾರ 37) ಸಾರ್ವಜನಿಕ "ದಿನಾಂಕ" => ಸ್ಟ್ರಿಂಗ್ "2014-08-22T16:01:10" (ಉದ್ದ = 19) ಸಾರ್ವಜನಿಕ "ಪ್ರಕಾರ" => ಸ್ಟ್ರಿಂಗ್ "16" (ಉದ್ದ = 2) 2 => ವಸ್ತು(stdClass) ಸಾರ್ವಜನಿಕ "ಫೋನ್ " => ಸ್ಟ್ರಿಂಗ್ "79871234567" (ಉದ್ದ = 11) ಸಾರ್ವಜನಿಕ "ಪಠ್ಯ" => ಸ್ಟ್ರಿಂಗ್ "ಟೆಸ್ಟ್ ಸಂದೇಶ 3" (ಉದ್ದ = 37) ಸಾರ್ವಜನಿಕ "ದಿನಾಂಕ" => ಸ್ಟ್ರಿಂಗ್ "2014-08-22T16:01:10" (ಉದ್ದ = 19) ಸಾರ್ವಜನಿಕ "ಪ್ರಕಾರ" => ಸ್ಟ್ರಿಂಗ್ "17" (ಉದ್ದ = 2)
ನನ್ನಂತೆ, ನಂತರ "ನಿಯಮಗಳ ಸ್ಥಳಗಳಲ್ಲಿನ ಬದಲಾವಣೆಯಿಂದ, ಮೊತ್ತವು ಬದಲಾಗುವುದಿಲ್ಲ" (ಸಿ). ಏನು ಬೋಗಸ್, ಏನು ಸ್ಟ್ರಕ್ಟ್ನಾವು ಇನ್ನೂ ನಮ್ಮ ಗುರಿಯನ್ನು ತಲುಪಿಲ್ಲ! ಮತ್ತು ಅದನ್ನು ಸಾಧಿಸಲು, ಈ ಗ್ರಹಿಸಲಾಗದ ಹೆಸರುಗಳ ಬದಲಿಗೆ, ನಮ್ಮ ಸ್ಥಳೀಯ ಎಂದು ನಾವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು ಸಂದೇಶ. ಆದರೆ ಇದನ್ನು ಹೇಗೆ ಸಾಧಿಸುವುದು, ಲೇಖಕರಿಗೆ ಇನ್ನೂ ತಿಳಿದಿಲ್ಲ. ಆದ್ದರಿಂದ, ನಾವು ಮಾಡಬಹುದಾದ ಏಕೈಕ ವಿಷಯವೆಂದರೆ ಹೆಚ್ಚುವರಿ ಧಾರಕವನ್ನು ತೊಡೆದುಹಾಕುವುದು. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ನಾವು ಈಗ ಅದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುತ್ತೇವೆ ಸಂದೇಶಆಯಿತು ಬೋಗಸ್! ಇದನ್ನು ಮಾಡಲು, ವಸ್ತುವನ್ನು ಈ ಕೆಳಗಿನಂತೆ ಬದಲಾಯಿಸಿ:

// ಸರ್ವರ್‌ಗೆ ಕಳುಹಿಸಲು ವಸ್ತುವನ್ನು ರಚಿಸಿ $req = ಹೊಸ ವಿನಂತಿ(); $msg1 = ಹೊಸ ಸಂದೇಶ(); $msg1->ಫೋನ್ = "79871234567"; $msg1->ಪಠ್ಯ = "ಪರೀಕ್ಷಾ ಸಂದೇಶ 1"; $msg1->ದಿನಾಂಕ = "2013-07-21T15:00:00.26"; $msg1->ಪ್ರಕಾರ = 15; $msg2 = ಹೊಸ ಸಂದೇಶ(); $msg2->ಫೋನ್ = "79871234567"; $msg2->ಪಠ್ಯ = "ಪರೀಕ್ಷಾ ಸಂದೇಶ 2"; $msg2->ದಿನಾಂಕ = "2014-08-22T16:01:10"; $msg2->ಪ್ರಕಾರ = 16; $msg3 = ಹೊಸ ಸಂದೇಶ(); $msg3->ಫೋನ್ = "79871234567"; $msg3->ಪಠ್ಯ = "ಪರೀಕ್ಷಾ ಸಂದೇಶ 3"; $msg3->ದಿನಾಂಕ = "2014-08-22T16:01:10"; $msg3->ಪ್ರಕಾರ = 17; $req->messageList = $msg1; $req->messageList = $msg2; $req->messageList = $msg3; $req->messageList = (ವಸ್ತು)$req->messageList;
ನಾವು ಅದೃಷ್ಟವನ್ನು ಪಡೆದರೆ ಮತ್ತು ಯೋಜನೆಯಿಂದ ಸರಿಯಾದ ಹೆಸರು ಬಂದರೆ ಏನು? ಇದನ್ನು ಮಾಡಲು, ಬಂದ ಲಕೋಟೆಯನ್ನು ನೋಡೋಣ:

79871234567 ಪರೀಕ್ಷಾ ಸಂದೇಶ 1 2013-07-21T15:00:00.26 15 79871234567 ಪರೀಕ್ಷಾ ಸಂದೇಶ 2 2014-08-22T16:01:10 16 79871234567 ಪರೀಕ್ಷಾ ಸಂದೇಶ 3 2014-08-22T16:01:10 17
ಹೌದು, ಪವಾಡ ಸಂಭವಿಸಲಿಲ್ಲ! ಬೋಗಸ್- ನಾವು ಗೆಲ್ಲುವುದಿಲ್ಲ! ಒಳಗೆ ಬಂದರು SMS ಕಳುಹಿಸಿಈ ಸಂದರ್ಭದಲ್ಲಿ ವಸ್ತುವು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

ಆಬ್ಜೆಕ್ಟ್(stdClass) ಸಾರ್ವಜನಿಕ "messageList" => ವಸ್ತು (stdClass) ಸಾರ್ವಜನಿಕ "BOGUS" => ಶ್ರೇಣಿ (ಗಾತ್ರ=3) 0 => ವಸ್ತು(stdClass) ಸಾರ್ವಜನಿಕ "ಫೋನ್" => ಸ್ಟ್ರಿಂಗ್ "79871234567" (ಉದ್ದ = 11) ಸಾರ್ವಜನಿಕ " ಪಠ್ಯ" => ಸ್ಟ್ರಿಂಗ್ "ಟೆಸ್ಟ್ ಸಂದೇಶ 1" (ಉದ್ದ = 37) ಸಾರ್ವಜನಿಕ "ದಿನಾಂಕ" => ಸ್ಟ್ರಿಂಗ್ "2013-07-21T15:00:00.26" (ಉದ್ದ = 22) ಸಾರ್ವಜನಿಕ "ಪ್ರಕಾರ" => ಸ್ಟ್ರಿಂಗ್ "15" (ಉದ್ದ =2) 1 => ವಸ್ತು(stdClass) ಸಾರ್ವಜನಿಕ "ಫೋನ್" => ಸ್ಟ್ರಿಂಗ್ "79871234567" (ಉದ್ದ =11) ಸಾರ್ವಜನಿಕ "ಪಠ್ಯ" => ಸ್ಟ್ರಿಂಗ್ "ಪರೀಕ್ಷಾ ಸಂದೇಶ 2" (ಉದ್ದ = 37) ಸಾರ್ವಜನಿಕ "ದಿನಾಂಕ" => ಸ್ಟ್ರಿಂಗ್ " 2014-08-22T16:01:10" (ಉದ್ದ = 19) ಸಾರ್ವಜನಿಕ "ಪ್ರಕಾರ" => ಸ್ಟ್ರಿಂಗ್ "16" (ಉದ್ದ = 2) 2 => ವಸ್ತು(stdClass) ಸಾರ್ವಜನಿಕ "ಫೋನ್" => ಸ್ಟ್ರಿಂಗ್ "79871234567" (ಉದ್ದ = 11) ಸಾರ್ವಜನಿಕ "ಪಠ್ಯ" => ಸ್ಟ್ರಿಂಗ್ "ಟೆಸ್ಟ್ ಸಂದೇಶ 3" (ಉದ್ದ = 37) ಸಾರ್ವಜನಿಕ "ದಿನಾಂಕ" => ಸ್ಟ್ರಿಂಗ್ "2014-08-22T16:01:10" (ಉದ್ದ = 19) ಸಾರ್ವಜನಿಕ "ಪ್ರಕಾರ" => ಸ್ಟ್ರಿಂಗ್ " 17" (ಉದ್ದ=2)
ಅವರು ಹೇಳಿದಂತೆ - "ಬಹುತೇಕ"! ಈ (ಸ್ವಲ್ಪ ದುಃಖ) ಟಿಪ್ಪಣಿಯಲ್ಲಿ, ನಾನು ಸದ್ದಿಲ್ಲದೆ ಸುತ್ತಿಕೊಳ್ಳುವಂತೆ ಮತ್ತು ನಮಗಾಗಿ ಕೆಲವು ತೀರ್ಮಾನಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಪ್ರಸ್ತಾಪಿಸುತ್ತೇನೆ.

8 ತೀರ್ಮಾನ

ಅಂತಿಮವಾಗಿ ನಾವು ಇಲ್ಲಿಗೆ ಬಂದೆವು! ನೀವು ಈಗ ಏನು ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸೋಣ:
  • ನಿಮ್ಮ ವೆಬ್ ಸೇವೆಗೆ ಅಗತ್ಯವಾದ WSDL ಫೈಲ್ ಅನ್ನು ನೀವು ಬರೆಯಬಹುದು;
  • SOAP ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸರ್ವರ್‌ನೊಂದಿಗೆ ಸಂವಹನ ಮಾಡುವ ಯಾವುದೇ ಸಮಸ್ಯೆಗಳಿಲ್ಲದೆ ನಿಮ್ಮ ಸ್ವಂತ ಕ್ಲೈಂಟ್ ಅನ್ನು ನೀವು ಬರೆಯಬಹುದು;
  • SOAP ಮೂಲಕ ಹೊರಗಿನ ಪ್ರಪಂಚದೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುವ ನಿಮ್ಮ ಸ್ವಂತ ಸರ್ವರ್ ಅನ್ನು ನೀವು ಬರೆಯಬಹುದು;
  • ನಿಮ್ಮ ಕ್ಲೈಂಟ್‌ನಿಂದ (ಕೆಲವು ನಿರ್ಬಂಧಗಳೊಂದಿಗೆ) ನೀವು ಒಂದೇ ರೀತಿಯ ವಸ್ತುಗಳ ಸರಣಿಗಳನ್ನು ಸರ್ವರ್‌ಗೆ ಕಳುಹಿಸಬಹುದು.
ಅಲ್ಲದೆ, ನಮ್ಮ ಚಿಕ್ಕ ಸಂಶೋಧನೆಯ ಸಮಯದಲ್ಲಿ ನಾವು ಕೆಲವು ಆವಿಷ್ಕಾರಗಳನ್ನು ಮಾಡಿದ್ದೇವೆ:
  • ಸ್ಥಳೀಯ ವರ್ಗ SoapClient XML ನಲ್ಲಿ ಅದೇ ಪ್ರಕಾರದ ಡೇಟಾ ರಚನೆಗಳನ್ನು ಸರಿಯಾಗಿ ಧಾರಾವಾಹಿ ಮಾಡುವುದು ಹೇಗೆ ಎಂದು ತಿಳಿದಿಲ್ಲ;
  • XML ಗೆ ಒಂದು ಶ್ರೇಣಿಯನ್ನು ಧಾರಾವಾಹಿ ಮಾಡುವಾಗ, ಇದು ಹೆಸರಿನ ಹೆಚ್ಚುವರಿ ಅಂಶವನ್ನು ರಚಿಸುತ್ತದೆ ಸ್ಟ್ರಕ್ಟ್;
  • XML ಗೆ ವಸ್ತುವನ್ನು ಧಾರಾವಾಹಿ ಮಾಡುವಾಗ, ಅದು ಹೆಸರಿನ ಹೆಚ್ಚುವರಿ ಅಂಶವನ್ನು ರಚಿಸುತ್ತದೆ ಬೋಗಸ್;
  • ಬೋಗಸ್ಗಿಂತ ಕಡಿಮೆ ದುಷ್ಟ ಸ್ಟ್ರಕ್ಟ್ಹೊದಿಕೆಯು ಹೆಚ್ಚು ಸಾಂದ್ರವಾಗಿರುತ್ತದೆ ಎಂಬ ಅಂಶದಿಂದಾಗಿ (ಲಕೋಟೆಯ XML ಹೆಡರ್‌ನಲ್ಲಿ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳನ್ನು ಸೇರಿಸಲಾಗಿಲ್ಲ);
  • ದುರದೃಷ್ಟವಶಾತ್, SoapServer ವರ್ಗವು ನಮ್ಮ XML ಸ್ಕೀಮಾದೊಂದಿಗೆ ಎನ್ವಲಪ್ ಡೇಟಾವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮೌಲ್ಯೀಕರಿಸುವುದಿಲ್ಲ (ಬಹುಶಃ ಇತರ ಸರ್ವರ್‌ಗಳು ಸಹ ಅಲ್ಲ).

SOAP ಎಂದರೇನು?

SOAP ಎಂದರೆ ಸಿಂಪಲ್ ಆಬ್ಜೆಕ್ಟ್ ಆಕ್ಸೆಸ್ ಪ್ರೋಟೋಕಾಲ್ (ಸಿಂಪಲ್ ಆಬ್ಜೆಕ್ಟ್ ಆಕ್ಸೆಸ್ ಪ್ರೋಟೋಕಾಲ್). ಲೇಖನವನ್ನು ಓದಿದ ನಂತರ ನೀವು ಮಾತ್ರ ಗೊಂದಲಕ್ಕೊಳಗಾಗುತ್ತೀರಿ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ: "ಈ ವಿಚಿತ್ರ ಹೆಸರು ಏನು?"

SOAP ಅದರ ಪ್ರಸ್ತುತ ರೂಪದಲ್ಲಿ ನೆಟ್‌ವರ್ಕ್ ಮೂಲಕ ರಿಮೋಟ್ ಪ್ರೊಸೀಜರ್ ಕರೆ ಮಾಡುವ (RPC) ವಿಧಾನವಾಗಿದೆ. (ಹೌದು, ಇದನ್ನು XML ಆಗಿ ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ರವಾನಿಸಲು ಸಹ ಬಳಸಲಾಗುತ್ತದೆ, ಆದರೆ ನಾವು ಇದೀಗ ಅದನ್ನು ಬಿಟ್ಟುಬಿಡುತ್ತೇವೆ.)

ಅದನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡೋಣ. ನೀಡಿರುವ ಟಿಕ್ಕರ್‌ಗೆ (ಸ್ಟಾಕ್ ಚಿಹ್ನೆ) ಸ್ಟಾಕ್ ಉಲ್ಲೇಖವನ್ನು ಹಿಂದಿರುಗಿಸುವ ಸೇವೆಯನ್ನು ನೀವು ಹೊಂದಿರುವಿರಿ ಎಂದು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಇದು Nasdaq ಸೈಟ್‌ಗೆ ಡೇಟಾವನ್ನು ಕಳುಹಿಸುತ್ತದೆ ಮತ್ತು ಹಿಂತಿರುಗಿದ HTML ಅನ್ನು ಆಧರಿಸಿ ಬಯಸಿದ ಫಲಿತಾಂಶವನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ. ಇದಲ್ಲದೆ, ಇತರ ಡೆವಲಪರ್‌ಗಳು ತಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಅದನ್ನು ಬಳಸಲು ಅನುಮತಿಸಲು, ನೀವು ಈ ಸೇವೆಯನ್ನು ಇಂಟರ್ನೆಟ್ ಮೂಲಕ ಉಲ್ಲೇಖಗಳ ಕುರಿತು ಮಾಹಿತಿಯನ್ನು ಕಂಡುಕೊಳ್ಳುವ ಒಂದು ಘಟಕವನ್ನಾಗಿ ಮಾಡುತ್ತೀರಿ. ಒಂದು ದಿನ ನಾಸ್ಡಾಕ್ ತಮ್ಮ ಪುಟಗಳ ವಿನ್ಯಾಸವನ್ನು ಬದಲಾಯಿಸುವವರೆಗೆ ಇದು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ನೀವು ಘಟಕದ ಸಂಪೂರ್ಣ ತರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಬೇಕು ಮತ್ತು ಅದನ್ನು ಬಳಸುವ ಎಲ್ಲಾ ಡೆವಲಪರ್‌ಗಳಿಗೆ ನವೀಕರಣಗಳನ್ನು ಕಳುಹಿಸಬೇಕು. ಮತ್ತು ಅವರು, ಪ್ರತಿಯಾಗಿ, ತಮ್ಮ ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೆ ನವೀಕರಣಗಳನ್ನು ಕಳುಹಿಸಬೇಕಾಗಿದೆ. ಇದು ಹೆಚ್ಚು ಅಥವಾ ಕಡಿಮೆ ನಿಯಮಿತವಾಗಿ ಸಂಭವಿಸಿದರೆ, ನಿಮ್ಮ ಸಹ ಡೆವಲಪರ್‌ಗಳಲ್ಲಿ ನೀವು ಬಹಳಷ್ಟು ಶತ್ರುಗಳನ್ನು ಮಾಡಬಹುದು. ಮತ್ತು ಪ್ರೋಗ್ರಾಮರ್ಗಳೊಂದಿಗೆ, ನಿಮಗೆ ತಿಳಿದಿರುವಂತೆ, ಜೋಕ್ಗಳು ​​ಕೆಟ್ಟದಾಗಿವೆ. ನಾಳೆ ಆಫೀಸ್ ಛೇದಕದಿಂದ ನಿಮ್ಮ ನೆಚ್ಚಿನ ಬೆಕ್ಕಿನ ಚಿತ್ರವನ್ನು ಪಡೆಯಲು ನೀವು ಬಯಸುವುದಿಲ್ಲ, ಅಲ್ಲವೇ?

ಏನ್ ಮಾಡೋದು? ನೋಡೋಣ... ನಿಮಗೆ ಬೇಕಾಗಿರುವುದು ಒಂದು ಕಾರ್ಯವನ್ನು ಒದಗಿಸುವುದು ಅದು ಟಿಕ್ಕರ್ (ಟೈಪ್ ಸ್ಟ್ರಿಂಗ್) ಅನ್ನು ಇನ್‌ಪುಟ್ ಆಗಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಸ್ಟಾಕ್ ಕೋಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ (ಟೈಪ್ ಫ್ಲೋಟ್ ಅಥವಾ ಡಬಲ್). ಆದ್ದರಿಂದ ನಿಮ್ಮ ಡೆವಲಪರ್‌ಗಳಿಗೆ ವೆಬ್‌ನಲ್ಲಿ ಈ ಕಾರ್ಯವನ್ನು ಹೇಗಾದರೂ ಕರೆಯಲು ಅವಕಾಶ ನೀಡುವುದು ಸುಲಭವಲ್ಲವೇ? ಅತ್ಯುತ್ತಮ! ಇದು ನನಗೆ ಸುದ್ದಿಯಾಗಿದೆ, COM ಮತ್ತು ಕಾರ್ಬಾ ಮತ್ತು ಜಾವಾ ಇದೆ, ಇದು ವರ್ಷಗಳಿಂದ ಇದನ್ನು ಮಾಡುತ್ತಿದೆ ... ಯಾವುದು ನಿಜ, ಆದರೆ ಈ ವಿಧಾನಗಳು ನ್ಯೂನತೆಗಳಿಲ್ಲ. ರಿಮೋಟ್ COM ಕಾನ್ಫಿಗರೇಶನ್ ಕ್ಷುಲ್ಲಕವಲ್ಲ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ನೀವು ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರಿಗೆ ಸಾಕಷ್ಟು ಬಿಯರ್ ಅನ್ನು ಉಳಿಸಲು ಸಾಧ್ಯವಾಗದ ಫೈರ್‌ವಾಲ್‌ನಲ್ಲಿ ಹಲವಾರು ಪೋರ್ಟ್‌ಗಳನ್ನು ತೆರೆಯಬೇಕಾಗುತ್ತದೆ. ಹೌದು, ಮತ್ತು ವಿಂಡೋಸ್ ಹೊರತುಪಡಿಸಿ ಎಲ್ಲಾ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂಗಳ ಬಳಕೆದಾರರ ಬಗ್ಗೆ ನೀವು ಮರೆತುಬಿಡಬೇಕು. ಆದರೆ ಎಲ್ಲಾ ನಂತರ, ಲಿನಕ್ಸ್ ಬಳಕೆದಾರರು ಕೆಲವೊಮ್ಮೆ ವಿನಿಮಯದಲ್ಲಿ ಆಸಕ್ತಿ ಹೊಂದಿರುತ್ತಾರೆ.

ಲಿನಕ್ಸ್ ಬಳಕೆದಾರರು DCOM ಅನ್ನು ಬಳಸಿದರೆ ಎಲ್ಲವೂ ಕಳೆದುಹೋಗುವುದಿಲ್ಲ, ಇಲ್ಲಿ ಇನ್ನಷ್ಟು: http://www.idevresource.com/com/library/res/articles/comonlinux.asp.

ನಾನು ಕೊರ್ಬಾ ಮತ್ತು ಜಾವಾ ಬಗ್ಗೆ ಹೆಚ್ಚು ಹೇಳಲಾರೆ, ಆದ್ದರಿಂದ ವ್ಯಾಯಾಮವಾಗಿ ನಾನು ಓದುಗರಿಗೆ ಈ ವಿಧಾನಗಳಲ್ಲಿನ ಅನಾನುಕೂಲಗಳನ್ನು ಕಂಡುಕೊಳ್ಳಲು ಸಲಹೆ ನೀಡುತ್ತೇನೆ.

SOAP ಒಂದು ಮಾನದಂಡವಾಗಿದ್ದು, ಅಂತಹ ದೂರಸ್ಥ ಕರೆ ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವ ರೂಪವನ್ನು ವಿವರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಹೀಗಾಗಿ, ನೀವು ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಲಭ್ಯವಿರುವ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಕಾರ್ಯವನ್ನು ಹೋಸ್ಟ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಮತ್ತು SOAP ಪ್ಯಾಕೆಟ್‌ಗಳ ರೂಪದಲ್ಲಿ ಕರೆಗಳನ್ನು ಸ್ವೀಕರಿಸಬೇಕು. ಅದರ ನಂತರ, ನೀವು ಇನ್‌ಪುಟ್ ಅನ್ನು ಮೌಲ್ಯೀಕರಿಸಿ, ನಿಮ್ಮ ಕಾರ್ಯವನ್ನು ರನ್ ಮಾಡಿ ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಹೊಸ SOAP ಪ್ಯಾಕೇಜ್‌ನಲ್ಲಿ ಹಿಂತಿರುಗಿಸಿ. ಸಂಪೂರ್ಣ ಪ್ರಕ್ರಿಯೆಯು HTTP ಯಲ್ಲಿ ರನ್ ಆಗಬಹುದು, ಆದ್ದರಿಂದ ನೀವು ಫೈರ್‌ವಾಲ್‌ನಲ್ಲಿ ಪೋರ್ಟ್‌ಗಳ ಗುಂಪನ್ನು ತೆರೆಯಬೇಕಾಗಿಲ್ಲ. ಇದು ಸರಳವಾಗಿದೆಯೇ?

ಈ ಲೇಖನ ಯಾವುದರ ಬಗ್ಗೆ

ಅಗ್ನಿ ಸಾಫ್ಟ್‌ವೇರ್‌ನಲ್ಲಿ ನಾವು ಬರೆಯುತ್ತಿರುವ SOAP ಲೇಖನಗಳ ಸರಣಿಯಲ್ಲಿ ಇದು ಮೊದಲನೆಯದು. ಈ ಲೇಖನದಲ್ಲಿ, SOAP ಎಂದರೇನು ಮತ್ತು SOAP ಸರ್ವರ್‌ನೊಂದಿಗೆ ಸಂವಹನ ಮಾಡುವ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೇಗೆ ಬರೆಯುವುದು ಎಂಬುದರ ಕುರಿತು ನಾನು ನಿಮಗೆ ಕಲ್ಪನೆಯನ್ನು ನೀಡಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ.

ಸೋಪ್ ಮತ್ತು XML

SOAP ನಿಮಗೆ ಇನ್ನೂ ಸರಳವೆಂದು ತೋರುತ್ತಿದ್ದರೆ, XML ಅನ್ನು ಸೇರಿಸೋಣ. ಈಗ, ಕಾರ್ಯದ ಹೆಸರು ಮತ್ತು ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಬದಲಿಗೆ, ನಾವು ಸಂಕೀರ್ಣವಾದ XML ಹೊದಿಕೆಯನ್ನು ಪಡೆಯುತ್ತೇವೆ, ನಿಮ್ಮನ್ನು ಗೊಂದಲಗೊಳಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಿದಂತೆ. ಆದರೆ ಭಯಪಡಬೇಡಿ. ಇನ್ನೂ ಹೆಚ್ಚಿನವು ಬರಲಿವೆ, ಮತ್ತು SOAP ನ ಸಂಕೀರ್ಣತೆಯನ್ನು ಪ್ರಶಂಸಿಸಲು ನೀವು ಸಂಪೂರ್ಣ ಚಿತ್ರವನ್ನು ನೋಡಬೇಕು.
XML ಎಂದರೇನು ಎಂದು ನಿಮಗೆ ತಿಳಿದಿಲ್ಲದಿದ್ದರೆ, ಮೊದಲು ನನ್ನ XML ಲೇಖನವನ್ನು ಇಲ್ಲಿ ಓದಿ: http://www.agnisoft.com/white_papers/xml_delphi.asp.

ಎಲ್ಲಾ SOAP ಪ್ಯಾಕೆಟ್‌ಗಳು XML ಸ್ವರೂಪದಲ್ಲಿವೆ. ಅದರ ಅರ್ಥವೇನು? ನೋಡೋಣ. ಈ ಕಾರ್ಯವನ್ನು ನೋಡೋಣ (ಪಾಸ್ಕಲ್):
ಕಾರ್ಯ GetStockQuote(ಚಿಹ್ನೆ: ಸ್ಟ್ರಿಂಗ್) : ಡಬಲ್; ಉತ್ತಮವಾಗಿ ಕಾಣುತ್ತದೆ, ಆದರೆ ಸಮಸ್ಯೆಯೆಂದರೆ ಅದು ಪ್ಯಾಸ್ಕಲ್. ಜಾವಾ ಡೆವಲಪರ್‌ಗೆ ಈ ಸರಳ ವ್ಯಾಖ್ಯಾನದ ಬಳಕೆ ಏನು? ಅಥವಾ VB ಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಯಾರಿಗಾದರೂ? ವಿಬಿ ಪ್ರೋಗ್ರಾಮರ್‌ಗಳು ಸಹ ಎಲ್ಲರಿಗೂ ಅರ್ಥವಾಗುವಂತಹದ್ದು ನಮಗೆ ಬೇಕು. ಆದ್ದರಿಂದ ಅವರಿಗೆ ಅದೇ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿರುವ XML ನೀಡಿ (ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು, ಸ್ಟಾಕ್ ಉಲ್ಲೇಖಗಳು, ಇತ್ಯಾದಿ.). ನೀವು SOAP ಪ್ಯಾಕೇಜ್ ಅನ್ನು ರಚಿಸುತ್ತೀರಿ, ಇದು ಮೂಲಭೂತವಾಗಿ ನಿಮ್ಮ ಕಾರ್ಯಕ್ಕೆ ಕರೆಯಾಗಿದೆ, XML ನಲ್ಲಿ ಸುತ್ತುವ ಮೂಲಕ ಯಾವುದೇ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನಲ್ಲಿರುವ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ ಅದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದು. ಈಗ ನಮ್ಮ SOAP ಕರೆ ಹೇಗಿದೆ ಎಂದು ನೋಡೋಣ:
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">


IBM


ತಿಳಿವಳಿಕೆ, ಸರಿ? ಸೋಪ್ ಅನ್ನು ನಮ್ಮ ಕಣ್ಣಮುಂದೆ ಸರಳೀಕರಿಸಲಾಗುತ್ತಿದೆ. ಸರಿ, ಹಾಸ್ಯಗಳನ್ನು ಬದಿಗಿಟ್ಟು. ಈ SOAP ಕರೆಯನ್ನು ಹೇಗೆ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಎಂಬುದನ್ನು ಈಗ ನಾನು ನಿಮಗೆ ವಿವರಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ.

ಟ್ಯಾಗ್ ಡೀಕ್ರಿಪ್ಶನ್

ನಿಮ್ಮ ಕಣ್ಣನ್ನು ಸೆಳೆಯುವ ಮೊದಲ ಟ್ಯಾಗ್ . ಈ ಟ್ಯಾಗ್ SOAP ಪ್ಯಾಕೇಜ್‌ನ ಹೊರ ಹೊದಿಕೆಯಾಗಿದೆ, ಇದು ನಮಗೆ ಸ್ವಲ್ಪ ಆಸಕ್ತಿಯಿರುವ ಕೆಲವು ನೇಮ್‌ಸ್ಪೇಸ್ ಘೋಷಣೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಆದರೆ ಯಾವುದೇ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ ಅಥವಾ ಪಾರ್ಸರ್‌ಗೆ ಬಹಳ ಮುಖ್ಯವಾಗಿದೆ. ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ ಆದ್ದರಿಂದ "SOAP-ENV:" ಅಥವಾ "xsd:" ನಂತಹ ನಂತರದ ಪೂರ್ವಪ್ರತ್ಯಯಗಳನ್ನು ಪಾರ್ಸರ್ ಸ್ವೀಕರಿಸುತ್ತದೆ.

ಮುಂದಿನ ಟ್ಯಾಗ್ ಆಗಿದೆ . (ಇಲ್ಲಿ ಪ್ರತಿನಿಧಿಸದ ಟ್ಯಾಗ್ ಅನ್ನು ನಾವು ಬಿಟ್ಟುಬಿಟ್ಟಿದ್ದೇವೆ - . ಇದು ಈ ನಿರ್ದಿಷ್ಟ ಉದಾಹರಣೆಯಲ್ಲಿಲ್ಲ, ಆದರೆ ನೀವು ಅದರ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ಓದಲು ಬಯಸಿದರೆ, ಇಲ್ಲಿ SOAP ವಿವರಣೆಯನ್ನು ಪರಿಶೀಲಿಸಿ: http://www.w3.org/TR/SOAP/). ಟ್ಯಾಗ್ ಮಾಡಿ ವಾಸ್ತವವಾಗಿ SOAP ಕರೆಯನ್ನು ಒಳಗೊಂಡಿದೆ.

ಪಟ್ಟಿಯಲ್ಲಿನ ಮುಂದಿನ ಟ್ಯಾಗ್ - . ಟ್ಯಾಗ್ ಹೆಸರು, GetStockQuote, ಕರೆ ಮಾಡುವ ಕಾರ್ಯವಾಗಿದೆ. SOAP ಪರಿಭಾಷೆಯ ಪ್ರಕಾರ, ಇದನ್ನು ಕಾರ್ಯಾಚರಣೆ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಹೀಗಾಗಿ GetStockQuote ಎನ್ನುವುದು ನಿರ್ವಹಿಸಬೇಕಾದ ಕಾರ್ಯಾಚರಣೆಯಾಗಿದೆ. ns1 ಎಂಬುದು ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ urn:xmethods-quotes ಅನ್ನು ಸೂಚಿಸುವ ನೇಮ್‌ಸ್ಪೇಸ್ ಆಗಿದೆ.

ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳ ಬಗ್ಗೆ ಒಂದು ಸೈಡ್ ನೋಟ್: XML ಟ್ಯಾಗ್‌ಗೆ ಅರ್ಹತೆ ಪಡೆಯಲು ನೇಮ್‌ಸ್ಪೇಸ್ ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನೀವು ಒಂದೇ ಹೆಸರಿನೊಂದಿಗೆ ಎರಡು ಅಸ್ಥಿರಗಳನ್ನು ಒಂದೇ ಕಾರ್ಯವಿಧಾನದಲ್ಲಿ ಹೊಂದಲು ಸಾಧ್ಯವಿಲ್ಲ, ಆದರೆ ಅವು ಎರಡು ವಿಭಿನ್ನ ಕಾರ್ಯವಿಧಾನಗಳಲ್ಲಿದ್ದರೆ, ಯಾವುದೇ ಸಮಸ್ಯೆ ಇಲ್ಲ. ಹೀಗಾಗಿ, ಕಾರ್ಯವಿಧಾನವು ನೇಮ್‌ಸ್ಪೇಸ್ ಆಗಿದೆ, ಏಕೆಂದರೆ ಅದರಲ್ಲಿರುವ ಎಲ್ಲಾ ಹೆಸರುಗಳು ಅನನ್ಯವಾಗಿವೆ. ಅದೇ ರೀತಿ, XML ಟ್ಯಾಗ್‌ಗಳನ್ನು ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳಲ್ಲಿ ಸ್ಕೋಪ್ ಮಾಡಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ನೇಮ್‌ಸ್ಪೇಸ್ ಮತ್ತು ಟ್ಯಾಗ್ ಹೆಸರನ್ನು ನೀಡಿದರೆ, ಒಬ್ಬರು ಅದನ್ನು ಅನನ್ಯವಾಗಿ ಗುರುತಿಸಬಹುದು. ನಮ್ಮ NS1 ಅನ್ನು ಅನುಕರಿಸುವವರಿಂದ ಪ್ರತ್ಯೇಕಿಸಲು ನಾವು ನೇಮ್‌ಸ್ಪೇಸ್ ಅನ್ನು URI ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತೇವೆ. ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, NS1 ಎಂಬುದು urn:xmethods-quotes ಅನ್ನು ಸೂಚಿಸುವ ಅಲಿಯಾಸ್ ಆಗಿದೆ.

ಎನ್‌ಕೋಡಿಂಗ್‌ಸ್ಟೈಲ್ ಆಟ್ರಿಬ್ಯೂಟ್ ಅನ್ನು ಸಹ ಗಮನಿಸಿ - ಈ ಗುಣಲಕ್ಷಣವು SOAP ಕರೆಯನ್ನು ಹೇಗೆ ಧಾರಾವಾಹಿ ಮಾಡಲಾಗಿದೆ ಎಂಬುದನ್ನು ಸೂಚಿಸುತ್ತದೆ.

ಟ್ಯಾಗ್ ಒಳಗೆ ನಿಯತಾಂಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ನಮ್ಮ ಸರಳ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು ಕೇವಲ ಒಂದು ಪ್ಯಾರಾಮೀಟರ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ - ಟ್ಯಾಗ್ . ಟ್ಯಾಗ್ ಪಕ್ಕದಲ್ಲಿರುವ ಈ ಸಾಲನ್ನು ಗಮನಿಸಿ:
xsi:type="xsd:string"
ಸ್ಥೂಲವಾಗಿ XML ಪ್ರಕಾರಗಳನ್ನು ಹೇಗೆ ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. (ತಂತ್ರಜ್ಞಾನದ ಬಗ್ಗೆ ಸಾಮಾನ್ಯೀಕರಿಸುವಾಗ ನಾನು "ಅಂದಾಜು" ಪದವನ್ನು ಎಷ್ಟು ಜಾಣತನದಿಂದ ಬಳಸಿದ್ದೇನೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ, ಲೇಖನವನ್ನು ಪ್ರಕಟಿಸಿದ ನಂತರ ಅದು ಬದಲಾಗಬಹುದು.) ಇದರ ಅರ್ಥವೇನು: xsi ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಪ್ರಕಾರವನ್ನು ಟ್ಯಾಗ್‌ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ - xsd: ಸ್ಟ್ರಿಂಗ್. ಮತ್ತು ಇದು ಪ್ರತಿಯಾಗಿ, xsd ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಸ್ಟ್ರಿಂಗ್ ಆಗಿದೆ, ಮತ್ತೆ ಮೊದಲೇ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. (ಈ ಎಲ್ಲದರಿಂದ ವಕೀಲರು ರೋಮಾಂಚನಗೊಳ್ಳುತ್ತಾರೆ ಎಂದು ನನಗೆ ಖಾತ್ರಿಯಿದೆ).

ಟ್ಯಾಗ್ ಒಳಗೆ "IBM" ಪಟ್ಟಿಮಾಡಲಾಗಿದೆ. ಇದು GetStockQuote ಕಾರ್ಯದ ಸಂಕೇತ ನಿಯತಾಂಕದ ಮೌಲ್ಯವಾಗಿದೆ.

ಸರಿ, ಕೊನೆಯಲ್ಲಿ, ಯೋಗ್ಯ ಜನರಂತೆ, ನಾವು ಎಲ್ಲಾ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಮುಚ್ಚಿದ್ದೇವೆ.

ಆದ್ದರಿಂದ SOAP ಸರ್ವರ್‌ಗೆ ಕರೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ SOAP ಪ್ಯಾಕೇಜ್ ಅನ್ನು ನಾವು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ. ಮತ್ತು SOAP ಸರ್ವರ್, XML ಪಾರ್ಸರ್‌ಗಳು, ಕೆಂಪು ಬಟನ್ ಮತ್ತು MIR ಬಾಹ್ಯಾಕಾಶ ನಿಲ್ದಾಣವನ್ನು ಬಳಸಿಕೊಂಡು, ಈ ಕರೆಯನ್ನು ಡಿಕೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ನಿಮಗೆ ಸ್ಟಾಕ್ ಕೋಟ್ ಅಗತ್ಯವಿದೆ ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ. ಇದು ತಕ್ಷಣವೇ ಅಗತ್ಯವಿರುವ ಉಲ್ಲೇಖವನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಈ ರೂಪದಲ್ಲಿ ನಿಮಗೆ ಹಿಂದಿರುಗಿಸುತ್ತದೆ:
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>


34.5


SOAP ಹೊದಿಕೆಯನ್ನು ಬಿಚ್ಚಿದ ನಂತರ, ರಿಬ್ಬನ್‌ಗಳನ್ನು ಹರಿದು ಮತ್ತು ಹೊದಿಕೆಯನ್ನು ತುಕ್ಕು ಹಿಡಿದ ನಂತರ, IBM ಷೇರಿನ ಬೆಲೆ 34.5 ಎಂದು ನಮಗೆ ತಿಳಿಯುತ್ತದೆ.

ಹೆಚ್ಚಿನ ವಾಣಿಜ್ಯ ಸರ್ವರ್‌ಗಳು ಹೆಚ್ಚಿನ ಮಾಹಿತಿಯನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ಯಾವ ಕರೆನ್ಸಿಯಲ್ಲಿ ಮತ್ತು ಕೊನೆಯ ಷೇರನ್ನು ಯಾವ ಬೆಲೆಗೆ ಖರೀದಿಸಲಾಗಿದೆ. ಮತ್ತು ಷೇರು ಬೆಲೆ, ಬಹುಶಃ, ಹೆಚ್ಚು ನಿಖರವಾಗಿರುತ್ತದೆ.

ಈ ರೀತಿಯಲ್ಲಿ SOAP ಸರ್ವರ್ ಏನನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತಿದೆ ಮತ್ತು ಅದು ಏನನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಾವು ತಿಳಿಯುತ್ತೇವೆ. ಹಾಗಾದರೆ ನೀವು ಈ ಮಾಹಿತಿಯನ್ನು ಹೇಗೆ ಕಳುಹಿಸುತ್ತೀರಿ? ಯಾವುದೇ ಸಾರಿಗೆಯನ್ನು ಬಳಸಬಹುದು. ಹೆಚ್ಚು ಪ್ರಕಾಶಿಸಿರುವುದು HTTP. ನಾನು HTTP ಯ ವಿವರಗಳನ್ನು ಪಡೆಯುವುದಿಲ್ಲ, ಗೊತ್ತಿಲ್ಲದವರಿಗೆ, ನೀವು ಭೇಟಿ ನೀಡುವ ಸೈಟ್‌ಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ನಿಮ್ಮ ಬ್ರೌಸರ್ ಬಳಸುತ್ತದೆ.

ಬಯಸಿದ HTTP ವಿನಂತಿಯು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:
POST /StockQuote HTTP/1.1
ಹೋಸ್ಟ್: www.stockquoteserver.com

ವಿಷಯ-ಉದ್ದ: nnnn
SOAPAction: "ಕೆಲವು-URI"

ಇಲ್ಲಿ ಸೋಪ್ ವಿನಂತಿ ಪ್ಯಾಕೆಟ್... ಗಮನಿಸಬೇಕಾದ ಇನ್ನೊಂದು ವಿಷಯವೆಂದರೆ SOAPAction ಹೆಡರ್. ಈ ಹೆಡರ್ ವಿನಂತಿಯ ಉದ್ದೇಶವನ್ನು ಸೂಚಿಸುತ್ತದೆ ಮತ್ತು ಅಗತ್ಯವಿದೆ. ಪ್ರತಿಯೊಂದು SOAP ಸರ್ವರ್ ಅನಿಯಮಿತ ಸಂಖ್ಯೆಯ ಕಾರ್ಯಗಳನ್ನು ಹೊಂದಬಹುದು ಮತ್ತು ಯಾವ ಕಾರ್ಯವನ್ನು ಕರೆಯಲಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು SOAPAction ಹೆಡರ್ ಅನ್ನು ಬಳಸಬಹುದು. ಫೈರ್‌ವಾಲ್‌ಗಳು ಮತ್ತು ಮಲ್ಟಿಪ್ಲೆಕ್ಸರ್‌ಗಳು ಈ ಹೆಡರ್ ಅನ್ನು ಆಧರಿಸಿ ವಿಷಯವನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಬಹುದು.

HTTP ಸರ್ವರ್‌ನಿಂದ SOAP ಪ್ರತಿಕ್ರಿಯೆಯು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:
HTTP/1.1 200 ಸರಿ
ವಿಷಯ-ಪ್ರಕಾರ: ಪಠ್ಯ/xml; charset="utf-8"
ವಿಷಯ-ಉದ್ದ: nnnn

ಸೋಪ್ ರೆಸ್ಪಾನ್ಸ್ ಪ್ಯಾಕೆಟ್ ಇಲ್ಲಿದೆ... HTTP ಏಕೆ? ಮೊದಲನೆಯದಾಗಿ, ನೆಟ್‌ವರ್ಕ್ ನಿರ್ವಾಹಕರು SOAP ಕರೆಗಳಿಗಾಗಿ ಸಾಕಷ್ಟು ಪ್ರತ್ಯೇಕ ಪೋರ್ಟ್‌ಗಳನ್ನು ತೆರೆಯಬೇಕಾಗಿಲ್ಲ... ವೆಬ್ ಸರ್ವರ್ ಶಾಂತಿಯುತವಾಗಿ ಕರೆಗಳನ್ನು ನಿಭಾಯಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಒಳಬರುವ ವಿನಂತಿಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಪೋರ್ಟ್ 80 ಸಾಮಾನ್ಯವಾಗಿ ಎಲ್ಲರಿಗೂ ತೆರೆದಿರುತ್ತದೆ. CGI, ISAPI ಮತ್ತು ಇತರ ಸ್ಥಳೀಯ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಬಳಸುವ ವೆಬ್ ಸರ್ವರ್‌ಗಳ ವಿಸ್ತರಣೆಯು ಮತ್ತೊಂದು ಪ್ರಯೋಜನವಾಗಿದೆ. ಈ ವಿಸ್ತರಣೆಯು ಇತರ ವೆಬ್ ವಿಷಯದ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರದಂತೆ SOAP ವಿನಂತಿಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಬರೆಯಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಅಷ್ಟೇ

ಈ ಲೇಖನವು SOAP ನಲ್ಲಿ ಸ್ವಲ್ಪ ಬೆಳಕು ಚೆಲ್ಲಲು ಸಹಾಯ ಮಾಡಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. ನೀವು ಇನ್ನೂ ಇಲ್ಲಿದ್ದರೆ ಮತ್ತು ಈ ವಿಷಯದ ಕುರಿತು ಇನ್ನಷ್ಟು ಓದಲು ಬಯಸಿದರೆ, ಲೇಖಕರ ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಿ: http://www.agnisoft.com/soap

ಭಾವಗೀತೆಯ ಭಾಗ.

ಹೊರಗಿನಿಂದ ಲಭ್ಯವಾಗಬೇಕಾದ ನಿರ್ದಿಷ್ಟ ವ್ಯವಸ್ಥೆಯನ್ನು ನೀವು ಜಾರಿಗೆ ತಂದಿದ್ದೀರಿ ಅಥವಾ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತಿದ್ದೀರಿ ಎಂದು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಆ. ನೀವು ಸಂವಹನ ಮಾಡಬೇಕಾದ ನಿರ್ದಿಷ್ಟ ಸರ್ವರ್ ಇದೆ. ಉದಾಹರಣೆಗೆ ವೆಬ್ ಸರ್ವರ್.

ಈ ಸರ್ವರ್ ಅನೇಕ ಕ್ರಿಯೆಗಳನ್ನು ಮಾಡಬಹುದು, ಡೇಟಾಬೇಸ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಬಹುದು, ಇತರ ಸರ್ವರ್‌ಗಳಿಗೆ ಕೆಲವು ಮೂರನೇ ವ್ಯಕ್ತಿಯ ವಿನಂತಿಗಳನ್ನು ಮಾಡಬಹುದು, ಕೆಲವು ಲೆಕ್ಕಾಚಾರಗಳನ್ನು ಮಾಡಬಹುದು, ಇತ್ಯಾದಿ. ಅವನ ಸುಪ್ರಸಿದ್ಧ ಸನ್ನಿವೇಶದ ಪ್ರಕಾರ (ಅಂದರೆ, ಡೆವಲಪರ್‌ಗಳ ಸನ್ನಿವೇಶದ ಪ್ರಕಾರ) ಲೈವ್ ಮತ್ತು ಪ್ರಾಯಶಃ ಅಭಿವೃದ್ಧಿಪಡಿಸಬಹುದು. ಅಂತಹ ಸರ್ವರ್ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಒಬ್ಬ ವ್ಯಕ್ತಿಗೆ ಆಸಕ್ತಿದಾಯಕವಲ್ಲ, ಏಕೆಂದರೆ ಚಿತ್ರಗಳು ಮತ್ತು ಇತರ ಬಳಕೆದಾರ ಸ್ನೇಹಿ ವಿಷಯಗಳೊಂದಿಗೆ ಸುಂದರವಾದ ಪುಟಗಳನ್ನು ನೀಡಲು ಅವನು ಸಾಧ್ಯವಾಗದಿರಬಹುದು / ಬಯಸುವುದಿಲ್ಲ. ಇದನ್ನು ಬರೆಯಲಾಗಿದೆ ಮತ್ತು ಕೆಲಸ ಮಾಡಲು ಮತ್ತು ಅದರ ವಿನಂತಿಗಳಿಗೆ ಡೇಟಾವನ್ನು ವಿತರಿಸಲು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಅವುಗಳು ಮಾನವ-ಓದಬಲ್ಲವು ಎಂದು ಕಾಳಜಿಯಿಲ್ಲದೆ, ಕ್ಲೈಂಟ್ ಅವರೊಂದಿಗೆ ಸ್ವತಃ ವ್ಯವಹರಿಸುತ್ತದೆ.

ಇತರ ವ್ಯವಸ್ಥೆಗಳು, ಈ ಸರ್ವರ್ ಅನ್ನು ಪ್ರವೇಶಿಸುವುದು, ಈ ಸರ್ವರ್‌ನಿಂದ ಸ್ವೀಕರಿಸಿದ ಡೇಟಾವನ್ನು ಈಗಾಗಲೇ ತಮ್ಮ ಸ್ವಂತ ವಿವೇಚನೆಯಿಂದ ವಿಲೇವಾರಿ ಮಾಡಬಹುದು - ಪ್ರಕ್ರಿಯೆ, ಸಂಗ್ರಹಣೆ, ತಮ್ಮ ಗ್ರಾಹಕರಿಗೆ ನೀಡುವುದು ಇತ್ಯಾದಿ.

ಒಳ್ಳೆಯದು, ಅಂತಹ ಸರ್ವರ್‌ಗಳೊಂದಿಗೆ ಸಂವಹನ ಮಾಡುವ ಆಯ್ಕೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ SOAP. SOAP XML ಮೆಸೇಜಿಂಗ್ ಪ್ರೋಟೋಕಾಲ್.

ಪ್ರಾಯೋಗಿಕ ಭಾಗ.

ವೆಬ್ ಸೇವೆಯು (ಸರ್ವರ್ ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಗ್ರಾಹಕರು ಏನು ಬಳಸುತ್ತಾರೆ) ಸರ್ವರ್‌ನೊಂದಿಗೆ ಉತ್ತಮವಾಗಿ-ರಚನಾತ್ಮಕ ಸಂದೇಶಗಳಲ್ಲಿ ಸಂವಹನ ನಡೆಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ. ವೆಬ್ ಸೇವೆಯು ಯಾವುದೇ ಡೇಟಾವನ್ನು ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ ಎಂಬುದು ಸತ್ಯ. ನಿಯಮಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗದ ಯಾವುದೇ ಸಂದೇಶವನ್ನು ವೆಬ್ ಸೇವೆಯು ದೋಷದೊಂದಿಗೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ದೋಷವು ಸ್ಪಷ್ಟ ರಚನೆಯೊಂದಿಗೆ xml ರೂಪದಲ್ಲಿಯೂ ಇರುತ್ತದೆ (ಇದು ಸಂದೇಶದ ಪಠ್ಯದ ಬಗ್ಗೆ ನಿಜವೆಂದು ಹೇಳಲಾಗುವುದಿಲ್ಲ).

WSDL (ವೆಬ್ ಸೇವೆಗಳ ವಿವರಣೆ ಭಾಷೆ). ವೆಬ್ ಸೇವೆಗಾಗಿ ಸಂದೇಶಗಳನ್ನು ರಚಿಸುವ ನಿಯಮಗಳನ್ನು ಸಹ xml ಬಳಸಿ ವಿವರಿಸಲಾಗಿದೆ ಮತ್ತು ಸ್ಪಷ್ಟ ರಚನೆಯನ್ನು ಹೊಂದಿದೆ. ಆ. ವೆಬ್ ಸೇವೆಯು ವಿಧಾನವನ್ನು ಕರೆಯುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಒದಗಿಸಿದರೆ, ಈ ವಿಧಾನಕ್ಕಾಗಿ ಯಾವ ನಿಯತಾಂಕಗಳನ್ನು ಬಳಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಕಂಡುಹಿಡಿಯಲು ಗ್ರಾಹಕರಿಗೆ ಅವಕಾಶ ನೀಡಬೇಕು. ವೆಬ್ ಸೇವೆಯು Method1 ವಿಧಾನಕ್ಕಾಗಿ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಪ್ಯಾರಾಮೀಟರ್ ಆಗಿ ನಿರೀಕ್ಷಿಸಿದರೆ ಮತ್ತು ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು Param1 ಎಂದು ಹೆಸರಿಸಬೇಕಾದರೆ, ಈ ನಿಯಮಗಳನ್ನು ವೆಬ್ ಸೇವೆ ವಿವರಣೆಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗುತ್ತದೆ.

ಸರಳ ವಿಧಗಳು ಮಾತ್ರವಲ್ಲದೆ, ವಸ್ತುಗಳು, ವಸ್ತುಗಳ ಸಂಗ್ರಹಣೆಗಳನ್ನು ನಿಯತಾಂಕಗಳಾಗಿ ರವಾನಿಸಬಹುದು. ವಸ್ತುವಿನ ವಿವರಣೆಯನ್ನು ವಸ್ತುವಿನ ಪ್ರತಿಯೊಂದು ಅಂಶದ ವಿವರಣೆಗೆ ಕಡಿಮೆ ಮಾಡಲಾಗಿದೆ. ವಸ್ತುವು ಹಲವಾರು ಕ್ಷೇತ್ರಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಪ್ರತಿ ಕ್ಷೇತ್ರವನ್ನು ವಿವರಿಸಲಾಗಿದೆ, ಅದು ಯಾವ ಪ್ರಕಾರವನ್ನು ಹೊಂದಿದೆ, ಹೆಸರು (ಸಾಧ್ಯವಾದ ಮೌಲ್ಯಗಳು ಯಾವುವು). ಕ್ಷೇತ್ರಗಳು ಸಂಕೀರ್ಣ ಪ್ರಕಾರವಾಗಿರಬಹುದು, ಮತ್ತು ಹೀಗೆ, ಪ್ರಕಾರಗಳ ವಿವರಣೆಯು ಸರಳವಾದವುಗಳೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳುವವರೆಗೆ - ಸ್ಟ್ರಿಂಗ್, ಬೂಲಿಯನ್, ಸಂಖ್ಯೆ, ದಿನಾಂಕ ... ಆದಾಗ್ಯೂ, ಕೆಲವು ನಿರ್ದಿಷ್ಟ ಪ್ರಕಾರಗಳು ಸರಳವಾಗಿ ಹೊರಹೊಮ್ಮಬಹುದು, ಅದು ಮುಖ್ಯವಾಗಿದೆ ಗ್ರಾಹಕರು ಅವುಗಳಲ್ಲಿ ಯಾವ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿರಬಹುದು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದು.

ಗ್ರಾಹಕರಿಗೆ, ವೆಬ್ ಸೇವೆಯ url ಅನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು ಸಾಕು, wsdl ಯಾವಾಗಲೂ ಹತ್ತಿರದಲ್ಲಿರುತ್ತದೆ, ಈ ವೆಬ್ ಸೇವೆ ಒದಗಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಅವುಗಳ ನಿಯತಾಂಕಗಳ ಬಗ್ಗೆ ನೀವು ಕಲ್ಪನೆಯನ್ನು ಪಡೆಯಬಹುದು.

ಈ ಎಲ್ಲಾ ಘಂಟೆಗಳು ಮತ್ತು ಸೀಟಿಗಳ ಅನುಕೂಲಗಳು ಯಾವುವು:

  • ಹೆಚ್ಚಿನ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ, ವಿಧಾನಗಳು ಮತ್ತು ಪ್ರಕಾರಗಳ ವಿವರಣೆಯು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಭವಿಸುತ್ತದೆ. ಆ. ಈ ವಿಧಾನವನ್ನು ವೆಬ್ ಸೇವೆಯ ಮೂಲಕ ಕರೆಯಬಹುದು ಎಂದು ಸರ್ವರ್‌ನಲ್ಲಿ ಪ್ರೋಗ್ರಾಮರ್ ಹೇಳಲು ಸಾಕು, ಮತ್ತು wsdl ವಿವರಣೆಯು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಉತ್ಪತ್ತಿಯಾಗುತ್ತದೆ.
  • ಸ್ಪಷ್ಟ ರಚನೆಯನ್ನು ಹೊಂದಿರುವ ವಿವರಣೆಯನ್ನು ಯಾವುದೇ ಸೋಪ್ ಕ್ಲೈಂಟ್ ಓದಬಹುದು. ಆ. ವೆಬ್ ಸೇವೆಯು ಯಾವುದೇ ಆಗಿರಲಿ, ವೆಬ್ ಸೇವೆಯು ಯಾವ ಡೇಟಾವನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಕ್ಲೈಂಟ್ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತದೆ. ಈ ವಿವರಣೆಯ ಪ್ರಕಾರ, ಕ್ಲೈಂಟ್ ಆಬ್ಜೆಕ್ಟ್ ವರ್ಗಗಳ ತನ್ನದೇ ಆದ ಆಂತರಿಕ ರಚನೆಯನ್ನು ನಿರ್ಮಿಸಬಹುದು, ಕರೆಯಲ್ಪಡುವ. ಬೈಂಡಿಂಗ್" ಮತ್ತು. ಪರಿಣಾಮವಾಗಿ, ವೆಬ್ ಸೇವೆಯನ್ನು ಬಳಸುವ ಪ್ರೋಗ್ರಾಮರ್ ಈ ರೀತಿ ಬರೆಯಬೇಕಾಗುತ್ತದೆ (ಸೂಡೊಕೋಡ್):

    ಹೊಸ ಬಳಕೆದಾರ:=TSoapUser.Create("Vasya","Pupkin","admin"); soap.AddUser(NewUser);

  • ಸ್ವಯಂಚಾಲಿತ ದೃಢೀಕರಣ.

    • xml ಮೌಲ್ಯೀಕರಣ. xml ಚೆನ್ನಾಗಿ ರೂಪುಗೊಂಡಿರಬೇಕು. ಅಮಾನ್ಯ xml - ಕ್ಲೈಂಟ್‌ಗೆ ತಕ್ಷಣವೇ ದೋಷ, ಅದನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಅವಕಾಶ ಮಾಡಿಕೊಡಿ.
    • ಸ್ಕೀಮಾ ಮೌಲ್ಯೀಕರಣ. xml ಒಂದು ನಿರ್ದಿಷ್ಟ ರಚನೆಯನ್ನು ಹೊಂದಿರಬೇಕು. xml ಸ್ಕೀಮ್‌ಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ - ಕ್ಲೈಂಟ್‌ಗೆ ತಕ್ಷಣವೇ ದೋಷ, ಅದನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಅವಕಾಶ ಮಾಡಿಕೊಡಿ.
    • ಡೇಟಾ ಊರ್ಜಿತಗೊಳಿಸುವಿಕೆಯನ್ನು ಸೋಪ್ ಸರ್ವರ್‌ನಿಂದ ಕೈಗೊಳ್ಳಲಾಗುತ್ತದೆ ಇದರಿಂದ ಡೇಟಾ ಪ್ರಕಾರಗಳು ಮತ್ತು ನಿರ್ಬಂಧಗಳು ವಿವರಣೆಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತವೆ.
  • ದೃಢೀಕರಣ ಮತ್ತು ದೃಢೀಕರಣವನ್ನು ಪ್ರತ್ಯೇಕ ವಿಧಾನದಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು. ಸ್ಥಳೀಯವಾಗಿ. ಅಥವಾ http ಅಧಿಕಾರವನ್ನು ಬಳಸುವುದು.
  • ವೆಬ್ ಸೇವೆಗಳು ಸೋಪ್ ಪ್ರೋಟೋಕಾಲ್ ಮತ್ತು http ಮೂಲಕ ಎರಡೂ ಕೆಲಸ ಮಾಡಬಹುದು, ಅಂದರೆ, ವಿನಂತಿಗಳನ್ನು ಪಡೆಯಿರಿ. ಅಂದರೆ, ಸರಳವಾದ ಡೇಟಾವನ್ನು (ರಚನೆಯಿಲ್ಲದೆ) ನಿಯತಾಂಕಗಳಾಗಿ ಬಳಸಿದರೆ, ನಂತರ ನೀವು ಸಾಮಾನ್ಯ ಪಡೆಯಿರಿ www.site.com/users.asmx/GetUser?Name=Vasia ಅಥವಾ ಪೋಸ್ಟ್ ಅನ್ನು ಸರಳವಾಗಿ ಕರೆಯಬಹುದು. ಆದಾಗ್ಯೂ, ಇದು ಯಾವಾಗಲೂ ಮತ್ತು ಎಲ್ಲೆಡೆ ಅಲ್ಲ.
  • ... ವಿಕಿಪೀಡಿಯಾ ನೋಡಿ

ಸಾಕಷ್ಟು ಅನಾನುಕೂಲಗಳೂ ಇವೆ:

  • ಅಸಮಂಜಸವಾಗಿ ದೊಡ್ಡ ಸಂದೇಶದ ಗಾತ್ರ. ಒಳ್ಳೆಯದು, ಇಲ್ಲಿ xml ನ ಸ್ವರೂಪವು ಸ್ವರೂಪವು ಅನಗತ್ಯವಾಗಿರುತ್ತದೆ, ಹೆಚ್ಚು ಟ್ಯಾಗ್‌ಗಳು, ಹೆಚ್ಚು ಅನುಪಯುಕ್ತ ಮಾಹಿತಿ. ಜೊತೆಗೆ ಸೋಪ್ ಅದರ ಪುನರಾವರ್ತನೆಗೆ ಸೇರಿಸುತ್ತದೆ. ಇಂಟ್ರಾನೆಟ್ ವ್ಯವಸ್ಥೆಗಳಿಗೆ, ಟ್ರಾಫಿಕ್ ಸಮಸ್ಯೆಯು ಇಂಟರ್ನೆಟ್‌ಗಿಂತ ಕಡಿಮೆ ತೀವ್ರವಾಗಿರುತ್ತದೆ, ಆದ್ದರಿಂದ ಸ್ಥಳೀಯ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಸೋಪ್ ಹೆಚ್ಚು ಬೇಡಿಕೆಯಲ್ಲಿದೆ, ನಿರ್ದಿಷ್ಟವಾಗಿ, ಶೇರ್‌ಪಾಯಿಂಟ್ ಸೋಪ್ ವೆಬ್ ಸೇವೆಯನ್ನು ಹೊಂದಿದೆ, ಅದರೊಂದಿಗೆ ನೀವು ಯಶಸ್ಸಿನೊಂದಿಗೆ ಸಂವಹನ ಮಾಡಬಹುದು (ಮತ್ತು ಕೆಲವು ಮಿತಿಗಳು).
  • ವೆಬ್ ಸೇವೆಯ ವಿವರಣೆಯ ಸ್ವಯಂಚಾಲಿತ ಬದಲಾವಣೆಯು ಎಲ್ಲಾ ಕ್ಲೈಂಟ್‌ಗಳನ್ನು ಮುರಿಯಬಹುದು. ಒಳ್ಳೆಯದು, ಇದು ಯಾವುದೇ ಸಿಸ್ಟಮ್‌ಗೆ ಹೋಲುತ್ತದೆ, ಆದ್ದರಿಂದ ಹಳೆಯ ವಿಧಾನಗಳೊಂದಿಗೆ ಹಿಂದುಳಿದ ಹೊಂದಾಣಿಕೆಯನ್ನು ಬೆಂಬಲಿಸದಿದ್ದರೆ, ಎಲ್ಲವೂ ಕುಸಿಯುತ್ತದೆ ...
  • ಮೈನಸ್ ಅಲ್ಲ, ಆದರೆ ಅನನುಕೂಲತೆ. ಎಲ್ಲಾ ವಿಧಾನದ ಕರೆ ಕ್ರಿಯೆಗಳು ಪರಮಾಣುವಾಗಿರಬೇಕು. ಉದಾಹರಣೆಗೆ, ಸಬ್‌ಡಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ನಾವು ವಹಿವಾಟನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು, ಹಲವಾರು ಪ್ರಶ್ನೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು, ನಂತರ ರೋಲ್‌ಬ್ಯಾಕ್ ಅಥವಾ ಕಮಿಟ್ ಮಾಡಬಹುದು. ಸೋಪಿನಲ್ಲಿ ಯಾವುದೇ ವಹಿವಾಟುಗಳಿಲ್ಲ. ಒಂದು ವಿನಂತಿ, ಒಂದು ಪ್ರತಿಕ್ರಿಯೆ, ಸಂಭಾಷಣೆ ಮುಗಿದಿದೆ.
  • ಸರ್ವರ್ ಬದಿಯಲ್ಲಿರುವ ವಿವರಣೆಯೊಂದಿಗೆ ವ್ಯವಹರಿಸುವುದು (ಎಲ್ಲವನ್ನೂ ನಾನು ಸರಿಯಾಗಿ ವಿವರಿಸಿದ್ದೇನೆಯೇ?), ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಏನಿದೆ (ಇಲ್ಲಿ ನನಗೆ ಏನು ಬರೆಯಲಾಗಿದೆ?) ತುಂಬಾ ಕಷ್ಟಕರವಾಗಿರುತ್ತದೆ. ನಾನು ಕ್ಲೈಂಟ್ ಸೈಡ್ನೊಂದಿಗೆ ವ್ಯವಹರಿಸಬೇಕಾದ ಹಲವಾರು ಬಾರಿ ಇದ್ದವು ಮತ್ತು ಸರ್ವರ್ ಪ್ರೋಗ್ರಾಮರ್ ಅವರು ಡೇಟಾವನ್ನು ತಪ್ಪಾಗಿ ವಿವರಿಸಿದ್ದಾರೆ ಎಂದು ಮನವರಿಕೆ ಮಾಡಬೇಕಾಗಿತ್ತು, ಆದರೆ ಅವುಗಳಲ್ಲಿ ಏನನ್ನೂ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಅವನಿಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ, ಏಕೆಂದರೆ ಸ್ವಯಂಚಾಲಿತ ಉತ್ಪಾದನೆ ಮತ್ತು ಅವನು ಹಾಗೆ ಮಾಡಬಾರದು, ಇದು ಸಾಫ್ಟ್‌ವೇರ್‌ನ ವಿಷಯವಾಗಿದೆ. ಮತ್ತು ದೋಷವು ನೈಸರ್ಗಿಕವಾಗಿ ವಿಧಾನದ ಕೋಡ್‌ನಲ್ಲಿತ್ತು, ಪ್ರೋಗ್ರಾಮರ್ ಅದನ್ನು ನೋಡಲಿಲ್ಲ.
  • ವೆಬ್ ಸೇವೆಗಳ ಡೆವಲಪರ್‌ಗಳು ಈ ವೆಬ್ ಸೇವೆಗಳನ್ನು ಬಳಸುವ ಜನರಿಂದ ಬಹಳ ದೂರದಲ್ಲಿದ್ದಾರೆ ಎಂದು ಅಭ್ಯಾಸವು ತೋರಿಸುತ್ತದೆ. ಯಾವುದೇ ವಿನಂತಿಗೆ ಪ್ರತಿಕ್ರಿಯೆಯಾಗಿ (ಹೊರಗಿನಿಂದ ಮಾನ್ಯವಾಗಿದೆ), ಅರ್ಥವಾಗದ ದೋಷ "ದೋಷ 5. ಎಲ್ಲವೂ ಕೆಟ್ಟದಾಗಿದೆ" ಬರಬಹುದು. ಇದು ಎಲ್ಲಾ ಅಭಿವರ್ಧಕರ ಆತ್ಮಸಾಕ್ಷಿಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ :)
  • ನನಗೆ ಏನೂ ನೆನಪಿಲ್ಲ ಎಂದು ನನಗೆ ಖಾತ್ರಿಯಿದೆ ...

ಉದಾಹರಣೆಗೆ, ತೆರೆದ ಬೆಲಾವಿಯಾ ವೆಬ್ ಸೇವೆ ಇದೆ:

  • http://86.57.245.235/TimeTable/Service.asmx - ಪ್ರವೇಶ ಬಿಂದು, ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಡೆವಲಪರ್‌ಗಳಿಗೆ ವಿಧಾನಗಳ ಪಠ್ಯ ವಿವರಣೆಯೂ ಇದೆ.
  • http://86.57.245.235/TimeTable/Service.asmx?WSDL - ಸ್ವೀಕರಿಸಿದ ಮತ್ತು ಹಿಂತಿರುಗಿಸಿದ ಡೇಟಾದ ವಿಧಾನಗಳು ಮತ್ತು ಪ್ರಕಾರಗಳ wsdl ವಿವರಣೆ.
  • http://86.57.245.235/TimeTable/Service.asmx?op=GetAirportsList - xml ವಿನಂತಿಯ ಪ್ರಕಾರ ಮತ್ತು xml ಪ್ರತಿಕ್ರಿಯೆಯ ಉದಾಹರಣೆಯೊಂದಿಗೆ ನಿರ್ದಿಷ್ಟ ವಿಧಾನದ ವಿವರಣೆ.

ನೀವು ಹಸ್ತಚಾಲಿತವಾಗಿ ವಿನಂತಿಯನ್ನು ರಚಿಸಬಹುದು ಮತ್ತು ಕಳುಹಿಸಬಹುದು:

POST /TimeTable/Service.asmx HTTP/1.1 ಹೋಸ್ಟ್: 86.57.245.235 ವಿಷಯ-ಪ್ರಕಾರ: ಪಠ್ಯ/xml; charset=utf-8 ವಿಷಯ-ಉದ್ದ: ಉದ್ದ SOAPAction: "http://webservices.belavia.by/GetAirportsList" en

ಉತ್ತರ ಹೀಗಿರುತ್ತದೆ:

HTTP/1.1 200 ಸರಿ ದಿನಾಂಕ: ಸೋಮ, 30 ಸೆಪ್ಟೆಂಬರ್ 2013 00:06:44 GMT ಸರ್ವರ್: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-ಆವೃತ್ತಿ: 4.0.30319 ಸಂಗ್ರಹ-ನಿಯಂತ್ರಣ: ಖಾಸಗಿ, ಗರಿಷ್ಠ -ವಯಸ್ಸು=0 ವಿಷಯ-ಪ್ರಕಾರ: ಪಠ್ಯ/xml; charset=utf-8 ವಿಷಯ-ಉದ್ದ: 2940

ZY ಹಿಂದೆ, ಏರೋಫ್ಲಾಟ್ ವೆಬ್ ಸೇವೆಯನ್ನು ತೆರೆಯಲಾಯಿತು, ಆದರೆ 1C 8ku ನಲ್ಲಿ ಸೋಪ್‌ಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಿದ ನಂತರ, 1c ಬೀಟಾ ಪರೀಕ್ಷಕರ ಗುಂಪನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸ್ಥಾಪಿಸಲಾಯಿತು. ಈಗ ಅಲ್ಲಿ ಏನೋ ಬದಲಾಗಿದೆ (ನನಗೆ ವಿಳಾಸ ಗೊತ್ತಿಲ್ಲ, ನಿಮಗೆ ಆಸಕ್ತಿ ಇದ್ದರೆ ನೀವು ಹುಡುಕಬಹುದು).
ZZY ಹಕ್ಕು ನಿರಾಕರಣೆ. ಮನೆಮಂದಿಯಲ್ಲಿ ಮಾತನಾಡಿದರು. ನೀವು ಕುಡಿಯಬಹುದು.

ಸಾಮಾನ್ಯವಾಗಿ, ಇಂದು ಪ್ರಮಾಣಿತ XML ಡೇಟಾ ವಿನಿಮಯ ಪ್ರೋಟೋಕಾಲ್‌ಗಳಿವೆ:

  • XML-RPC- ನೀವು ಪ್ಯಾಕೆಟ್ ಅನ್ನು ರವಾನಿಸಿ ಮತ್ತು ನೀವು ಕರೆ ಮಾಡಲು ಬಯಸುವ ಸರ್ವರ್‌ನಲ್ಲಿ ಯಾವ ವಿಧಾನವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ.
  • ಉಳಿದ- ಸರ್ವರ್‌ನಲ್ಲಿ ಕೆಲವು ವಸ್ತುಗಳು ಇವೆ. ಪ್ರತಿಯೊಂದು ವಸ್ತುವು ಕೆಲವು ಗುರುತಿಸುವಿಕೆಯಿಂದ ನಿರೂಪಿಸಲ್ಪಟ್ಟಿದೆ. ಪ್ರತಿಯೊಂದು ಅಂಶವು ತನ್ನದೇ ಆದ url ಅನ್ನು ಹೊಂದಿದೆ. ಯಾವುದೇ ಅಂಶದೊಂದಿಗೆ, ನೀವು ಹೀಗೆ ಮಾಡಬಹುದು: ಸೇರಿಸಿ, ಅಳಿಸಿ, ನವೀಕರಿಸಿ, ಆಯ್ಕೆ ಮಾಡಿ. ನೀವು ಬಯಸಿದ ವಿನಂತಿಯನ್ನು ಸರ್ವರ್‌ಗೆ ಕಳುಹಿಸುತ್ತೀರಿ (ಉದಾಹರಣೆಗೆ, ಅಂತಹ ಮತ್ತು ಅಂತಹ ಅಂಶವನ್ನು ಸೇರಿಸಿ). ಕ್ಲೈಂಟ್-ಸರ್ವರ್ ವಿನಿಮಯವು JSON ಅಥವಾ XML ಅನ್ನು ಆಧರಿಸಿದೆ.

SOAP RPC (ಸರ್ವಿಸ್ ಓರಿಯೆಂಟೆಡ್ ಆರ್ಕಿಟೆಕ್ಚರ್, ಪರಸ್ಪರ ಸಂವಹನ ನಡೆಸುವ ಸಡಿಲವಾಗಿ ಜೋಡಿಸಲಾದ ಸೇವೆಗಳ ಒಂದು ಸೆಟ್) ಅನ್ನು ಆಧರಿಸಿದೆ. RPC ಯ ಮುಖ್ಯ ಪ್ರಯೋಜನವೆಂದರೆ ಸಣ್ಣ ಪ್ರಮಾಣದ ನೆಟ್ವರ್ಕ್ ಸಂಪನ್ಮೂಲಗಳು (ಪ್ರವೇಶ ಬಿಂದುಗಳು) ಮತ್ತು ಒಳಗೊಂಡಿರುವ ಹಲವು ವಿಧಾನಗಳು. ಈ ಪ್ರಯೋಜನದ ಹೊರತಾಗಿಯೂ, RPC ಯು ಹಳತಾದ ಪ್ರೋಟೋಕಾಲ್ ಆಗಿದ್ದು ಅದು ಹಲವಾರು ಅನಾನುಕೂಲಗಳನ್ನು ಹೊಂದಿದೆ:

  • ನೀವು XML-RPC ಸಂದೇಶವನ್ನು ಮೌಲ್ಯೀಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. XML ನಲ್ಲಿ ಸ್ಕೀಮಾಗಳನ್ನು (ಡೇಟಾ ಮೌಲ್ಯೀಕರಣ ವಿಧಾನಗಳು) ಪ್ರಮಾಣೀಕರಿಸುವ ಮೊದಲು ಹಳೆಯ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ರಚಿಸಲಾಗಿದೆ. ಆ. ಸರ್ವರ್ ವಿನಂತಿಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ, ಈ ವಿನಂತಿಗಳು ಅದಕ್ಕಾಗಿಯೇ ಮತ್ತು ಡೇಟಾವು ಅಸಮಂಜಸವಾಗಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು. XML-RPC ನಲ್ಲಿ, ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ಇದಕ್ಕಾಗಿ ಘೋಷಿಸಲಾಗುತ್ತದೆ, ಆದರೆ ಇದು ಡೇಟಾ ಪ್ರಕಾರದ ಪರಿಶೀಲನೆಯಾಗಿದೆ ಮತ್ತು ಡೇಟಾ ಸ್ಥಿರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗುವುದಿಲ್ಲ (ನೀವು ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ನಿಯತಾಂಕಗಳೊಂದಿಗೆ ರಚನೆಯನ್ನು ಸ್ವೀಕರಿಸಿದ್ದೀರಿ).
  • ನೀವು ಸಂಯೋಜಿತ ಸಂದೇಶಗಳನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
  • ನೀವು ಸ್ಥಳ ಮತ್ತು ಸಮಯವನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ (RPC ರಚನೆಯ ನಂತರ ಕಾಣಿಸಿಕೊಂಡಿದೆ).
  • ನೀವು ಸಂದೇಶವನ್ನು ವಿಸ್ತರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ, ಅಂದರೆ. ಹೆಚ್ಚುವರಿ ಮಾಹಿತಿಯನ್ನು ಸೇರಿಸಿ.

ಈ ಎಲ್ಲಾ ನ್ಯೂನತೆಗಳನ್ನು XML ಸ್ಕೀಮಾದಲ್ಲಿ ಪರಿಹರಿಸಲಾಗಿದೆ. XML ಡಾಕ್ಯುಮೆಂಟ್ ಅನ್ನು ವಿವರಿಸಲು ಇದು ಉದ್ಯಮದ ಮಾನದಂಡವಾಗಿದೆ. ಆ. ಇದು ಅನಿಯಂತ್ರಿತ ಡೇಟಾವನ್ನು ಮಾಡೆಲಿಂಗ್ ಮಾಡುವ ಒಂದು ಮಾರ್ಗವಾಗಿದೆ. ಒಂದು XML ಸ್ಕೀಮಾವು ಮಾದರಿಯನ್ನು ವಿವರಿಸಬಹುದು (ಅಂಶಗಳು ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳು ಮತ್ತು ಅವುಗಳ ರಚನೆ), ಡೇಟಾ ಪ್ರಕಾರಗಳು (ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ನಿರೂಪಿಸುತ್ತದೆ), ಮತ್ತು ಶಬ್ದಕೋಶ (ಅಂಶಗಳು ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳ ಹೆಸರುಗಳು).

XML-RPC ಯ ಎಲ್ಲಾ ನ್ಯೂನತೆಗಳನ್ನು ಆಧರಿಸಿ, ಅವರು SOAP ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ರಚಿಸಿದರು.

ಸೋಪ್(ಸಿಮ್ಲ್ ಆಬ್ಜೆಕ್ಟ್ ಆಕ್ಸೆಸ್ ಪ್ರೋಟೋಕಾಲ್) - ವಸ್ತುವನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರೋಟೋಕಾಲ್ (ಪ್ರವೇಶ ಬಿಂದು). ವಿತರಿಸಿದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಇಂದು ಇದು ಮುಖ್ಯ ಉದ್ಯಮ ಮಾನದಂಡವಾಗಿದೆ.

ಇದು XML-RPC ಭಾಷೆಯ ವಿಸ್ತರಣೆಯಾಗಿದೆ. ಆ. ಇದನ್ನು ತತ್ವದ ಮೇಲೆ ನಿರ್ಮಿಸಲಾಗಿದೆ: 1 ಪ್ರವೇಶ ಬಿಂದು ಮತ್ತು ಯಾವುದೇ ವಿಧಾನಗಳು. ಸಾರಿಗೆಯ ವಿಷಯದಲ್ಲಿ ಪ್ರೋಟೋಕಾಲ್ ಸ್ವತಃ (ಡೇಟಾವನ್ನು ಹೇಗೆ ವರ್ಗಾಯಿಸುವುದು) ವ್ಯಾಪಕ ಆಯ್ಕೆಯನ್ನು ನೀಡುತ್ತದೆ: SMTP, FTP, HTTP, MSMQ.

SOAP XML ವೆಬ್ ಸೇವೆಗಳ (XML ವೆಬ್ ಸೇವೆಗಳು) ಅನುಷ್ಠಾನದ ಹೃದಯಭಾಗದಲ್ಲಿದೆ. SOAP ನ ತೊಂದರೆಯೆಂದರೆ ಅದನ್ನು ಕಲಿಯುವುದು ಕಷ್ಟ.

SOAP ಕ್ಲೈಂಟ್ ಮತ್ತು ಸರ್ವರ್ ನಡುವಿನ ಸಂದೇಶಗಳ ವಿನಿಮಯವನ್ನು ಆಧರಿಸಿದೆ (ಸಿಂಕ್ರೊನಸ್ ಮತ್ತು ಅಸಮಕಾಲಿಕವಾಗಿ). ಪ್ರತಿಯೊಂದು ಸಂದೇಶವು ಡೇಟಾದ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿರುತ್ತದೆ (ಯಾವ ಡೇಟಾವನ್ನು ರವಾನಿಸಲಾಗಿದೆ / ಸ್ವೀಕರಿಸಲಾಗಿದೆ). SOAP XML ಸ್ಕೀಮಾಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಂದೇಶದ ಸಂಪೂರ್ಣ ರಚನೆಯನ್ನು ಮುಂಚಿತವಾಗಿ ವಿವರಿಸುತ್ತದೆ: ಸಂದೇಶದಲ್ಲಿ ಏನಿರಬೇಕು, ಅದು ಹೇಗೆ ರವಾನೆಯಾಗುತ್ತದೆ. ಇದು ಸರ್ವರ್ ಅನ್ನು ತಿಳಿಯದೆಯೇ, ಅಲ್ಲಿ ಏನು ನಡೆಯುತ್ತಿದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ ಮತ್ತು ಈ ಸಂದೇಶವು ತನಗಾಗಿಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು ಸರ್ವರ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ.

XML ಸ್ಕೀಮಾ

ಡೇಟಾ ರಚನೆಯನ್ನು ವಿವರಿಸುವುದು ಸ್ಕೀಮಾದ ಉದ್ದೇಶವಾಗಿದೆ, ಅಂದರೆ. ನಾವು ಏನು ಹೊಂದಿದ್ದೇವೆ. ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಸರಳ ಮತ್ತು ಸಂಕೀರ್ಣ ಪ್ರಕಾರಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ (ಸ್ಕೇಲಾರ್ಗಳು ಮತ್ತು ರಚನೆಗಳು). ಸರಳ ಪ್ರಕಾರ (ಸ್ಟ್ರಿಂಗ್, ಸಂಖ್ಯೆ, ಬೂಲಿಯನ್, ದಿನಾಂಕ) ಒಳಗೆ ಏನನ್ನೂ ಹೊಂದಿರುವುದಿಲ್ಲ. ರಚನೆ (ವಸ್ತು) ಗುಣಲಕ್ಷಣಗಳನ್ನು ಹೊಂದಿರಬಹುದು.

ಮೂಲ SOAP ಕಾರ್ಯಾಚರಣೆಗಳು

  • ಸರಳ ಕ್ಲೈಂಟ್-ಸರ್ವರ್ ಮಾಹಿತಿ ವಿನಿಮಯವಲ್ಲ. ಆದರೆ ಸರ್ವರ್‌ನ ಸ್ವಯಂಚಾಲಿತ ಗುರುತಿಸುವಿಕೆ ಮತ್ತು ಈ ಸರ್ವರ್‌ಗಾಗಿ ಹುಡುಕಾಟ, ಅಂದರೆ. ಕ್ಲೈಂಟ್‌ಗೆ ಸರ್ವರ್ ಬಗ್ಗೆ ಏನೂ ತಿಳಿದಿಲ್ಲದಿರಬಹುದು. ಆ. ಕ್ಲೈಂಟ್ ಮೊದಲು ಸರ್ವರ್ ಅನ್ನು ಹುಡುಕುತ್ತದೆ, ಸೂಕ್ತವಾದ ಸೇವೆಗಳನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತದೆ, ಯಾವ ವಿಧಾನಗಳಿವೆ, ಸರ್ವರ್‌ನಲ್ಲಿ ಏನಿದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಅದಕ್ಕೆ ಕರೆ ಮಾಡುತ್ತದೆ.
  • ಸರ್ವರ್ ತನ್ನ ಮಾಹಿತಿಯನ್ನು ಪ್ರಕಟಿಸುತ್ತದೆ (ಸ್ಥಳ, ಅದು ಯಾವ ವಿಧಾನಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ) ಇದರಿಂದ ಕ್ಲೈಂಟ್ ಈ ಸರ್ವರ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯಬಹುದು. ಪ್ರಕಟಣೆಯು UDDI ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ನಡೆಯುತ್ತದೆ.

SOAP ಸಂದೇಶಗಳ ರಚನೆ:

  • SOAP ಹೊದಿಕೆ (ಹೊದಿಕೆ) - ಇದು ಸಂಪೂರ್ಣ ಸಂದೇಶವನ್ನು ಒಳಗೊಂಡಿದೆ. ಹೆಡರ್ ಮತ್ತು ದೇಹವನ್ನು ಒಳಗೊಂಡಿದೆ.
  • SOAP ಹೆಡರ್ (ಹೆಡರ್) - ಹೆಚ್ಚುವರಿ ಮಾಹಿತಿ (ಅಧಿಕಾರ, ಉದಾಹರಣೆಗೆ).
  • SOAP ದೇಹ (ದೇಹ) - ಸಂದೇಶ ಸ್ವತಃ.
  • SOAP ದೋಷ (ದೋಷ) - ಸರ್ವರ್‌ನಿಂದ ಕ್ಲೈಂಟ್‌ಗೆ ದೋಷಗಳನ್ನು ವರ್ಗಾಯಿಸುವ ಒಂದು ಮಾರ್ಗ.

WSDL

WSDL(ವೆಬ್ ಸೇವೆಗಳ ವಿವರಣೆ ಭಾಷೆ) - ವೆಬ್ ಸೇವೆಗಳ ವಿವರಣೆ ಭಾಷೆ. SOAP ನಲ್ಲಿ ಬಳಸಲಾಗಿದೆ. ಇದು ಎಲ್ಲವನ್ನೂ ವಿವರಿಸುವ ಒಂದು ರೀತಿಯ ದಾಖಲೆಯಾಗಿದೆ: ಯಾವ ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳನ್ನು ಬಳಸಲಾಗಿದೆ, ಯಾವ ಡೇಟಾ ಸ್ಕೀಮ್‌ಗಳನ್ನು ಬಳಸಲಾಗಿದೆ, ಕ್ಲೈಂಟ್‌ನಿಂದ ಸರ್ವರ್ ಯಾವ ರೀತಿಯ ಸಂದೇಶಗಳನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ, ಯಾವ ಲಕೋಟೆಗಳು ಯಾವ ವಿಧಾನಕ್ಕೆ ಸೇರಿವೆ, ಯಾವ ವಿಧಾನಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಅಸ್ತಿತ್ವದಲ್ಲಿವೆ, ಯಾವ ವಿಳಾಸಕ್ಕೆ ಕಳುಹಿಸಬೇಕು, ಇತ್ಯಾದಿ ವಾಸ್ತವವಾಗಿ, WSDL ಒಂದು ವೆಬ್ ಸೇವೆಯಾಗಿದೆ. ಕ್ಲೈಂಟ್ ಈ ಡಾಕ್ಯುಮೆಂಟ್ನ ವಿಷಯಗಳನ್ನು ಅಧ್ಯಯನ ಮಾಡಲು ಸಾಕು, ಅವರು ಈಗಾಗಲೇ ಸರ್ವರ್ ಬಗ್ಗೆ ಎಲ್ಲವನ್ನೂ ತಿಳಿದಿದ್ದಾರೆ.

ಯಾವುದೇ ಸರ್ವರ್ WSDL ಅನ್ನು ಪ್ರಕಟಿಸಬೇಕು.

WSDL ಬ್ಲಾಕ್ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ:

  • ಸೇವೆಯ ವ್ಯಾಖ್ಯಾನ, ಅಂದರೆ. ಪ್ರವೇಶ ಬಿಂದು, ಪೋರ್ಟ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ.
  • ವಿಧಾನದ ಸ್ವರೂಪ. ಪ್ರವೇಶ ಬಿಂದುವು ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ಬದ್ಧವಾಗಿದೆ, ಅಂದರೆ. ಇದು ಯಾವ ವಿಧಾನಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಕರೆ ಪ್ರಕಾರ, ಪ್ರಸರಣದ ವಿಧಾನವನ್ನು ಸೂಚಿಸಿ. ಪ್ರತಿ ವಿಧಾನದ ಒಳಗೆ, ಒಂದು ವಿವರಣೆಯಿದೆ - ಡೇಟಾವನ್ನು ಯಾವ ರೂಪದಲ್ಲಿ ರವಾನಿಸಲಾಗುತ್ತದೆ - SOAP ರೂಪದಲ್ಲಿ.
  • ಸಂದೇಶಕ್ಕೆ ಬೈಂಡಿಂಗ್ ವಿಧಾನಗಳು.
  • ಸಂದೇಶಗಳ ವಿವರಣೆ.

ಹಕ್ಕು ನಿರಾಕರಣೆ:ಈ ವಿಷಯದ ಬಗ್ಗೆ ಬಹಳಷ್ಟು ಲೇಖನಗಳನ್ನು ಬರೆಯಲಾಗಿದೆ ಮತ್ತು, ನೀವು ಊಹಿಸಿದಂತೆ, ಇದು ಇನ್ನೊಂದು. ಬಹುಶಃ ನೀವು ಅದರಿಂದ ಹೊಸದನ್ನು ಕಲಿಯುವಿರಿ, ಆದರೆ ನೀವು ಸ್ವಂತವಾಗಿ ಗೂಗಲ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗದ ಯಾವುದೇ ರಹಸ್ಯವನ್ನು ಇಲ್ಲಿ ವಿವರಿಸಲಾಗಿಲ್ಲ. ವೈಯಕ್ತಿಕ ಅನುಭವದಿಂದ ಮಾತ್ರ ಟಿಪ್ಪಣಿಗಳು.

ಪರಿಚಯ

ಮೂರನೇ ವ್ಯಕ್ತಿಯ ವೆಬ್ ಸೇವೆ ಇರುವಾಗ ನಾವು ಪರಿಸ್ಥಿತಿಯನ್ನು ಮಾತ್ರ ಪರಿಗಣಿಸುತ್ತೇವೆ ಮತ್ತು ಡೇಟಾ ವಿನಿಮಯವನ್ನು ಸ್ಥಾಪಿಸುವುದು ಕಾರ್ಯವಾಗಿದೆ.

ಸೇವೆಯ ರಚನೆಯನ್ನು ಫೈಲ್ನಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ WSDL(eng. ವೆಬ್ ಸೇವೆಗಳ ವಿವರಣೆ ಭಾಷೆ)

ವೆಬ್ ಸೇವೆಗೆ ಪ್ರವೇಶ ಬಿಂದು ಇರುವ ಲಿಂಕ್ ಮೂಲಕ ಫೈಲ್ ಅನ್ನು ಹೆಚ್ಚಾಗಿ ಪ್ರವೇಶಿಸಲಾಗುತ್ತದೆ. ನಾನು "ಹೆಚ್ಚಾಗಿ" ಬರೆದಿದ್ದೇನೆ ಏಕೆಂದರೆ ವಿನಾಯಿತಿಗಳಿವೆ. ಉದಾಹರಣೆಗೆ, SAP-ಆಧಾರಿತ ವೆಬ್ ಸೇವೆಯು wsdl ಅನ್ನು ಪ್ರಕಟಿಸುವುದಿಲ್ಲ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ಮಾತ್ರ ಹಿಂಪಡೆಯಬಹುದು.

ಮತ್ತು ಆದ್ದರಿಂದ, ನಾವು ವೆಬ್ ಸೇವೆ, ಲಾಗಿನ್, ಪಾಸ್ವರ್ಡ್ನ ವಿವರಣೆಯನ್ನು ಹೊಂದಿದ್ದೇವೆ. ಸಂಪರ್ಕಿಸೋಣ.

// ServiceNamespace URL ನ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ವಿವರಿಸಿ = "http://Somesite.ru"; ಬಳಕೆದಾರ ಹೆಸರು = "TestUser"; ಪಾಸ್ವರ್ಡ್ = "q1w2e3"; LocationWSDL = "https://Somesite.ru/WebService/Some?wsdl"; ServiceName = "SomeServiceName"; ConnectionPointName = "SomeService_Port"; // SSL ಸಂಪರ್ಕವನ್ನು ರಚಿಸಿ = ಹೊಸ SecureConnectionOpenSSL(); WSDefinition = ಹೊಸ WSDefinition(LocationWSDL,SSL); WSProxy = ಹೊಸ WSProxy(WSDefinition, ServiceNamespace URL, ServiceName, ConnectionPointName, SSL); WSProxy.User = ಬಳಕೆದಾರ ಹೆಸರು; WSProxy.Password = ಪಾಸ್‌ವರ್ಡ್;

ಅತ್ಯುತ್ತಮ! ನಾವು ವೆಬ್ ಸೇವೆಗೆ ಸಂಪರ್ಕಿಸಿದ್ದೇವೆ! ಸಿದ್ಧಾಂತದಲ್ಲಿ, ಇದು ಯಾವುದೇ ವಿನಿಮಯ ಆಯ್ಕೆಯ ಆಧಾರವಾಗಿದೆ, ಏಕೆಂದರೆ ಅದು ನಿಮಗೆ ರಚಿಸಲು ಅನುಮತಿಸುತ್ತದೆ ಡೇಟಾ ರಚನೆಯ ವಸ್ತು wsdl ಆಧರಿಸಿ, ಮತ್ತು ಅಂತಹ ವಸ್ತುವಿನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು ಸಂತೋಷವಾಗಿದೆ.

SoapUI ನಮಗೆ ನೀಡುವ XML ಅನ್ನು ಪರಿಗಣಿಸಿ

357 121212 ಎಂ 19900111 ಮರ್ಸಿಡಿಸ್ GLS ಆಡಿ ಟಿಟಿ

ಈಗ ಅದನ್ನು ಪ್ರೋಗ್ರಾಮಿಕ್ ಆಗಿ ವಿವರಿಸೋಣ

// ಒಂದು ವಸ್ತುವನ್ನು ರಚಿಸಿ ಮತ್ತು ಅದನ್ನು ಡೇಟಾದೊಂದಿಗೆ ತುಂಬಿಸಿ OwnXDTOFactory = WSDefinition.XDTOFactory; ರೂಟ್‌ಟೈಪ್ = ಸ್ವಂತ ಫ್ಯಾಕ್ಟರಿXDTO.ಟೈಪ್(URLServiceNamespace, "SubMISSION"); ರೂಟ್ ಆಬ್ಜೆಕ್ಟ್ = OwnFactoryXDTO.Create(RootType); RootObject.ID = "4356"; ClientType = OwnFactoryXDTO.Type(URLServiceNamespace, "CUSTOMER"); ClientObject = OwnFactoryXDTO.Create(ClientType); ClientObject.CLIENT_ID = "121212"; ClientObject.SEX = "M"; // F - ಹೆಣ್ಣು, M - ಪುರುಷ ClientObject.CLIENT_BIRTHDAY = "19900111"; // ಗ್ರಾಹಕ ಕಾರುಗಳು ಆಟೋಟೈಪ್ = CustomFactoryXDTO.Type(URLServiceNamespace, "CARS"); ಆಟೋಆಬ್ಜೆಕ್ಟ್ = OwnFactoryXDTO.Create(AutoType); AutoObject.CLASS = "ಮರ್ಸಿಡಿಸ್"; AutoObject.MODEL = "GLS"; ClientObject.CARS.Add(AutoObject); ಆಟೋಆಬ್ಜೆಕ್ಟ್ = OwnFactoryXDTO.Create(AutoType); AutoObject.CLASS = "ಆಡಿ"; AutoObject.MODEL = "TT"; ClientObject.CARS.Add(AutoObject); RootObject.CUSTOMER.Add(ClientObject);

ಡೇಟಾ ಯಶಸ್ವಿಯಾಗಿ ಪೂರ್ಣಗೊಂಡಿದೆ. ಈಗ ನಾವು ಅವರನ್ನು ಕಳುಹಿಸಬೇಕಾಗಿದೆ.

ಈ ಕ್ಷಣದಲ್ಲಿ, ಅನೇಕ ಸೂಕ್ಷ್ಮ ವ್ಯತ್ಯಾಸಗಳು ಉದ್ಭವಿಸುತ್ತವೆ. ಪ್ರತಿಯೊಂದನ್ನು ಪರಿಗಣಿಸಲು ಪ್ರಯತ್ನಿಸೋಣ.

ಪಾಕವಿಧಾನ 1. ಸಂಪೂರ್ಣ XDTO ವಸ್ತುವನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ

ಫಲಿತಾಂಶ = WSProxy.AddCustomers(RootObject);

ಸೇವೆಯು ನಮಗೆ ಹಿಂತಿರುಗಿದ ಫಲಿತಾಂಶವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಮಾತ್ರ ಇದು ಉಳಿದಿದೆ ಮತ್ತು ಅದು ಇಲ್ಲಿದೆ. ಇದು ತುಂಬಾ ಅನುಕೂಲಕರವಾಗಿದೆ ಎಂದು ಒಪ್ಪಿಕೊಳ್ಳಿ!

ಆದರೆ ಪ್ರಾಯೋಗಿಕವಾಗಿ ಇದು ಯಾವಾಗಲೂ ಅಲ್ಲ. ಉದಾಹರಣೆಗೆ, ರೂಟ್ ಟ್ಯಾಗ್‌ನ ನೇಮ್‌ಸ್ಪೇಸ್ ಚೈಲ್ಡ್ ಟ್ಯಾಗ್‌ಗಳಿಗಿಂತ ಭಿನ್ನವಾದಾಗ xml ಒಳಗೆ ಕೆಲವು ಟ್ಯಾಗ್‌ಗಳನ್ನು ಪೂರ್ವಪ್ರತ್ಯಯದೊಂದಿಗೆ 1c ಹೊಂದುವುದಿಲ್ಲ. ಅಂತಹ ಸಂದರ್ಭಗಳಲ್ಲಿ, ನೀವು ಸೋಪ್ ಅನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಸಂಗ್ರಹಿಸಬೇಕು. ಶುದ್ಧ xml ಅನ್ನು ನಿಯತಾಂಕವಾಗಿ ನಿರೀಕ್ಷಿಸುವ ವೆಬ್ ಸೇವೆಗಳೊಂದಿಗೆ ನಾನು ವ್ಯವಹರಿಸಬೇಕಾಗಿತ್ತು. ಹುಚ್ಚುತನ, ಆದರೆ ಇನ್ನೂ ಅದನ್ನು ಮಾಡಲು ತುಂಬಾ ಕಷ್ಟವಲ್ಲ.

ಪಾಕವಿಧಾನ 2. ಶುದ್ಧ xml ಅನ್ನು ಪ್ಯಾರಾಮೀಟರ್ ಆಗಿ ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ

XMLRecordParameters = NewXMLRecordParameters("UTF-8", "1.0", True); MyXML = ಹೊಸ XMLWriter; MyXML.SetString(XMLRecordParameters); MyXML.WriteDeclarationXML(); CustomXDTOFactory.WriteXML(MyXML, RootObject); StringXML = MyXML.Close(); ಒಂದು ವೇಳೆ DeleteNamespaceDescription ನಂತರ AttemptFirstTagInString = StrGetString(XMLString,2); RootTagName = RootObject.Type().Name; XMLString = StrReplace(XMLString, FirstTagInString, "<"+ИмяКорневогоТэга+">"); ವಿನಾಯಿತಿ //ErrorDescription() EndTry; EndIf; ಫಲಿತಾಂಶ = WSProxy.AddCustomers(XML String);

1s ಡೀಫಾಲ್ಟ್ ಆಗಿ ಸೇರಿಸುವ ನೇಮ್‌ಸ್ಪೇಸ್ ಅನ್ನು ನೀವು ತೆಗೆದುಹಾಕದಿದ್ದರೆ, ಅದು ಕೇವಲ 5 ಸಾಲುಗಳ ಕೋಡ್‌ಗಿಂತ ಹೆಚ್ಚಾಗಿರುತ್ತದೆ. ಹೆಚ್ಚಿನ ಸಮಯ, ನಾನು xml ರೂಪಾಂತರವನ್ನು ಕಾರ್ಯದಲ್ಲಿ ಸುತ್ತಿಕೊಳ್ಳುತ್ತೇನೆ, ಏಕೆಂದರೆ ನಾವು ಸಾಮಾನ್ಯವಾಗಿ ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ವಿಧಾನಗಳನ್ನು ಕರೆಯುತ್ತೇವೆ.

ಪಾಕವಿಧಾನ 3. ಸ್ಥಳೀಯ HTTP ವಿನಂತಿಯ ಮೂಲಕ ಕಳುಹಿಸಿ.

SOAP ಸ್ಟ್ರಿಂಗ್ = " | | |" +StringXML+ " | |"; // HTTP ವಿನಂತಿಯ ಹೆಡರ್‌ಗಳನ್ನು ವಿವರಿಸುವುದು ಹೆಡರ್‌ಗಳು = ಹೊಸ ಹೊಂದಾಣಿಕೆ; ಹೆಡರ್‌ಗಳು. ಸೇರಿಸು("ವಿಷಯ-ಪ್ರಕಾರ", "ಪಠ್ಯ/xml;charset=UTF-8"); Headers.Insert("SOAPAction", "http:// sap .com/xi/WebService/soap1.1"); Headers.Insert("Authorization", "Basic "+GetBase64AuthorizationHeader(ಬಳಕೆದಾರಹೆಸರು, ಪಾಸ್‌ವರ್ಡ್)); // ಗಮನ!!! // ನೀವು ಈ ಕೆಳಗಿನ ಹೆಡರ್‌ಗಳನ್ನು ಪ್ರೋಗ್ರಾಮಿಕ್ ಆಗಿ ತುಂಬಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಇದು ದೋಷಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ // ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅವುಗಳನ್ನು ಸರಿಯಾಗಿ ತುಂಬುತ್ತದೆ //Headers.Insert("Accept-Encoding", "gzip,deflate"); //Headers.Insert("ಕಂಟೆಂಟ್-ಲೆಂತ್", ಫಾರ್ಮ್ಯಾಟ್(ಸ್ಟ್ರಿಂಗ್ ಲೆಂಗ್ತ್( SOAP ಸ್ಟ್ರಿಂಗ್)," HG=")); // ಸಂದೇಶದ ಉದ್ದ //Headers.Insert("ಹೋಸ್ಟ್", "Somesite.ru:8001"); //Headers.Insert("ಸಂಪರ್ಕ", "ಕೀಪ್-ಅಲೈವ್") ; //ಹೆಡರ್‌ಗಳು. ಸೇರಿಸಿ ("ಬಳಕೆದಾರ-ಏಜೆಂಟ್", "Apache-HttpClient/4.1.1 (java 1.5)"); // ಸೈಟ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ. ಸಂಪರ್ಕ = ಹೊಸ HTTPConnection("Somesite.ru/WebService/ಕೆಲವು", ಬಳಕೆದಾರಹೆಸರು, ಪಾಸ್‌ವರ್ಡ್, ಎಸ್‌ಎಸ್‌ಎಲ್, ತಪ್ಪು); // ವಿಳಾಸವು https:// ಇಲ್ಲದೆ ಇರಬೇಕು // POST ವಿನಂತಿಯ ಮೂಲಕ ಮೂಲ ಪುಟದ ಪಠ್ಯವನ್ನು ಪಡೆಯಿರಿ. c = ಹೊಸ HTTPRequest("/GetCustomer", ಹೆಡರ್ಸ್); HTTPRequest.SetBodyFromString(SOAPString); ಫಲಿತಾಂಶ = Connection.CallHTTPMethod("POST", HTTPRequest);

ಈ ಆಯ್ಕೆಯಲ್ಲಿ, ನಾವು ಕೈಯಾರೆ ಸೋಪ್ ಅನ್ನು ನಿರ್ಮಿಸಬೇಕಾಗುತ್ತದೆ. ಮೂಲಭೂತವಾಗಿ, ನಾವು ಸರಳವಾಗಿ ಪಾಕವಿಧಾನ 2 ರಿಂದ xml ಅನ್ನು ಸೋಪ್ ಹೊದಿಕೆಯಲ್ಲಿ ಸುತ್ತಿಕೊಳ್ಳುತ್ತೇವೆ, ಅಲ್ಲಿ ವೆಬ್ ಸೇವೆಯ ಅವಶ್ಯಕತೆಗಳನ್ನು ಅವಲಂಬಿಸಿ, ನಾವು ನಮ್ಮ ಸೋಪ್ ಅನ್ನು ನಮ್ಮ ಹೃದಯದ ವಿಷಯಕ್ಕೆ ಬದಲಾಯಿಸಬಹುದು.

ಮುಂದೆ, ನಾವು ದಾಖಲೆಗಳ ಪ್ರಕಾರ ಹೆಡರ್ಗಳನ್ನು ವಿವರಿಸುತ್ತೇವೆ. ಕೆಲವು ಸೇವೆಗಳು ಹೆಡರ್ ಇಲ್ಲದೆ ನಮ್ಮ ವಿನಂತಿಯನ್ನು ಸುಲಭವಾಗಿ ಅಗಿಯುತ್ತವೆ, ಇಲ್ಲಿ ನೀವು ನಿರ್ದಿಷ್ಟ ಪ್ರಕರಣವನ್ನು ನೋಡಬೇಕಾಗಿದೆ. ಯಾವ ಹೆಡರ್‌ಗಳನ್ನು ಶಿಫಾರಸು ಮಾಡಬೇಕೆಂದು ನಿಮಗೆ ತಿಳಿದಿಲ್ಲದಿದ್ದರೆ, RAW ಟ್ಯಾಬ್‌ಗೆ ಬದಲಾಯಿಸುವ ಮೂಲಕ SoapUI ನಲ್ಲಿ ವಿನಂತಿಯನ್ನು ಇಣುಕಿ ನೋಡುವುದು ಸುಲಭವಾದ ಮಾರ್ಗವಾಗಿದೆ.

Base64 ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಪಡೆಯುವ ಕಾರ್ಯವು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ (ಪೀಪ್):

ಫಂಕ್ಷನ್ GetBase64AuthorizationHeader(ಬಳಕೆದಾರಹೆಸರು, ಪಾಸ್ವರ್ಡ್) FileEncoding = TextEncoding.UTF8; TempFile = GetTemporaryFileName(); ರೆಕಾರ್ಡ್ = ಹೊಸ ಟೆಕ್ಸ್ಟ್ ರೈಟ್ (ತಾತ್ಕಾಲಿಕ ಫೈಲ್, ಫೈಲ್ ಎನ್ಕೋಡಿಂಗ್); ಬರೆಯಿರಿ.ಬರೆಯಿರಿ(ಬಳಕೆದಾರಹೆಸರು+":"+ಪಾಸ್‌ವರ್ಡ್); ರೆಕಾರ್ಡ್.ಮುಚ್ಚು(); BinData = ಹೊಸ ಬೈನರಿಡೇಟಾ(TempFile); ಫಲಿತಾಂಶ = Base64String(DvData); ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಿ (ಟೆಂಪ್‌ಫೈಲ್); ಫಲಿತಾಂಶ = ಸರಾಸರಿ(ಫಲಿತಾಂಶ,5); ರಿಟರ್ನ್ ಫಲಿತಾಂಶ; ಅಂತ್ಯಕ್ರಿಯೆಗಳು

ಒಂದು ಪ್ರಮುಖ ಅಂಶವಿದೆ. HTTPConnection ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, "http://" ಮತ್ತು "https://" ಪ್ರೋಟೋಕಾಲ್‌ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸದೆ ವಿಳಾಸವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ, ಇಲ್ಲದಿದ್ದರೆ ನೀವು ಅಸ್ಪಷ್ಟ ದೋಷವನ್ನು ಹುಡುಕುವ ಸಮಯವನ್ನು ವ್ಯರ್ಥ ಮಾಡುವ ಅಪಾಯವಿದೆ.

ಪಾಕವಿಧಾನ 4. WinHttpRequest ಮೂಲಕ ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ

WinHttp = ಹೊಸ COMObject("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"UTF-8"); WinHttp.Option(4, 13056); //intSslErrorIgnoreFlag WinHttp.Option(6, true); //blnEnableRedirects WinHttp.Option(12, true); //blnEnableHttpsToHttpRedirects WinHttp.Open("POST", "https://Somesite.ru/WebService/Some/GetCustomer", 0); WinHttp.SetRequestHeader("ವಿಷಯ-ಪ್ರಕಾರ", "ಪಠ್ಯ/xml"); WinHttp.SetCredentials(ಬಳಕೆದಾರಹೆಸರು, ಪಾಸ್‌ವರ್ಡ್, 0); WinHttp.Send(SOAP ಸ್ಟ್ರಿಂಗ್); WinHttp.WaitForResponse(15); XMLResponse = WinHttp.ResponseText();

ಇಲ್ಲಿ, ವಾಸ್ತವವಾಗಿ, ಹಿಂದಿನ ಆವೃತ್ತಿಯಂತೆಯೇ, ಆದರೆ ನಾವು COMObject ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೇವೆ. ಪ್ರೋಟೋಕಾಲ್ ಜೊತೆಗೆ ನಾವು ಸಂಪರ್ಕ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಪೂರ್ಣವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತೇವೆ. SSL ಪ್ರಮಾಣಪತ್ರಗಳಲ್ಲಿನ ದೋಷಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಲು ಫ್ಲ್ಯಾಗ್‌ಗಳಿಗೆ ಮಾತ್ರ ವಿಶೇಷ ಗಮನ ನೀಡಬೇಕು. ನಾವು ಎಸ್‌ಎಸ್‌ಎಲ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದರೆ, ಆದರೆ ನಿರ್ದಿಷ್ಟ ಪ್ರಮಾಣಪತ್ರವಿಲ್ಲದೆ, ಈ ಆಯ್ಕೆಯಲ್ಲಿ ಹೊಸ ಸುರಕ್ಷಿತ ಸಂಪರ್ಕವನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗದ ಕಾರಣ ಅವು ಅಗತ್ಯವಿದೆ (ಅಥವಾ ಹೇಗೆ ಎಂದು ನನಗೆ ತಿಳಿದಿಲ್ಲ). ಉಳಿದ ಕಾರ್ಯವಿಧಾನವು ಹಿಂದಿನದಕ್ಕೆ ಹೋಲುತ್ತದೆ.

ಅಲ್ಲದೆ, "WinHttp.WinHttpRequest.5.1" ಜೊತೆಗೆ, ನೀವು "Microsoft.XMLHTTP", "Msxml2.XMLHTTP", "Msxml2.XMLHTTP.3.0" ಅನ್ನು ಬಳಸಬಹುದು, "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP. WinHttp ನಲ್ಲಿ ಆಫ್. ವಿಧಾನಗಳು ಬಹುತೇಕ ಒಂದೇ ಆಗಿರುತ್ತವೆ, ನಿಯತಾಂಕಗಳ ಸಂಖ್ಯೆ ಮಾತ್ರ ವಿಭಿನ್ನವಾಗಿರುತ್ತದೆ. ಈ ಆಯ್ಕೆಗಳಲ್ಲಿ ಒಂದನ್ನು 1c HTTPRequest ಆಬ್ಜೆಕ್ಟ್ ಒಳಗೆ ವೈರ್ ಮಾಡಲಾಗಿದೆ ಎಂದು ನಾನು ಅನುಮಾನಿಸುತ್ತೇನೆ.

ಈ ಸಮಯದಲ್ಲಿ, ಇವು ನನ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಪಾಕವಿಧಾನಗಳಾಗಿವೆ. ನಾನು ಹೊಸದನ್ನು ಕಂಡರೆ, ನಾನು ಖಂಡಿತವಾಗಿಯೂ ಲೇಖನವನ್ನು ಪೂರೈಸುತ್ತೇನೆ.

ಫಲಿತಾಂಶ ಪ್ರಕ್ರಿಯೆ

ಪಾಕವಿಧಾನ 1 ರಲ್ಲಿ, ನಾವು ಹೆಚ್ಚಾಗಿ ಸಿದ್ಧ XDTO ವಸ್ತುವನ್ನು ಪಡೆಯುತ್ತೇವೆ ಮತ್ತು ಅದರೊಂದಿಗೆ ರಚನೆಯಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತೇವೆ. ಎಲ್ಲಾ ಇತರ ಸಂದರ್ಭಗಳಲ್ಲಿ, ನೀವು xml ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು XDTO ಗೆ ಪರಿವರ್ತಿಸಬಹುದು

Result.StatusCode = 200 ಆಗಿದ್ದರೆ XMLReader = New XMLReader; ReadingXML.SetString(Result.GetBodyAsString()); ResponseObject = OwnFactoryXDTO.ReadXML(ReadingXML); ವರದಿ(ObjectResponse.Body.Response.RESPONSE_ID); ವರದಿ(ObjectResponse.Body.Response.RESPONSE_TEXT); ಎಂಡಿಫ್;

ಇಲ್ಲಿ ಎಲ್ಲವೂ ಸರಳವಾಗಿದೆ.

ತೀರ್ಮಾನಕ್ಕೆ ಬದಲಾಗಿ

1. SoapUI ಪ್ರೋಗ್ರಾಂನೊಂದಿಗೆ ವೆಬ್ ಸೇವೆಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿ. ಅಂತಹ ಕೆಲಸಕ್ಕಾಗಿ ಇದನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಸೇವೆಯು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ತ್ವರಿತವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಕಲಿಯಲು ಒಂದು ಲೇಖನವಿದೆ

2. ನೀವು ಅಸುರಕ್ಷಿತ http ಚಾನಲ್ ಮೂಲಕ ಸೇವೆಯೊಂದಿಗೆ ವಿನಿಮಯ ಮಾಡುತ್ತಿದ್ದರೆ ಮತ್ತು ನಿಮ್ಮ ಸಂದೇಶಗಳಲ್ಲಿ ನಿಖರವಾಗಿ 1s ಏನು ಕಳುಹಿಸುತ್ತದೆ ಎಂಬ ಪ್ರಶ್ನೆ ಉದ್ಭವಿಸಿದರೆ, ನಂತರ ನೀವು Wireshark, Fiddler, ಮತ್ತು ಇತರ ಟ್ರಾಫಿಕ್ ಸ್ನಿಫರ್‌ಗಳನ್ನು ಬಳಸಬಹುದು. ನೀವು ssl ಸಂಪರ್ಕವನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ ಮಾತ್ರ ಸಮಸ್ಯೆ ಉಂಟಾಗುತ್ತದೆ.

3. ಅದೇನೇ ಇದ್ದರೂ, ವೆಬ್ ಸೇವೆಯು https ಮೂಲಕ ಸಂವಹನ ನಡೆಸಿದರೆ, ನಾವು ರಿಮೋಟ್ ಗಣಕದಲ್ಲಿ Nginx ಸರ್ವರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುತ್ತೇವೆ (ಯಾವುದೇ, ಮುಖ್ಯವಾಗಿ, ನಮ್ಮದೇ ಆದದ್ದಲ್ಲ), ಅದನ್ನು ನಾವು ಸಂಪರ್ಕಿಸುತ್ತೇವೆ ಮತ್ತು ಅದು ಎಲ್ಲವನ್ನೂ ಪ್ಯಾಕ್ ಮಾಡುತ್ತದೆ https ಮತ್ತು ಅದನ್ನು ಸರಿಯಾದ ಸ್ಥಳಕ್ಕೆ ಕಳುಹಿಸಿ (ರಿವರ್ಸ್ ಪ್ರಾಕ್ಸಿ ) ಮತ್ತು ಪ್ರಮಾಣಿತ ಸಂರಚನೆಗೆ ಸೇರಿಸಿ:

ಸರ್ವರ್ (ಆಲಿಸಿ 0.0.0.0:8080; server_name MyServer; ಸ್ಥಳ ~ .* ( proxy_pass https://Somesite.ru:8001; proxy_set_header Host $host; proxy_set_header Authorization "ಮೂಲಭೂತ "; proxy_pass_header Authorization;) )

5. ದೃಢೀಕರಣವು ಕುಕೀಗಳ ಬಳಕೆಯನ್ನು ಒಳಗೊಂಡಿದ್ದರೆ, ಈ ಕೆಳಗಿನವುಗಳು ಕಂಡುಬಂದಿವೆ

ಪಿ.ಎಸ್. ನೀವು ಪ್ರಶ್ನೆಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಕೋಡ್ ಅನ್ನು ಸುಧಾರಿಸಲು ಸಲಹೆಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ವಿವರಿಸಿದಕ್ಕಿಂತ ಭಿನ್ನವಾಗಿರುವ ನಿಮ್ಮ ಸ್ವಂತ ಪಾಕವಿಧಾನಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ನೀವು ದೋಷಗಳನ್ನು ಕಂಡುಕೊಂಡರೆ ಅಥವಾ ಲೇಖಕರು "ತಪ್ಪು" ಮತ್ತು ಅವರು "1 ಸೆ.ಗೆ ಸೇರಿಲ್ಲ" ಎಂದು ಭಾವಿಸಿದರೆ, ನಂತರ ಕಾಮೆಂಟ್ಗಳನ್ನು ಬರೆಯಿರಿ ಮತ್ತು ನಾವು ಚರ್ಚಿಸುತ್ತೇವೆ ಎಲ್ಲವೂ.