1C ವೆಬ್ ಕ್ಲೈಂಟ್ ಬಗ್ಗೆ

1C: ಎಂಟರ್‌ಪ್ರೈಸ್ ತಂತ್ರಜ್ಞಾನದ ಉತ್ತಮ ವೈಶಿಷ್ಟ್ಯವೆಂದರೆ, ನಿರ್ವಹಿಸಲಾದ ಫಾರ್ಮ್‌ಗಳ ತಂತ್ರಜ್ಞಾನವನ್ನು ಬಳಸಿಕೊಂಡು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ ಅಪ್ಲಿಕೇಶನ್ ಪರಿಹಾರವನ್ನು ವಿಂಡೋಸ್, ಲಿನಕ್ಸ್, MacOS X ಗಾಗಿ ತೆಳುವಾದ (ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ) ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಮತ್ತು 5 ಬ್ರೌಸರ್‌ಗಳಿಗೆ ವೆಬ್ ಕ್ಲೈಂಟ್‌ನಂತೆ ಪ್ರಾರಂಭಿಸಬಹುದು - ಕ್ರೋಮ್, ಇಂಟರ್ನೆಟ್ ಎಕ್ಸ್‌ಪ್ಲೋರರ್, ಫೈರ್‌ಫಾಕ್ಸ್, ಸಫಾರಿ, ಎಡ್ಜ್ ಮತ್ತು ಇವೆಲ್ಲವೂ ಅಪ್ಲಿಕೇಶನ್ ಮೂಲ ಕೋಡ್ ಅನ್ನು ಬದಲಾಯಿಸದೆ. ಇದಲ್ಲದೆ, ಬಾಹ್ಯವಾಗಿ ತೆಳುವಾದ ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಮತ್ತು ಬ್ರೌಸರ್‌ನಲ್ಲಿನ ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಬಹುತೇಕ ಒಂದೇ ರೀತಿ ಕಾಣುತ್ತದೆ.
10 ವ್ಯತ್ಯಾಸಗಳನ್ನು ಹುಡುಕಿ (ಕಟ್ ಅಡಿಯಲ್ಲಿ 2 ಚಿತ್ರಗಳು):

Linux ನಲ್ಲಿ ತೆಳುವಾದ ಕ್ಲೈಂಟ್ ವಿಂಡೋ:

1C ವೆಬ್ ಕ್ಲೈಂಟ್ ಬಗ್ಗೆ

ವೆಬ್ ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಅದೇ ವಿಂಡೋ (Chrome ಬ್ರೌಸರ್‌ನಲ್ಲಿ):

1C ವೆಬ್ ಕ್ಲೈಂಟ್ ಬಗ್ಗೆ

ನಾವು ವೆಬ್ ಕ್ಲೈಂಟ್ ಅನ್ನು ಏಕೆ ಮಾಡಿದ್ದೇವೆ? ಸ್ವಲ್ಪ ಕರುಣಾಜನಕವಾಗಿ ಹೇಳುವುದಾದರೆ, ಸಮಯವು ನಮಗೆ ಅಂತಹ ಕೆಲಸವನ್ನು ಹೊಂದಿಸಿದೆ. ಇಂಟರ್ನೆಟ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವುದು ವ್ಯಾಪಾರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಬಹಳ ಹಿಂದಿನಿಂದಲೂ ಪೂರ್ವಾಪೇಕ್ಷಿತವಾಗಿದೆ. ಮೊದಲಿಗೆ, ನಮ್ಮ ತೆಳುವಾದ ಕ್ಲೈಂಟ್‌ಗಾಗಿ ನಾವು ಇಂಟರ್ನೆಟ್ ಮೂಲಕ ಕೆಲಸ ಮಾಡುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಿದ್ದೇವೆ (ನಮ್ಮ ಕೆಲವು ಸ್ಪರ್ಧಿಗಳು, ಅಲ್ಲಿಗೆ ನಿಲ್ಲಿಸಿದರು; ಇತರರು, ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ, ತೆಳುವಾದ ಕ್ಲೈಂಟ್ ಅನ್ನು ತ್ಯಜಿಸಿದರು ಮತ್ತು ವೆಬ್ ಕ್ಲೈಂಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ತಮ್ಮನ್ನು ಸೀಮಿತಗೊಳಿಸಿಕೊಂಡರು). ನಾವು ನಮ್ಮ ಬಳಕೆದಾರರಿಗೆ ಸೂಕ್ತವಾದ ಕ್ಲೈಂಟ್ ಆಯ್ಕೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಅವಕಾಶವನ್ನು ನೀಡಲು ನಿರ್ಧರಿಸಿದ್ದೇವೆ.

1C ವೆಬ್ ಕ್ಲೈಂಟ್ ಬಗ್ಗೆ

ತೆಳುವಾದ ಕ್ಲೈಂಟ್‌ಗೆ ವೆಬ್ ಆಧಾರಿತ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಸೇರಿಸುವುದು ಕ್ಲೈಂಟ್-ಸರ್ವರ್ ಆರ್ಕಿಟೆಕ್ಚರ್‌ನಲ್ಲಿ ಸಂಪೂರ್ಣ ಬದಲಾವಣೆಯೊಂದಿಗೆ ದೊಡ್ಡ ಯೋಜನೆಯಾಗಿದೆ. ವೆಬ್ ಕ್ಲೈಂಟ್ ಅನ್ನು ರಚಿಸುವುದು ಸಂಪೂರ್ಣವಾಗಿ ಹೊಸ ಯೋಜನೆಯಾಗಿದೆ, ಇದು ಮೊದಲಿನಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ.

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

