ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಮತ್ತು .NET ಇಂಟಿಗ್ರೇಶನ್ ಅನ್ನು ನಿರ್ವಹಿಸುವುದು
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು.NET ಫಂಕ್ಷನ್ಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಅನ್ನು ಬಳಸುವಾಗ ಕೆಲವೊಮ್ಮೆ ಅನಿರೀಕ್ಷಿತ ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು. JavaScript ನಿಂದ NET ಕಾರ್ಯಗಳನ್ನು ಕರೆ ಮಾಡುವಾಗ ಕಾಣಿಸಿಕೊಳ್ಳುವ "ಯಾವುದೇ ಕರೆ ರವಾನೆದಾರರನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ" ದೋಷವು ಡೆವಲಪರ್ಗಳಿಗೆ ಆಗಾಗ್ಗೆ ಸಮಸ್ಯೆಯಾಗಿದೆ. Blazor ಘಟಕಗಳ ಹೊರಗಿನಿಂದ static.NET ಕಾರ್ಯಗಳನ್ನು ಕರೆಯಲು ಪ್ರಯತ್ನಿಸುವಾಗ, ಈ ಸಮಸ್ಯೆಯು ಸಾಕಷ್ಟು ಕಿರಿಕಿರಿ ಉಂಟುಮಾಡಬಹುದು.
ಈ ಲೇಖನದಲ್ಲಿ ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಈ ಸಮಸ್ಯೆ ಉದ್ಭವಿಸುವ ವಿಶಿಷ್ಟ ಸನ್ನಿವೇಶವನ್ನು ನಾವು ಪರಿಶೀಲಿಸುತ್ತೇವೆ. ನೀವು `window.DotNet` ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು JavaScript ನಲ್ಲಿ a.NET ವಿಧಾನವನ್ನು ಕರೆ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ಸಮಸ್ಯೆಯು ಸಾಮಾನ್ಯವಾಗಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ವಿಧಾನವು ಒಂದು ಘಟಕಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ ಸೇವೆಯಲ್ಲಿ ಒಳಗೊಂಡಿದ್ದರೆ. ಲಾಗಿಂಗ್ನಂತಹ ನಿರಂತರ ಕಾರ್ಯಗಳಿಗಾಗಿ, ಈ ವಿಧಾನವು ಸಹಾಯಕವಾಗಬಹುದು.
ಸ್ಥಿರ ಸಹಾಯಕ ಸೇವೆಯನ್ನು ಚಲಾಯಿಸಲು ನಿಮ್ಮ ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೇಗೆ ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು ಎಂಬುದನ್ನು ತೋರಿಸುವ ನೈಜ-ಪ್ರಪಂಚದ ಉದಾಹರಣೆಯನ್ನು ನಾವು ನೋಡುತ್ತೇವೆ. ರವಾನೆದಾರರ ದೋಷಗಳಿಗೆ ಕಾರಣವಾಗುವ ವಿಶಿಷ್ಟ ತಪ್ಪುಗಳನ್ನು ತಪ್ಪಿಸುವ ಮೂಲಕ ಈ ಸೇವೆಯು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನೊಂದಿಗೆ ಸರಿಯಾಗಿ ಸಂವಹನ ನಡೆಸುತ್ತದೆ ಎಂದು ಖಾತರಿಪಡಿಸುವುದು ಇದರ ಉದ್ದೇಶವಾಗಿದೆ. ತಪ್ಪಾದ ನೇಮ್ಸ್ಪೇಸ್ ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ಅಥವಾ ಸೇವೆಯನ್ನು ತಪ್ಪಾಗಿ ಪ್ರಾರಂಭಿಸುವ ಮೂಲಕ ಈ ಸಮಸ್ಯೆಗಳನ್ನು ಹೇಗೆ ತರಬಹುದು ಎಂಬುದನ್ನು ನೀವು ನೋಡುತ್ತೀರಿ.
ಕೊನೆಯದಾಗಿ, ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಅಗತ್ಯವಿರುವ ಕ್ರಮಗಳನ್ನು ನಾವು ಪರಿಶೀಲಿಸುತ್ತೇವೆ ಮತ್ತು JavaScript ಸ್ಥಿರತೆಯೊಂದಿಗೆ ನಿಮ್ಮ.NET ವಿಧಾನಗಳನ್ನು ಕರೆಯಬಹುದು ಎಂದು ಖಾತರಿಪಡಿಸುತ್ತೇವೆ. ನಿಮ್ಮ ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನೀವು ಬಲಪಡಿಸಬಹುದು ಮತ್ತು ಈ ಸಮಸ್ಯೆಗಳನ್ನು ಸರಿಪಡಿಸುವ ಮೂಲಕ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಇಂಟರ್ಯಾಪ್ ಅನ್ನು ಬೆಂಬಲಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೆಚ್ಚಿಸಬಹುದು.
ಆಜ್ಞೆ | ಬಳಕೆಯ ಉದಾಹರಣೆ |
---|---|
JSInvokable | ಈ ಗುಣಲಕ್ಷಣವು JavaScript ನಿಂದ a.NET ಕಾರ್ಯವನ್ನು ಕರೆಯಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ. ಉದಾಹರಣೆಯಲ್ಲಿನ ಕಾರ್ಯವನ್ನು [JSIinvokable("WriteInfo")] ಮೂಲಕ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕರೆಗಳಿಗೆ ಲಭ್ಯವಿದೆ ಎಂದು ಗುರುತಿಸಲಾಗಿದೆ, ಇದು ಬ್ಲೇಜರ್ನಲ್ಲಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಇಂಟರ್ಯಾಪ್ಗೆ ಅತ್ಯಗತ್ಯವಾಗಿರುತ್ತದೆ. |
DotNet.invokeMethodAsync | ಈ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕಾರ್ಯವನ್ನು JavaScript ಒಳಗೆ static.NET ವಿಧಾನವನ್ನು ಅಸಮಕಾಲಿಕವಾಗಿ ಕರೆಯಲು ಬಳಸಲಾಗುತ್ತದೆ. ವಿಂಡೋ ಉದಾಹರಣೆ. ಪುಟದಿಂದ C# ಕಾರ್ಯವನ್ನು ಪ್ರಾರಂಭಿಸಲು DotNet.invokeMethodAsync ('MyNamespace', 'WriteInfo', ಸಂದೇಶ) ಅನ್ನು ಬಳಸುವುದು ಅತ್ಯಗತ್ಯ. |
ILogger<T> | ASP.NET ಕೋರ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ, ಲಾಗಿಂಗ್ ಅನ್ನು ILogger ಮೂಲಕ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ |
Mock<T> | ಮೋಕ್ ನ ಅಣಕು |
Times.Once | ಯುನಿಟ್ ಪರೀಕ್ಷೆಯಲ್ಲಿನ ಸಮಯಗಳು. ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ ಅನುಕರಿಸಿದ ಲಾಗರ್ ವಿಧಾನವನ್ನು ನಿಖರವಾಗಿ ಒಮ್ಮೆ ಕರೆಯಲಾಗುತ್ತದೆ ಎಂಬ ಪ್ರತಿಪಾದನೆಯನ್ನು ಒಮ್ಮೆ ಪದವನ್ನು ಬಳಸಿ ಮಾಡಲಾಗಿದೆ. ಕರೆ ಮಾಡಿದಾಗ ವಿಧಾನವು ಸೂಕ್ತವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಇದು ಖಾತರಿಪಡಿಸುತ್ತದೆ. |
builder.Services.AddSingleton | ಈ ಆಜ್ಞೆಯೊಂದಿಗೆ, ASP.NET ಕೋರ್ನಲ್ಲಿನ ಸೇವೆಯನ್ನು ಅವಲಂಬನೆ ಇಂಜೆಕ್ಷನ್ ಕಂಟೇನರ್ನೊಂದಿಗೆ ನೋಂದಾಯಿಸಲಾಗಿದೆ. Builder.Services.AddSingleton ಅನ್ನು ನೇಮಿಸಿಕೊಳ್ಳುವುದು |
Debugger | ಡೀಬಗ್ ಮಾಡುವ ಪರಿಕರಗಳು ಬ್ರೌಸರ್ನಲ್ಲಿ ತೆರೆದಾಗ, JavaScript ಡೀಬಗರ್; ಹೇಳಿಕೆಯು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ. ಇದು ನೈಜ ಸಮಯದಲ್ಲಿ ಮೌಲ್ಯಗಳನ್ನು ವೀಕ್ಷಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಇದು 'ನೋ ಕಾಲ್ ಡಿಸ್ಪ್ಯಾಚರ್ ಹ್ಯಾಸ್ ಬೀನ್ ಸೆಟ್' ದೋಷದಂತಹ ಸಮಸ್ಯೆಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಸಹಾಯಕವಾಗಿದೆ. |
_mockLogger.Verify | This is used to verify that a method was called on a mock object in unit tests. For instance, _mockLogger.Verify(logger =>ಘಟಕ ಪರೀಕ್ಷೆಗಳಲ್ಲಿ ಅಣಕು ವಸ್ತುವಿನ ಮೇಲೆ ವಿಧಾನವನ್ನು ಕರೆಯಲಾಗಿದೆ ಎಂದು ಪರಿಶೀಲಿಸಲು ಇದನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, _mockLogger.Verify(logger => logger.LogInformation(message), Times.Once) ಲಾಗಿಂಗ್ ವಿಧಾನವನ್ನು ಆಹ್ವಾನಿಸಲು ಸರಿಯಾದ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಬಳಸಲಾಗಿದೆ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ. |
ಬ್ಲೇಜರ್ ಸರ್ವರ್ನಲ್ಲಿ .NET ಇಂಟರ್ಆಪರೇಬಿಲಿಟಿಗೆ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಿಂದ a.NET ವಿಧಾನವನ್ನು ಆಹ್ವಾನಿಸುವ ಸಮಸ್ಯೆಯನ್ನು ನೀಡಿರುವ ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿಂದ ಪರಿಹರಿಸಲಾಗುತ್ತದೆ. ಪ್ರೋಗ್ರಾಮರ್ಗಳು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು call.NET ಫಂಕ್ಷನ್ಗಳಿಗೆ ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ "ಯಾವುದೇ ಕರೆ ರವಾನೆದಾರರನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ" ಎಂಬ ದೋಷವನ್ನು ಪಡೆದಾಗ ಮುಖ್ಯ ಸಮಸ್ಯೆ ಉಂಟಾಗುತ್ತದೆ. ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಫ್ರೇಮ್ವರ್ಕ್ ಕರೆ ಡಿಸ್ಪ್ಯಾಚರ್ ಅನ್ನು ಸರಿಯಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ ಎಂದು ಪರಿಶೀಲಿಸುವವರೆಗೆ JavaScript ಗೆ.NET ಬ್ಯಾಕೆಂಡ್ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಸಾಧ್ಯವಾಗದ ಕಾರಣ ಇದು ಸಂಭವಿಸುತ್ತದೆ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ,.NET ವಿಧಾನಗಳು ಎಂಬ ಸ್ಥಿರ ಸೇವಾ ವರ್ಗದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ JsHelperService, ಇದು ಅವುಗಳನ್ನು ವಿಶ್ವಾದ್ಯಂತ ಲಭ್ಯವಾಗುವಂತೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಕೊಳೆಯಬಹುದಾದ ನಿರ್ದಿಷ್ಟ ಘಟಕಕ್ಕೆ ಸೀಮಿತವಾಗಿಲ್ಲ.
ದಿ [ಜೆಎಸ್ಐ ಆವಾಹನೀಯ] ಕೋರ್ ಕಮಾಂಡ್ ಅನ್ನು ತಯಾರಿಸಲು ಅತ್ಯಗತ್ಯ .NET method callable from JavaScript. This attribute in the script designates the method ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಿಂದ ಕರೆಯಬಹುದಾದ ವಿಧಾನ. ಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿರುವ ಈ ಗುಣಲಕ್ಷಣವು i>WriteInfo ವಿಧಾನವನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಇದನ್ನು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್-ಪ್ರವೇಶಿಸುವಂತೆ ಮಾಡುತ್ತದೆ. ಈ ಸಂದೇಶ-ಲಾಗಿಂಗ್ ಸೇವೆಯ ಸಹಾಯದಿಂದ, JavaScript ಅನ್ನು ತೆರೆದಿರುವಾಗ ಕೇಂದ್ರೀಕೃತ ಲಾಗಿಂಗ್ಗಾಗಿ.NET ಅನ್ನು ಹೇಗೆ ನಿಯಂತ್ರಿಸುವುದು ಎಂಬುದನ್ನು ನೀವು ನೋಡಬಹುದು. ದಿ Init ನಿಂದ ಸೇವೆಯನ್ನು ಕರೆಯಲು ವಿಧಾನವನ್ನು ಬಳಸಬೇಕು Program.cs ಆದ್ದರಿಂದ ಅಪ್ಲಿಕೇಶನ್ ಪ್ರಾರಂಭವಾದಾಗ ಅದನ್ನು ತಕ್ಷಣವೇ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ವಿಲೇವಾರಿ ಮಾಡಬಹುದಾದ ಪ್ರತ್ಯೇಕ ಘಟಕಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿಲ್ಲ.
ಉದಾಹರಣೆಯ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಭಾಗವು.NET ಕಾರ್ಯವನ್ನು ಅಸಮಕಾಲಿಕವಾಗಿ ಬಳಸುತ್ತದೆ window.DotNet.invokeMethodAsync. ಕರೆಯಲ್ಪಡುವ ಪ್ರತಿಯೊಂದು ವಿಧಾನವನ್ನು ನಿರ್ಬಂಧಿಸದ ರೀತಿಯಲ್ಲಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗಿದೆ ಎಂದು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಇದು a.NET ಉತ್ತರಕ್ಕಾಗಿ ಕಾಯುತ್ತಿರುವಾಗ ಮಧ್ಯಂತರದಲ್ಲಿ ರನ್ ಮಾಡಲು ಇತರ ಕೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ. ಸ್ಕ್ರಿಪ್ಟ್ ಹೆಸರಿನ ಮರುಬಳಕೆಯ ವಿಧಾನವನ್ನು ರಚಿಸುತ್ತದೆ ಮಾಹಿತಿ ಬರೆಯಿರಿ ಇದನ್ನು ನಿಯೋಜಿಸುವ ಮೂಲಕ ಮಾಹಿತಿಯನ್ನು ಲಾಗ್ ಮಾಡಲು ಪ್ರೋಗ್ರಾಂನ ಯಾವುದೇ ಪ್ರದೇಶದಿಂದ ಆಹ್ವಾನಿಸಬಹುದು windows.dotnet ಲಾಗರ್ ವಸ್ತು. ಡೀಬಗ್ ಮಾಡಲು, ಸ್ಕ್ರಿಪ್ಟ್ ಸಹ ಬಳಸುತ್ತದೆ a ಡೀಬಗರ್ ಲೈನ್, ಇದು ಡೆವಲಪರ್ ರನ್ಟೈಮ್ ಅನ್ನು ವಿರಾಮಗೊಳಿಸಲು ಮತ್ತು ವೇರಿಯೇಬಲ್ಗಳ ಸ್ಥಿತಿಯನ್ನು ಪರೀಕ್ಷಿಸಲು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.
ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಡಾಟ್ನೆಟ್ ಜಾಗತಿಕ ವಿಂಡೋ ಸ್ಕೋಪ್ನಲ್ಲಿ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಬಹುದು, ದೋಷನಿವಾರಣೆ ಮಾಡುವಾಗ ಇದು ಅತ್ಯಗತ್ಯವಾಗಿರುತ್ತದೆ. ಈ ವಸ್ತುವು ಇಲ್ಲದಿದ್ದಲ್ಲಿ ಅಥವಾ ತಪ್ಪಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ್ದರೆ JavaScript ಗೆ.NET ವಿಧಾನಗಳನ್ನು ಆಹ್ವಾನಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ವಿಧಾನದ ನೇಮ್ಸ್ಪೇಸ್ ಅನ್ನು ಸರಿಯಾಗಿ ತಿಳಿಸಬೇಕಾಗಿದೆ ಆವಾಹನೆ ವಿಧಾನ ಅಸಿಂಕ್ ಸಮಸ್ಯೆಯನ್ನು ತಡೆಗಟ್ಟಲು ಕರೆ ಮಾಡಿ. ನೇಮ್ಸ್ಪೇಸ್ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ ಅಥವಾ ಸೇವೆಯನ್ನು ಸರಿಯಾಗಿ ನೋಂದಾಯಿಸಲು ವಿಫಲವಾಗಿದೆ Program.cs ಸಾಮಾನ್ಯ ದೋಷಗಳಾಗಿವೆ. ಸೇವೆಯನ್ನು ಸಿಂಗಲ್ಟನ್ ಆಗಿ ನೋಂದಾಯಿಸುವ ಮೂಲಕ ಸೇವೆಯ ವಿಲೇವಾರಿ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗುತ್ತದೆ ಬಿಲ್ಡರ್.ಸೇವೆಗಳು.ಆಡ್ಸಿಂಗಲ್ಟನ್, ಇದು ಅಪ್ಲಿಕೇಶನ್ನ ಅವಧಿಯವರೆಗೆ ಸೇವೆ ಲಭ್ಯವಿದೆ ಎಂದು ಖಾತರಿಪಡಿಸುತ್ತದೆ.
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಏಕೀಕರಣದೊಂದಿಗೆ ಬ್ಲೇಜರ್ ಸರ್ವರ್ನಲ್ಲಿ 'ನೋ ಕಾಲ್ ಡಿಸ್ಪ್ಯಾಚರ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗಿದೆ' ಎಂದು ಸರಿಪಡಿಸುವುದು
ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಏಕೀಕರಣ. ಸ್ಥಿರ ಸೇವಾ ತರಗತಿಗಳ ಮೂಲಕ JavaScript ಕರೆಗಳು.NET ವಿಧಾನಗಳು.
namespace MyNamespace.Utility
{
public static class JsHelperService
{
static JsHelperService()
{
var i = 0; // Constructor breakpoint test
}
public static void Init() { /* Ensure initialization in Program.cs */ }
[JSInvokable("WriteInfo")]
public static void WriteInfo(string message)
{
Logger.Instance.WriteInfo(message);
}
}
}
ಪರಿಹಾರ 2: ಅವಲಂಬನೆ ಇಂಜೆಕ್ಷನ್ನೊಂದಿಗೆ ಬ್ಲೇಜರ್ ಸರ್ವರ್ನಲ್ಲಿ "ನೋ ಕಾಲ್ ಡಿಸ್ಪ್ಯಾಚರ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ"
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕರೆಗಳಿಗೆ.NET ಕಾರ್ಯಗಳಿಗೆ ನಿರಂತರ ಸೇವೆಯನ್ನು ಖಾತರಿಪಡಿಸಲು ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಡಿಪೆಂಡೆನ್ಸಿ ಇಂಜೆಕ್ಷನ್ (DI) ತಂತ್ರವನ್ನು ಬಳಸುತ್ತದೆ.
namespace MyNamespace.Utility
{
public class JsHelperService
{
private readonly ILogger _logger;
public JsHelperService(ILogger<JsHelperService> logger)
{
_logger = logger;
}
[JSInvokable("WriteInfo")]
public void WriteInfo(string message)
{
_logger.LogInformation(message);
}
}
}
// In Program.cs, register the service
builder.Services.AddSingleton<JsHelperService>();
ಪರಿಹಾರವನ್ನು ಪರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ: ಬ್ಲೇಜರ್ ಸರ್ವರ್ಗಾಗಿ ಫ್ರಂಟೆಂಡ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಸೆಟಪ್
ಕರೆ ಡಿಸ್ಪ್ಯಾಚರ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು JavaScript ಕಾರ್ಯವನ್ನು ಬಳಸಿ ಮತ್ತು asynchronously.DotNet ವಿಧಾನಗಳಿಗೆ ಕರೆ ಮಾಡಲು ವಿಂಡೋವನ್ನು ಬಳಸಿ.
function setupLogging() {
debugger; // For debugging
window.dotnetLogger = window.dotnetLogger || {};
window.dotnetLogger.writeInfo = function (message) {
window.DotNet.invokeMethodAsync('MyNamespace', 'WriteInfo', message)
.then(response => console.log('Info logged successfully'))
.catch(error => console.error('Error logging info:', error));
};
}
ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಇಂಟರ್ಯಾಪ್ಗಾಗಿ ಘಟಕ ಪರೀಕ್ಷೆ
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ ಸೇವೆಯು ಬ್ಲೇಜರ್ ಸರ್ವರ್ನೊಂದಿಗೆ ಯಶಸ್ವಿಯಾಗಿ ಸಂವಹನ ನಡೆಸುತ್ತಿದೆ ಎಂದು ಪರಿಶೀಲಿಸಲು ಘಟಕ ಪರೀಕ್ಷೆಗಳು.
using Xunit;
public class JsHelperServiceTests
{
private readonly Mock<ILogger<JsHelperService>> _mockLogger;
private readonly JsHelperService _jsHelperService;
public JsHelperServiceTests()
{
_mockLogger = new Mock<ILogger<JsHelperService>>();
_jsHelperService = new JsHelperService(_mockLogger.Object);
}
[Fact]
public void WriteInfo_LogsMessage()
{
var message = "Test log message";
_jsHelperService.WriteInfo(message);
_mockLogger.Verify(logger => logger.LogInformation(message), Times.Once);
}
}
ಬ್ಲೇಜರ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಇಂಟರ್ಆಪರೇಬಿಲಿಟಿ: ಬಿಯಾಂಡ್ ದಿ ಬೇಸಿಕ್ಸ್
ಪ್ರಬಲ ಆನ್ಲೈನ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಬ್ಲೇಜರ್ ಸರ್ವರ್ಗೆ, JavaScript ಮತ್ತು.NET ಏಕೀಕರಣವು ಅತ್ಯಗತ್ಯ. ಆದರೆ ಸ್ಥಿರ ಸೇವೆಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಬ್ಲೇಜರ್ ಅನ್ನು ಬಳಸುವುದು ಸವಾಲಿನದ್ದಾಗಿರಬಹುದು, ವಿಶೇಷವಾಗಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನೊಂದಿಗೆ ತೊಡಗಿಸಿಕೊಂಡಾಗ. JavaScript ನಿಂದ call.NET ಕಾರ್ಯಗಳನ್ನು ಮಾಡುವಾಗ, "ಯಾವುದೇ ಕರೆ ರವಾನೆದಾರರನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ" ಎಂಬ ದೋಷವು ಆಗಾಗ್ಗೆ ಸಂಭವಿಸುತ್ತದೆ. ಕ್ರಾಸ್-ಎನ್ವಿರಾನ್ಮೆಂಟ್ ಕರೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಕರೆ ರವಾನೆದಾರರ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುವ ಬ್ಲೇಜರ್ನ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಇಂಟರಾಪ್, ಸಾಮಾನ್ಯವಾಗಿ ಅಸಮರ್ಪಕ ಸೆಟಪ್ ಅಥವಾ ಕಾಣೆಯಾದ ಕಾನ್ಫಿಗರೇಶನ್ಗಳಿಂದಾಗಿ ಈ ಸಮಸ್ಯೆಯನ್ನು ಹೊಂದಿದೆ. ಅಂತಹ ತಪ್ಪುಗಳನ್ನು ತಡೆಗಟ್ಟಲು, ಬ್ಲೇಜರ್ ತನ್ನ ರವಾನೆದಾರರನ್ನು ಹೇಗೆ ಪ್ರಾರಂಭಿಸುತ್ತದೆ ಮತ್ತು ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು.
ಅಪ್ಲಿಕೇಶನ್ ಲಾಂಚ್ನಲ್ಲಿ.NET ಕಾರ್ಯಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸುವ ಸೇವೆಯನ್ನು ಸರಿಯಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಒಂದು ಮಾರ್ಗವಾಗಿದೆ. ಸೇವೆಯನ್ನು a ನಂತೆ ಸೇರಿಸಲಾಗಿದೆ singleton ಒಳಗೆ Program.cs, ಆದ್ದರಿಂದ ಇದು ಅಪ್ಲಿಕೇಶನ್ನ ಅವಧಿಯವರೆಗೆ ಇರುತ್ತದೆ ಎಂದು ನಿಮಗೆ ತಿಳಿದಿದೆ. ಹಾಗೆ ಸ್ಥಿರ ವರ್ಗಗಳನ್ನು ನೀಡಲಾಗಿದೆ JsHelperService ಯಾವುದೇ ನಿರ್ದಿಷ್ಟ ಘಟಕವನ್ನು ಅವಲಂಬಿಸಿಲ್ಲ, ಅವುಗಳನ್ನು ಬಳಸುವಾಗ ಇದು ವಿಶೇಷವಾಗಿ ನಿರ್ಣಾಯಕವಾಗಿದೆ. ಸೇವೆಯನ್ನು ನಿರ್ವಹಿಸುವುದು ಜೀವನಚಕ್ರಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಸಮಸ್ಯೆಗಳನ್ನು ಎದುರಿಸದೆಯೇ JavaScript ಕರೆ.NET ವಿಧಾನಗಳನ್ನು ನಿರಂತರವಾಗಿ ಮಾಡಬಹುದು ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
ಅಸ್ತಿತ್ವವನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ DotNet ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಪರಿಸರದಲ್ಲಿನ ವಸ್ತುವು ಮತ್ತೊಂದು ನಿರ್ಣಾಯಕ ಅಂಶವಾಗಿದೆ. ಗೆ ಇದು ಅವಶ್ಯಕವಾಗಿದೆ window.DotNet JavaScript ನಿಂದ ಯಾವುದೇ.NET ವಿಧಾನಗಳಿಗೆ ಕರೆ ಮಾಡುವ ಮೊದಲು ಲೋಡ್ ಮಾಡಲು ಆಬ್ಜೆಕ್ಟ್ ಮತ್ತು ಲಭ್ಯವಿರುತ್ತದೆ. ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ Blazor.webassembly.js ಫೈಲ್ ಈ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಸೂಕ್ತವಾಗಿ ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ ಕೆಳಗಿನ ದೋಷಗಳು ಸಂಭವಿಸಬಹುದು. ಪ್ರಾರಂಭವನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು JavaScript ಡೀಬಗರ್ಗಳನ್ನು ಬಳಸುವ ಮೂಲಕ ನೀವು ಈ ವಸ್ತುವಿನ ಲಭ್ಯತೆಯನ್ನು ಪತ್ತೆಹಚ್ಚಬಹುದು.
Blazor JavaScript ಇಂಟಿಗ್ರೇಷನ್ ಬಗ್ಗೆ ಸಾಮಾನ್ಯ ಪ್ರಶ್ನೆಗಳು
- "ಯಾವುದೇ ಕರೆ ರವಾನೆದಾರರನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ" ಎಂದು ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಏಕೆ ವರದಿ ಮಾಡುತ್ತದೆ?
- ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಬ್ಲೇಜರ್ ಕರೆ ಡಿಸ್ಪ್ಯಾಚರ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವ ಮೊದಲು a.NET ವಿಧಾನವನ್ನು ಆಹ್ವಾನಿಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ, ದೋಷ ಸಂಭವಿಸುತ್ತದೆ. ಜಾಗತಿಕ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಸಂದರ್ಭವು ಒಳಗೊಂಡಿದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ window.DotNet.
- ಬ್ಲೇಜರ್ ಸರ್ವರ್ನಲ್ಲಿ ನಾನು ಸೇವೆಗಳನ್ನು ಹೇಗೆ ಮುಂದುವರಿಸಬಹುದು?
- ಬ್ಲೇಜರ್ ಸರ್ವರ್ನಲ್ಲಿನ ಸೇವೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಂರಕ್ಷಿಸಬಹುದು builder.Services.AddSingleton<T>() ಅವುಗಳನ್ನು ನೋಂದಾಯಿಸಲು ಅ singleton ರಲ್ಲಿ Program.cs ಕಡತ.
- ಬ್ಲೇಜರ್ನಲ್ಲಿ [JSinvokable] ಪಾತ್ರವೇನು?
- ದಿ [JSInvokable] ಆಸ್ತಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಿಂದ ಪ್ರವೇಶಿಸಬಹುದಾದ NET ಕಾರ್ಯಗಳನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಸರ್ವರ್-ಸೈಡ್ ಮತ್ತು ಕ್ಲೈಂಟ್-ಸೈಡ್ ಪರಿಸರಗಳ ನಡುವೆ ಸಂವಹನವನ್ನು ಸಾಧ್ಯವಾಗಿಸುವುದು ಅವಶ್ಯಕ.
- Blazor ನಲ್ಲಿ JavaScript ಮತ್ತು.NET ನೊಂದಿಗೆ ಇಂಟರ್ಆಪರೇಬಿಲಿಟಿ ತೊಂದರೆಗಳನ್ನು ನಾನು ಹೇಗೆ ನಿವಾರಿಸಬಹುದು?
- ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ, ನೀವು ಬ್ಲೇಜರ್-ಟು-ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕರೆಗಳ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಬಹುದು ಮತ್ತು ಇದನ್ನು ಬಳಸಿಕೊಂಡು ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ವಿರಾಮಗೊಳಿಸಬಹುದು debugger ಆಜ್ಞೆ. ಬ್ಲೇಜರ್ ಡಿಸ್ಪ್ಯಾಚರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗಿದೆಯೇ ಎಂದು ನಿರ್ಧರಿಸಲು ಇದು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- ನಾನು ಬ್ಲೇಜರ್ನಲ್ಲಿ ಸ್ಥಿರ ಸೇವಾ ತರಗತಿಗಳನ್ನು ಏಕೆ ಬಳಸಬೇಕು?
- ನಿಮಗೆ ಲಾಗಿಂಗ್ನಂತಹ ನಿರಂತರ ಸೇವೆಗಳ ಅಗತ್ಯವಿದ್ದಾಗ, ಸ್ಥಿರ ಸೇವಾ ತರಗತಿಗಳು ಸೂಕ್ತವಾಗಿ ಬರುತ್ತವೆ. ಬಳಸುತ್ತಿದೆ Program.cs, ಅವುಗಳನ್ನು ಒಮ್ಮೆ ತತ್ಕ್ಷಣಗೊಳಿಸಬಹುದು ಮತ್ತು ಪ್ರೋಗ್ರಾಂನ ಯಾವುದೇ ಸ್ಥಳದಿಂದ ಪ್ರವೇಶಿಸಬಹುದು.
ಬ್ಲೇಜರ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಇಂಟರ್ಯಾಪ್ನಲ್ಲಿ ಅಂತಿಮ ಆಲೋಚನೆಗಳು
ನಿಮ್ಮ JavaScript ಸರಿಯಾಗಿ.NET ಪರಿಸರದೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುತ್ತಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ನಿಮ್ಮ ಬ್ಲೇಜರ್ "ಯಾವುದೇ ಕರೆ ರವಾನೆದಾರರನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ" ದೋಷವನ್ನು ಸರಿಪಡಿಸಲು ಪ್ರಾರಂಭದಲ್ಲಿ ಸೇವೆಯನ್ನು ಸರಿಯಾಗಿ ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ. ಸ್ಥಿರ ಸೇವೆಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳುವ ಮೂಲಕ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ನ ಜೀವನಚಕ್ರದ ಉದ್ದಕ್ಕೂ ಅವುಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಮೂಲಕ ರವಾನೆದಾರ-ಸಂಬಂಧಿತ ಸಮಸ್ಯೆಗಳನ್ನು ತಪ್ಪಿಸಿ.
ವಿಧಾನಗಳನ್ನು ಕರೆಯುವ ಮೊದಲು, ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಸಹ ಮುಖ್ಯವಾಗಿದೆ ಡಾಟ್ನೆಟ್ ವಸ್ತುವನ್ನು ಸರಿಯಾಗಿ ಲೋಡ್ ಮಾಡಲಾಗಿದೆ. ಡೆವಲಪರ್ಗಳು JavaScript-to-.NET ಸಂವಹನವನ್ನು ತ್ವರಿತಗೊಳಿಸಬಹುದು ಮತ್ತು ಸರಿಯಾದ ಡೀಬಗ್ ಮಾಡುವ ಪರಿಕರಗಳು ಮತ್ತು ಕಾನ್ಫಿಗರೇಶನ್ಗಳನ್ನು ಸ್ಥಳದಲ್ಲಿ ಇರಿಸುವ ಮೂಲಕ Blazor ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಈ ಆಗಾಗ್ಗೆ ಸಮಸ್ಯೆಗಳನ್ನು ನಿವಾರಿಸಬಹುದು.
ಉಲ್ಲೇಖಗಳು ಮತ್ತು ಮೂಲಗಳು
- ಬ್ಲೇಜರ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಇಂಟರ್ಆಪರೇಬಿಲಿಟಿ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಬಳಕೆಯಲ್ಲಿ ಆಳವಾದ ಮಾರ್ಗದರ್ಶನವನ್ನು ಒದಗಿಸುತ್ತದೆ DotNet.invokeMethodAsync ಮತ್ತು ರವಾನೆದಾರರ ದೋಷಗಳನ್ನು ಪರಿಹರಿಸುವುದು. ಬ್ಲೇಜರ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಇಂಟರ್ಯಾಪ್
- ಬ್ಲೇಜರ್ ಸರ್ವರ್ನಲ್ಲಿನ Microsoft ಅಧಿಕೃತ ಮಾರ್ಗದರ್ಶಿಯು ಸೇವಾ ಜೀವಿತಾವಧಿಯನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು ಮತ್ತು ಸೇವೆಗಳನ್ನು ಸರಿಯಾಗಿ ನೋಂದಾಯಿಸುವುದು ಹೇಗೆ ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತದೆ ಬಿಲ್ಡರ್.ಸೇವೆಗಳು.ಆಡ್ಸಿಂಗಲ್ಟನ್ ಒಳಗೆ Program.cs. ಬ್ಲೇಜರ್ನಲ್ಲಿ ಅವಲಂಬನೆ ಇಂಜೆಕ್ಷನ್
- ಈ ಸ್ಟಾಕ್ ಓವರ್ಫ್ಲೋ ಚರ್ಚೆಯು ಸಾಮಾನ್ಯ ದೋಷಗಳು ಮತ್ತು "ಯಾವುದೇ ಕರೆ ರವಾನೆದಾರರನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ" ಸಮಸ್ಯೆಗೆ ಪರಿಹಾರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಬ್ಲೇಜರ್ ಸರ್ವರ್ ಕರೆ ಡಿಸ್ಪ್ಯಾಚರ್ ದೋಷ