ಆದ್ದರಿಂದ, ಯೋಜನೆಯ ಅವಶ್ಯಕತೆಗಳು: ವೆಬ್ ಕ್ಲೈಂಟ್ ತೆಳುವಾದ ಕ್ಲೈಂಟ್‌ನಂತೆಯೇ ಮಾಡಬೇಕು, ಅವುಗಳೆಂದರೆ:

  1. ಬಳಕೆದಾರ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಪ್ರದರ್ಶಿಸಿ
  2. 1C ಭಾಷೆಯಲ್ಲಿ ಬರೆಯಲಾದ ಕ್ಲೈಂಟ್ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ

1C ಯಲ್ಲಿನ ಬಳಕೆದಾರ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ದೃಶ್ಯ ಸಂಪಾದಕದಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ, ಆದರೆ ಘೋಷಣಾತ್ಮಕವಾಗಿ, ಅಂಶಗಳ ಪಿಕ್ಸೆಲ್-ಬೈ-ಪಿಕ್ಸೆಲ್ ವ್ಯವಸ್ಥೆ ಇಲ್ಲದೆ; ಸುಮಾರು ಮೂರು ಡಜನ್ ಪ್ರಕಾರದ ಇಂಟರ್ಫೇಸ್ ಅಂಶಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ - ಬಟನ್‌ಗಳು, ಇನ್‌ಪುಟ್ ಕ್ಷೇತ್ರಗಳು (ಪಠ್ಯ, ಸಂಖ್ಯಾ, ದಿನಾಂಕ/ಸಮಯ), ಪಟ್ಟಿಗಳು, ಕೋಷ್ಟಕಗಳು, ಗ್ರಾಫ್‌ಗಳು, ಇತ್ಯಾದಿ.

1C ಭಾಷೆಯಲ್ಲಿನ ಕ್ಲೈಂಟ್ ಕೋಡ್ ಸರ್ವರ್ ಕರೆಗಳನ್ನು ಒಳಗೊಂಡಿರಬಹುದು, ಸ್ಥಳೀಯ ಸಂಪನ್ಮೂಲಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು (ಫೈಲ್‌ಗಳು, ಇತ್ಯಾದಿ), ಮುದ್ರಣ, ಮತ್ತು ಹೆಚ್ಚಿನವು.

ತೆಳುವಾದ ಕ್ಲೈಂಟ್ (ವೆಬ್ ಮೂಲಕ ಕೆಲಸ ಮಾಡುವಾಗ) ಮತ್ತು ವೆಬ್ ಕ್ಲೈಂಟ್ ಎರಡೂ 1C ಅಪ್ಲಿಕೇಶನ್ ಸರ್ವರ್‌ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ವೆಬ್ ಸೇವೆಗಳ ಒಂದೇ ಸೆಟ್ ಅನ್ನು ಬಳಸುತ್ತವೆ. ಕ್ಲೈಂಟ್ ಅನುಷ್ಠಾನಗಳು, ಸಹಜವಾಗಿ, ವಿಭಿನ್ನವಾಗಿವೆ - ತೆಳುವಾದ ಕ್ಲೈಂಟ್ ಅನ್ನು C++ ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ, ವೆಬ್ ಕ್ಲೈಂಟ್ ಅನ್ನು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ.

ಇತಿಹಾಸದ ಸ್ವಲ್ಪ

ವೆಬ್ ಕ್ಲೈಂಟ್ ಯೋಜನೆಯು (ಸರಾಸರಿ) 2006 ಜನರ ತಂಡದೊಂದಿಗೆ 5 ರಲ್ಲಿ ಪ್ರಾರಂಭವಾಯಿತು. ಯೋಜನೆಯ ಕೆಲವು ಹಂತಗಳಲ್ಲಿ, ಡೆವಲಪರ್‌ಗಳು ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ತೊಡಗಿಸಿಕೊಂಡಿದ್ದಾರೆ (ಸ್ಪ್ರೆಡ್‌ಶೀಟ್ ಡಾಕ್ಯುಮೆಂಟ್, ರೇಖಾಚಿತ್ರಗಳು, ಇತ್ಯಾದಿ); ನಿಯಮದಂತೆ, ತೆಳುವಾದ ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಈ ಕಾರ್ಯವನ್ನು ಮಾಡಿದ ಅದೇ ಡೆವಲಪರ್‌ಗಳು. ಆ. ಡೆವಲಪರ್‌ಗಳು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಈ ಹಿಂದೆ C++ ನಲ್ಲಿ ರಚಿಸಿದ ಘಟಕಗಳನ್ನು ಮರು-ಬರೆದರು.

ಮೊದಲಿನಿಂದಲೂ, ಎರಡು ಭಾಷೆಗಳ ನಡುವಿನ ಬಲವಾದ ಪರಿಕಲ್ಪನಾ ವ್ಯತ್ಯಾಸಗಳಿಂದಾಗಿ C++ ತೆಳುವಾದ ಕ್ಲೈಂಟ್ ಕೋಡ್ ಅನ್ನು JavaScript ವೆಬ್ ಕ್ಲೈಂಟ್‌ಗೆ ಯಾವುದೇ ಸ್ವಯಂಚಾಲಿತ (ಭಾಗಶಃ) ಪರಿವರ್ತಿಸುವ ಕಲ್ಪನೆಯನ್ನು ನಾವು ತಿರಸ್ಕರಿಸಿದ್ದೇವೆ; ವೆಬ್ ಕ್ಲೈಂಟ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ.

ಯೋಜನೆಯ ಮೊದಲ ಪುನರಾವರ್ತನೆಗಳಲ್ಲಿ, ವೆಬ್ ಕ್ಲೈಂಟ್ ಅಂತರ್ನಿರ್ಮಿತ 1C ಭಾಷೆಯಲ್ಲಿ ಕ್ಲೈಂಟ್ ಕೋಡ್ ಅನ್ನು ನೇರವಾಗಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ಗೆ ಪರಿವರ್ತಿಸಿತು. ತೆಳುವಾದ ಕ್ಲೈಂಟ್ ವಿಭಿನ್ನವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ - ಅಂತರ್ನಿರ್ಮಿತ 1C ಭಾಷೆಯಲ್ಲಿನ ಕೋಡ್ ಅನ್ನು ಬೈಟ್‌ಕೋಡ್‌ಗೆ ಸಂಕಲಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ನಂತರ ಈ ಬೈಟ್‌ಕೋಡ್ ಅನ್ನು ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಅರ್ಥೈಸಲಾಗುತ್ತದೆ. ತರುವಾಯ, ವೆಬ್ ಕ್ಲೈಂಟ್ ಅದೇ ರೀತಿ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿತು - ಮೊದಲನೆಯದಾಗಿ, ಇದು ಕಾರ್ಯಕ್ಷಮತೆಯ ಲಾಭವನ್ನು ನೀಡಿತು ಮತ್ತು ಎರಡನೆಯದಾಗಿ, ತೆಳುವಾದ ಮತ್ತು ವೆಬ್ ಕ್ಲೈಂಟ್ಗಳ ವಾಸ್ತುಶಿಲ್ಪವನ್ನು ಏಕೀಕರಿಸಲು ಸಾಧ್ಯವಾಗಿಸಿತು.

ವೆಬ್ ಕ್ಲೈಂಟ್ ಬೆಂಬಲದೊಂದಿಗೆ 1C: ಎಂಟರ್‌ಪ್ರೈಸ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನ ಮೊದಲ ಆವೃತ್ತಿಯನ್ನು 2009 ರಲ್ಲಿ ಬಿಡುಗಡೆ ಮಾಡಲಾಯಿತು. ಆ ಸಮಯದಲ್ಲಿ ವೆಬ್ ಕ್ಲೈಂಟ್ 2 ಬ್ರೌಸರ್ಗಳನ್ನು ಬೆಂಬಲಿಸಿತು - ಇಂಟರ್ನೆಟ್ ಎಕ್ಸ್ಪ್ಲೋರರ್ ಮತ್ತು ಫೈರ್ಫಾಕ್ಸ್. ಮೂಲ ಯೋಜನೆಗಳು ಒಪೇರಾಗೆ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿತ್ತು, ಆದರೆ ಆ ಸಮಯದಲ್ಲಿ ಒಪೇರಾದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಮುಚ್ಚುವ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳೊಂದಿಗಿನ ದುಸ್ತರ ಸಮಸ್ಯೆಗಳಿಂದಾಗಿ (ಅಪ್ಲಿಕೇಶನ್ ಮುಚ್ಚುತ್ತಿದೆ ಎಂದು 100% ಖಚಿತವಾಗಿ ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ ಮತ್ತು ಆ ಕ್ಷಣದಲ್ಲಿ ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸುವ ವಿಧಾನವನ್ನು ಕೈಗೊಳ್ಳಿ 1C ಅಪ್ಲಿಕೇಶನ್ ಸರ್ವರ್) ಈ ಯೋಜನೆಗಳಿಂದ ಕೈಬಿಡಬೇಕಾಯಿತು.

ಯೋಜನೆಯ ರಚನೆ

ಒಟ್ಟಾರೆಯಾಗಿ, 1C: ಎಂಟರ್‌ಪ್ರೈಸ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಬರೆಯಲಾದ 4 ಯೋಜನೆಗಳನ್ನು ಹೊಂದಿದೆ:

  1. ವೆಬ್‌ಟೂಲ್‌ಗಳು - ಇತರ ಪ್ರಾಜೆಕ್ಟ್‌ಗಳು ಬಳಸುವ ಹಂಚಿದ ಲೈಬ್ರರಿಗಳು (ನಾವು ಸಹ ಸೇರಿಸುತ್ತೇವೆ ಗೂಗಲ್ ಕ್ಲೋಸರ್ ಲೈಬ್ರರಿ).
  2. ನಿಯಂತ್ರಣ ಅಂಶ ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಿದ ಡಾಕ್ಯುಮೆಂಟ್ (ಥಿನ್ ಕ್ಲೈಂಟ್ ಮತ್ತು ವೆಬ್ ಕ್ಲೈಂಟ್ ಎರಡರಲ್ಲೂ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ)
  3. ನಿಯಂತ್ರಣ ಅಂಶ ಶೆಡ್ಯೂಲರ್ (ಥಿನ್ ಕ್ಲೈಂಟ್ ಮತ್ತು ವೆಬ್ ಕ್ಲೈಂಟ್ ಎರಡರಲ್ಲೂ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ)
  4. ವೆಬ್ ಕ್ಲೈಂಟ್

ಪ್ರತಿ ಯೋಜನೆಯ ರಚನೆಯು ಜಾವಾ ಯೋಜನೆಗಳ ರಚನೆಯನ್ನು ಹೋಲುತ್ತದೆ (ಅಥವಾ .NET ಯೋಜನೆಗಳು - ಯಾವುದು ಹತ್ತಿರದಲ್ಲಿದೆ); ನಾವು ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ ಮತ್ತು ಪ್ರತಿ ನೇಮ್‌ಸ್ಪೇಸ್ ಪ್ರತ್ಯೇಕ ಫೋಲ್ಡರ್‌ನಲ್ಲಿದೆ. ಫೋಲ್ಡರ್ ಒಳಗೆ ಫೈಲ್‌ಗಳು ಮತ್ತು ನೇಮ್‌ಸ್ಪೇಸ್ ತರಗತಿಗಳಿವೆ. ವೆಬ್ ಕ್ಲೈಂಟ್ ಯೋಜನೆಯಲ್ಲಿ ಸುಮಾರು 1000 ಫೈಲ್‌ಗಳಿವೆ.

ರಚನಾತ್ಮಕವಾಗಿ, ವೆಬ್ ಕ್ಲೈಂಟ್ ಅನ್ನು ಹೆಚ್ಚಾಗಿ ಕೆಳಗಿನ ಉಪವ್ಯವಸ್ಥೆಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ:

  • ನಿರ್ವಹಿಸಿದ ಕ್ಲೈಂಟ್ ಅಪ್ಲಿಕೇಶನ್ ಇಂಟರ್ಫೇಸ್
    • ಸಾಮಾನ್ಯ ಅಪ್ಲಿಕೇಶನ್ ಇಂಟರ್ಫೇಸ್ (ಸಿಸ್ಟಮ್ ಮೆನುಗಳು, ಫಲಕಗಳು)
    • ಇತರ ವಿಷಯಗಳ ಜೊತೆಗೆ, ಸುಮಾರು 30 ನಿಯಂತ್ರಣಗಳು (ಬಟನ್‌ಗಳು, ವಿವಿಧ ರೀತಿಯ ಇನ್‌ಪುಟ್ ಕ್ಷೇತ್ರಗಳು - ಪಠ್ಯ, ಸಂಖ್ಯಾಶಾಸ್ತ್ರ, ದಿನಾಂಕ/ಸಮಯ, ಇತ್ಯಾದಿ, ಕೋಷ್ಟಕಗಳು, ಪಟ್ಟಿಗಳು, ಗ್ರಾಫ್‌ಗಳು, ಇತ್ಯಾದಿ) ಸೇರಿದಂತೆ ನಿರ್ವಹಿಸಲಾದ ರೂಪಗಳ ಇಂಟರ್ಫೇಸ್

  • ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಡೆವಲಪರ್‌ಗಳಿಗೆ ಆಬ್ಜೆಕ್ಟ್ ಮಾದರಿ ಲಭ್ಯವಿದೆ (ಒಟ್ಟು 400 ಕ್ಕೂ ಹೆಚ್ಚು ಪ್ರಕಾರಗಳು: ನಿರ್ವಹಿಸಿದ ಇಂಟರ್ಫೇಸ್ ಆಬ್ಜೆಕ್ಟ್ ಮಾದರಿ, ಡೇಟಾ ಲೇಔಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು, ಷರತ್ತುಬದ್ಧ ಶೈಲಿ, ಇತ್ಯಾದಿ)
  • ಅಂತರ್ನಿರ್ಮಿತ 1C ಭಾಷೆಯ ಇಂಟರ್ಪ್ರಿಟರ್
  • ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳು (ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಬೆಂಬಲಿಸದ ಕ್ರಿಯಾತ್ಮಕತೆಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ)
    • ಕ್ರಿಪ್ಟೋಗ್ರಫಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು
    • ಫೈಲ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿ
    • ಬಾಹ್ಯ ಘಟಕಗಳ ತಂತ್ರಜ್ಞಾನ, ಅವುಗಳನ್ನು ತೆಳುವಾದ ಮತ್ತು ವೆಬ್ ಕ್ಲೈಂಟ್‌ಗಳಲ್ಲಿ ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ

ಅಭಿವೃದ್ಧಿ ವೈಶಿಷ್ಟ್ಯಗಳು

ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಮೇಲಿನ ಎಲ್ಲವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಸುಲಭವಲ್ಲ. ಬಹುಶಃ 1C ವೆಬ್ ಕ್ಲೈಂಟ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಬರೆಯಲಾದ ಅತಿದೊಡ್ಡ ಕ್ಲೈಂಟ್-ಸೈಡ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ - ಸುಮಾರು 450.000 ಸಾಲುಗಳು. ವೆಬ್ ಕ್ಲೈಂಟ್ ಕೋಡ್‌ನಲ್ಲಿ ನಾವು ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ವಿಧಾನವನ್ನು ಸಕ್ರಿಯವಾಗಿ ಬಳಸುತ್ತೇವೆ, ಇದು ಅಂತಹ ದೊಡ್ಡ ಯೋಜನೆಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದನ್ನು ಸರಳಗೊಳಿಸುತ್ತದೆ.

ಕ್ಲೈಂಟ್ ಕೋಡ್‌ನ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಲು, ನಾವು ಮೊದಲು ನಮ್ಮದೇ ಆದ ಅಬ್ಫ್ಯೂಸ್ಕೇಟರ್ ಅನ್ನು ಬಳಸಿದ್ದೇವೆ ಮತ್ತು ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಆವೃತ್ತಿ 8.3.6 (ಅಕ್ಟೋಬರ್ 2014) ರಿಂದ ನಾವು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ ಗೂಗಲ್ ಕ್ಲೋಸರ್ ಕಂಪೈಲರ್. ಸಂಖ್ಯೆಯಲ್ಲಿ ಬಳಕೆಯ ಪರಿಣಾಮ - ಅಸ್ಪಷ್ಟತೆಯ ನಂತರ ವೆಬ್ ಕ್ಲೈಂಟ್ ಚೌಕಟ್ಟಿನ ಗಾತ್ರ:

  • ಸ್ವಂತ ಅಬ್ಫ್ಯೂಸ್ಕೇಟರ್ - 1556 ಕೆಬಿ
  • ಗೂಗಲ್ ಕ್ಲೋಸರ್ ಕಂಪೈಲರ್ - 1073 ಕೆಬಿ

Google ಕ್ಲೋಸರ್ ಕಂಪೈಲರ್ ಅನ್ನು ಬಳಸುವುದು ನಮ್ಮ ಸ್ವಂತ ಅಬ್ಫ್ಯೂಸ್ಕೇಟರ್‌ಗೆ ಹೋಲಿಸಿದರೆ ವೆಬ್ ಕ್ಲೈಂಟ್‌ನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು 30% ರಷ್ಟು ಸುಧಾರಿಸಲು ನಮಗೆ ಸಹಾಯ ಮಾಡಿದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ಸೇವಿಸುವ ಮೆಮೊರಿಯ ಪ್ರಮಾಣವು 15-25% ರಷ್ಟು ಕಡಿಮೆಯಾಗಿದೆ (ಬ್ರೌಸರ್ ಅನ್ನು ಅವಲಂಬಿಸಿ).

Google ಕ್ಲೋಸರ್ ಕಂಪೈಲರ್ ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಕೋಡ್‌ನೊಂದಿಗೆ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ವೆಬ್ ಕ್ಲೈಂಟ್‌ಗೆ ಅದರ ದಕ್ಷತೆಯು ಸಾಧ್ಯವಾದಷ್ಟು ಹೆಚ್ಚಾಗಿರುತ್ತದೆ. ಮುಚ್ಚುವಿಕೆ ಕಂಪೈಲರ್ ನಮಗೆ ಕೆಲವು ಒಳ್ಳೆಯ ಕೆಲಸಗಳನ್ನು ಮಾಡುತ್ತದೆ:

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

ನಾವು WebStorm ಅನ್ನು ನಮ್ಮ ವೆಬ್ ಕ್ಲೈಂಟ್ ಅಭಿವೃದ್ಧಿ ಪರಿಸರವಾಗಿ ಬಳಸುತ್ತೇವೆ.

ಕೋಡ್ ವಿಶ್ಲೇಷಣೆಗಾಗಿ ನಾವು ಬಳಸುತ್ತೇವೆ ಸೋನಾರ್ ಕ್ಯೂಬ್, ಅಲ್ಲಿ ನಾವು ಸ್ಥಿರ ಕೋಡ್ ವಿಶ್ಲೇಷಕಗಳನ್ನು ಸಂಯೋಜಿಸುತ್ತೇವೆ. ವಿಶ್ಲೇಷಕಗಳನ್ನು ಬಳಸಿಕೊಂಡು, ನಾವು JavaScript ಮೂಲ ಕೋಡ್‌ನ ಗುಣಮಟ್ಟದ ಅವನತಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುತ್ತೇವೆ ಮತ್ತು ಅದನ್ನು ತಡೆಯಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ.

1C ವೆಬ್ ಕ್ಲೈಂಟ್ ಬಗ್ಗೆ

ನಾವು ಯಾವ ಸಮಸ್ಯೆಗಳನ್ನು ಮಾಡಿದ್ದೇವೆ / ಪರಿಹರಿಸುತ್ತಿದ್ದೇವೆ?

ಯೋಜನೆಯ ಅನುಷ್ಠಾನದ ಸಮಯದಲ್ಲಿ, ನಾವು ಪರಿಹರಿಸಬೇಕಾದ ಹಲವಾರು ಆಸಕ್ತಿದಾಯಕ ಸಮಸ್ಯೆಗಳನ್ನು ನಾವು ಎದುರಿಸಿದ್ದೇವೆ.

ಸರ್ವರ್‌ನೊಂದಿಗೆ ಮತ್ತು ವಿಂಡೋಗಳ ನಡುವೆ ಡೇಟಾವನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳಿ

ಮೂಲ ಕೋಡ್‌ನ ಅಸ್ಪಷ್ಟತೆಯು ಸಿಸ್ಟಮ್‌ನ ಕಾರ್ಯಾಚರಣೆಯಲ್ಲಿ ಹಸ್ತಕ್ಷೇಪ ಮಾಡುವ ಸಂದರ್ಭಗಳಿವೆ. ವೆಬ್ ಕ್ಲೈಂಟ್‌ನ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಕೋಡ್‌ಗೆ ಬಾಹ್ಯ ಕೋಡ್, ಅಸ್ಪಷ್ಟತೆಯ ಕಾರಣದಿಂದಾಗಿ, ನಮ್ಮ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಕೋಡ್ ನಿರೀಕ್ಷಿಸುವಕ್ಕಿಂತ ಭಿನ್ನವಾಗಿರುವ ಕಾರ್ಯ ಮತ್ತು ಪ್ಯಾರಾಮೀಟರ್ ಹೆಸರುಗಳನ್ನು ಹೊಂದಿರಬಹುದು. ನಮಗೆ ಬಾಹ್ಯ ಕೋಡ್:

  • ಡೇಟಾ ರಚನೆಗಳ ರೂಪದಲ್ಲಿ ಸರ್ವರ್‌ನಿಂದ ಬರುವ ಕೋಡ್
  • ಮತ್ತೊಂದು ಅಪ್ಲಿಕೇಶನ್ ವಿಂಡೋಗೆ ಕೋಡ್

ಸರ್ವರ್‌ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುವಾಗ ಅಸ್ಪಷ್ಟತೆಯನ್ನು ತಪ್ಪಿಸಲು, ನಾವು @expose ಟ್ಯಾಗ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ:

/**
 * @constructor
 * @extends {Base.SrvObject}
 */
Srv.Core.GenericException = function ()
{
    /**
     * @type {string}
     * @expose
     */
    this.descr;

    /**
     * @type {Srv.Core.GenericException}
     * @expose
     */
    this.inner;

    /**
     * @type {string}
     * @expose
     */
    this.clsid;

    /**
     * @type {boolean}
     * @expose
     */
    this.encoded;
}

ಮತ್ತು ಇತರ ವಿಂಡೋಗಳೊಂದಿಗೆ ಸಂವಹನ ಮಾಡುವಾಗ ಅಸ್ಪಷ್ಟತೆಯನ್ನು ತಪ್ಪಿಸಲು, ನಾವು ರಫ್ತು ಮಾಡಲಾದ ಇಂಟರ್ಫೇಸ್‌ಗಳನ್ನು ಬಳಸುತ್ತೇವೆ (ಎಲ್ಲಾ ವಿಧಾನಗಳನ್ನು ರಫ್ತು ಮಾಡುವ ಇಂಟರ್ಫೇಸ್‌ಗಳು).

/**
 * Экспортируемый интерфейс контрола DropDownWindow
 *
 * @interface
 * @struct
 */
WebUI.IDropDownWindowExp = function(){}

/**
 * Перемещает выделение на 1 вперед или назад
 *
 * @param {boolean} isForward
 * @param {boolean} checkOnly
 * @return {boolean}
 * @expose
 */
WebUI.IDropDownWindowExp.prototype.moveMarker = function (isForward, checkOnly){}

/**
 * Перемещает выделение в начало или конец
 *
 * @param {boolean} isFirst
 * @param {boolean} checkOnly
 * @return {boolean}
 * @expose
 */
WebUI.IDropDownWindowExp.prototype.moveMarkerTo = function (isFirst, checkOnly){}

/**
 * @return {boolean}
 * @expose
 */
WebUI.IDropDownWindowExp.prototype.selectValue = function (){}

ಮುಖ್ಯವಾಹಿನಿಯ ಮೊದಲು ನಾವು ವರ್ಚುವಲ್ DOM ಅನ್ನು ಬಳಸಿದ್ದೇವೆ)

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

ವೆಬ್ ಕ್ಲೈಂಟ್ ಅನ್ನು ಆಪ್ಟಿಮೈಜ್ ಮಾಡುವುದು

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

1C ವೆಬ್ ಕ್ಲೈಂಟ್ ಬಗ್ಗೆ

ಪರೀಕ್ಷೆ

ಕ್ರಿಯಾತ್ಮಕ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯ ಪರೀಕ್ಷೆಗಾಗಿ, ನಾವು ಸ್ವಾಮ್ಯದ ಉಪಕರಣವನ್ನು (ಜಾವಾ ಮತ್ತು C++ ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ), ಹಾಗೆಯೇ ಮೇಲೆ ನಿರ್ಮಿಸಲಾದ ಪರೀಕ್ಷೆಗಳ ಸೂಟ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ ಸೆಲೆನಿಯಮ್.

ನಮ್ಮ ಉಪಕರಣವು ಸಾರ್ವತ್ರಿಕವಾಗಿದೆ - ಇದು ಯಾವುದೇ ವಿಂಡೋಡ್ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಪರೀಕ್ಷಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು ಆದ್ದರಿಂದ ತೆಳುವಾದ ಕ್ಲೈಂಟ್ ಮತ್ತು ವೆಬ್ ಕ್ಲೈಂಟ್ ಎರಡನ್ನೂ ಪರೀಕ್ಷಿಸಲು ಸೂಕ್ತವಾಗಿದೆ. ಸ್ಕ್ರಿಪ್ಟ್ ಫೈಲ್‌ಗೆ 1C ಅಪ್ಲಿಕೇಶನ್ ಪರಿಹಾರವನ್ನು ಪ್ರಾರಂಭಿಸಿದ ಬಳಕೆದಾರರ ಕ್ರಿಯೆಗಳನ್ನು ಉಪಕರಣವು ದಾಖಲಿಸುತ್ತದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಪರದೆಯ ಕೆಲಸದ ಪ್ರದೇಶದ ಚಿತ್ರಗಳನ್ನು - ಮಾನದಂಡಗಳು - ದಾಖಲಿಸಲಾಗಿದೆ. ವೆಬ್ ಕ್ಲೈಂಟ್‌ನ ಹೊಸ ಆವೃತ್ತಿಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುವಾಗ, ಬಳಕೆದಾರರ ಭಾಗವಹಿಸುವಿಕೆ ಇಲ್ಲದೆ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಪ್ಲೇ ಮಾಡಲಾಗುತ್ತದೆ. ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಯಾವುದೇ ಹಂತದಲ್ಲೂ ಉಲ್ಲೇಖಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗದ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಪರೀಕ್ಷೆಯು ವಿಫಲವಾಗಿದೆ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ, ಅದರ ನಂತರ ಗುಣಮಟ್ಟದ ತಜ್ಞರು ಇದು ದೋಷವೇ ಅಥವಾ ಸಿಸ್ಟಮ್‌ನ ನಡವಳಿಕೆಯಲ್ಲಿ ಯೋಜಿತ ಬದಲಾವಣೆಯೇ ಎಂದು ನಿರ್ಧರಿಸಲು ತನಿಖೆಯನ್ನು ನಡೆಸುತ್ತಾರೆ. ಯೋಜಿತ ನಡವಳಿಕೆಯ ಸಂದರ್ಭದಲ್ಲಿ, ಮಾನದಂಡಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹೊಸದರೊಂದಿಗೆ ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ.

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

1C ವೆಬ್ ಕ್ಲೈಂಟ್ ಬಗ್ಗೆ
ಪರೀಕ್ಷೆಯ ಅಡಿಯಲ್ಲಿ ನಮ್ಮ ಪರೀಕ್ಷಾ ಸಾಧನ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್

ನಮ್ಮ ಉಪಕರಣ ಮತ್ತು ಸೆಲೆನಿಯಮ್ ಪರಸ್ಪರ ಪೂರಕವಾಗಿರುತ್ತವೆ; ಉದಾಹರಣೆಗೆ, ಒಂದು ಪರದೆಯ ಮೇಲೆ ಕೆಲವು ಬಟನ್ ಅದರ ಸ್ಥಳವನ್ನು ಬದಲಾಯಿಸಿದ್ದರೆ, ಸೆಲೆನಿಯಮ್ ಇದನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡದಿರಬಹುದು, ಆದರೆ ನಮ್ಮ ಉಪಕರಣವು ಗಮನಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಸ್ಟ್ಯಾಂಡರ್ಡ್‌ನೊಂದಿಗೆ ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ನ ಪಿಕ್ಸೆಲ್-ಬೈ-ಪಿಕ್ಸೆಲ್ ಹೋಲಿಕೆಯನ್ನು ಮಾಡುತ್ತದೆ. ಕೀಬೋರ್ಡ್ ಅಥವಾ ಮೌಸ್‌ನಿಂದ ಇನ್‌ಪುಟ್ ಅನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದರೊಂದಿಗೆ ಸಮಸ್ಯೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಉಪಕರಣವು ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಇದು ನಿಖರವಾಗಿ ಪುನರುತ್ಪಾದಿಸುತ್ತದೆ.

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

ನಿಧಾನಗತಿಯ ಘಟನೆಗಳನ್ನು ತನಿಖೆ ಮಾಡಲು ಡೆವಲಪರ್‌ಗಳು ವಿಭಿನ್ನ ಸಾಧನಗಳನ್ನು ಬಳಸುತ್ತಾರೆ; ಮುಖ್ಯವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ ಡೈನಾಟ್ರೇಸ್ AJAX ಆವೃತ್ತಿ ಉತ್ಪಾದನಾ ಕಂಪನಿ ಡೈನಾಟ್ರೇಸ್. ಹಿಂದಿನ ಮತ್ತು ಹೊಸ ನಿರ್ಮಾಣಗಳಲ್ಲಿ ಸಮಸ್ಯಾತ್ಮಕ ಕಾರ್ಯಾಚರಣೆಯ ಮರಣದಂಡನೆಯ ದಾಖಲೆಗಳನ್ನು ದಾಖಲಿಸಲಾಗುತ್ತದೆ, ನಂತರ ಲಾಗ್ಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಲಾಗುತ್ತದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಏಕ ಕಾರ್ಯಾಚರಣೆಗಳ (ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿ) ಮರಣದಂಡನೆಯ ಸಮಯವು ನಿರ್ಣಾಯಕ ಅಂಶವಾಗಿರುವುದಿಲ್ಲ - ಕಸ ಸಂಗ್ರಹಣೆಯಂತಹ ಸೇವಾ ಪ್ರಕ್ರಿಯೆಗಳು ನಿಯತಕಾಲಿಕವಾಗಿ ಬ್ರೌಸರ್ನಲ್ಲಿ ಪ್ರಾರಂಭಿಸಲ್ಪಡುತ್ತವೆ, ಅವುಗಳು ಕಾರ್ಯಗಳ ಮರಣದಂಡನೆಯ ಸಮಯದೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸಬಹುದು ಮತ್ತು ಚಿತ್ರವನ್ನು ವಿರೂಪಗೊಳಿಸಬಹುದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ ಹೆಚ್ಚು ಸೂಕ್ತವಾದ ನಿಯತಾಂಕಗಳು ಕಾರ್ಯಗತಗೊಳಿಸಿದ JavaScript ಸೂಚನೆಗಳ ಸಂಖ್ಯೆ, DOM ನಲ್ಲಿನ ಪರಮಾಣು ಕಾರ್ಯಾಚರಣೆಗಳ ಸಂಖ್ಯೆ, ಇತ್ಯಾದಿ. ಅದೇ ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿನ ಸೂಚನೆಗಳು/ಕಾರ್ಯಾಚರಣೆಗಳ ಸಂಖ್ಯೆಯು ಹೊಸ ಆವೃತ್ತಿಯಲ್ಲಿ ಹೆಚ್ಚಿದ್ದರೆ, ಇದು ಯಾವಾಗಲೂ ಕಾರ್ಯಕ್ಷಮತೆಯ ಕುಸಿತವನ್ನು ಸರಿಪಡಿಸಬೇಕು ಎಂದರ್ಥ.

ಅಲ್ಲದೆ, ಕಾರ್ಯನಿರ್ವಹಣೆಯಲ್ಲಿನ ಕುಸಿತಕ್ಕೆ ಒಂದು ಕಾರಣವೆಂದರೆ Google ಕ್ಲೋಸರ್ ಕಂಪೈಲರ್ ಕೆಲವು ಕಾರಣಗಳಿಗಾಗಿ ಕಾರ್ಯದ ಇನ್‌ಲೈನ್ ಪರ್ಯಾಯವನ್ನು ನಿರ್ವಹಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ (ಉದಾಹರಣೆಗೆ, ಕಾರ್ಯವು ಪುನರಾವರ್ತಿತ ಅಥವಾ ವರ್ಚುವಲ್ ಆಗಿರುವುದರಿಂದ). ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು ಮೂಲ ಕೋಡ್ ಅನ್ನು ಪುನಃ ಬರೆಯುವ ಮೂಲಕ ಪರಿಸ್ಥಿತಿಯನ್ನು ಸರಿಪಡಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ.

ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳು

ಅಪ್ಲಿಕೇಶನ್ ಪರಿಹಾರಕ್ಕೆ JavaScript ನಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲದ ಕ್ರಿಯಾತ್ಮಕತೆಯ ಅಗತ್ಯವಿದ್ದಾಗ, ನಾವು ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳನ್ನು ಬಳಸುತ್ತೇವೆ:

  • ಫೈಲ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು
  • ಕ್ರಿಪ್ಟೋಗ್ರಫಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು
  • ಜೊತೆ ಕೆಲಸ ಬಾಹ್ಯ ಘಟಕಗಳು

ನಮ್ಮ ವಿಸ್ತರಣೆಗಳು ಎರಡು ಭಾಗಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ. ಮೊದಲ ಭಾಗವು ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆ ಎಂದು ಕರೆಯಲ್ಪಡುತ್ತದೆ (ಸಾಮಾನ್ಯವಾಗಿ JavaScript ನಲ್ಲಿ ಬರೆಯಲಾದ Chrome ಮತ್ತು Firefox ಗಾಗಿ ವಿಸ್ತರಣೆಗಳು), ಇದು ಎರಡನೇ ಭಾಗದೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುತ್ತದೆ - ನಮಗೆ ಅಗತ್ಯವಿರುವ ಕಾರ್ಯವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಬೈನರಿ ವಿಸ್ತರಣೆ. ನಾವು ಬೈನರಿ ವಿಸ್ತರಣೆಗಳ 3 ಆವೃತ್ತಿಗಳನ್ನು ಬರೆಯುತ್ತೇವೆ - Windows, Linux ಮತ್ತು MacOS ಗಾಗಿ. ಬೈನರಿ ವಿಸ್ತರಣೆಯನ್ನು 1C: ಎಂಟರ್‌ಪ್ರೈಸ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನ ಭಾಗವಾಗಿ ಸರಬರಾಜು ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಇದು 1C ಅಪ್ಲಿಕೇಶನ್ ಸರ್ವರ್‌ನಲ್ಲಿದೆ. ವೆಬ್ ಕ್ಲೈಂಟ್‌ನಿಂದ ಮೊದಲ ಬಾರಿಗೆ ಕರೆ ಮಾಡಿದಾಗ, ಅದನ್ನು ಕ್ಲೈಂಟ್ ಕಂಪ್ಯೂಟರ್‌ಗೆ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾಗುತ್ತದೆ.

ಸಫಾರಿಯಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವಾಗ, ನಮ್ಮ ವಿಸ್ತರಣೆಗಳು NPAPI ಅನ್ನು ಬಳಸುತ್ತವೆ; ಇಂಟರ್ನೆಟ್ ಎಕ್ಸ್‌ಪ್ಲೋರರ್‌ನಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವಾಗ, ಅವು ActiveX ತಂತ್ರಜ್ಞಾನವನ್ನು ಬಳಸುತ್ತವೆ. ಮೈಕ್ರೋಸಾಫ್ಟ್ ಎಡ್ಜ್ ಇನ್ನೂ ವಿಸ್ತರಣೆಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಅದರಲ್ಲಿರುವ ವೆಬ್ ಕ್ಲೈಂಟ್ ನಿರ್ಬಂಧಗಳೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

ಮುಂದಿನ ಬೆಳವಣಿಗೆ

ವೆಬ್ ಕ್ಲೈಂಟ್ ಅಭಿವೃದ್ಧಿ ತಂಡಕ್ಕೆ ಕಾರ್ಯಗಳಲ್ಲಿ ಒಂದು ಕಾರ್ಯವನ್ನು ಮತ್ತಷ್ಟು ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದು. ವೆಬ್ ಕ್ಲೈಂಟ್‌ನ ಕಾರ್ಯವು ತೆಳುವಾದ ಕ್ಲೈಂಟ್‌ನ ಕ್ರಿಯಾತ್ಮಕತೆಗೆ ಒಂದೇ ಆಗಿರಬೇಕು; ಎಲ್ಲಾ ಹೊಸ ಕಾರ್ಯಗಳನ್ನು ತೆಳುವಾದ ಮತ್ತು ವೆಬ್ ಕ್ಲೈಂಟ್‌ಗಳಲ್ಲಿ ಏಕಕಾಲದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ.

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

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