اجرای سرویسهای NodeJS در ASP.NET Core
نویسنده: احمد نواصری
تاریخ: ۱۳۹۶/۱۲/۲۳ ۱۲:۴۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddNodeServices();
} public async Task<IActionResult> Add([FromServices] INodeServices nodeServices)
{
var num1 = 10;
var num2 = 20;
var result = await nodeServices.InvokeAsync<int>("AddModule.js", num1, num2);
ViewData["ResultFromNode"] = $"Result of {num1} + {num2} is {result}";
return View();
} module.exports = function(callback, num1, num2) {
var result = num1 + num2;
callback(null, result);
};
حال بیاییم مثالی دیگر را مرور کنیم. میخواهیم از صفحه وب درخواستی، عکسی را تهیه کنیم. بدین منظور از کتابخانه url-to-image استفاده میکنیم. برای نصب آن دستور npm install --save url-to-image را در خط فرمان تایپ میکنیم.
بعد از اتمام نصب این بسته، متدی را برای دریافت اطلاعات ارسالی این کتابخانه تدارک میبینیم.
[HttpPost]
public async Task<IActionResult> GenerateUrlPreview([FromServices] INodeServices nodeServices)
{
var url = Request.Form["Url"].ToString();
var fileName = System.IO.Path.ChangeExtension(DateTime.UtcNow.Ticks.ToString(), "jpeg");
var file = await nodeServices.InvokeAsync<string>("UrlPreviewModule.js", url, System.IO.Path.Combine("PreviewImages", fileName));
return Content($"/Home/Download?img={fileName}");
}
public IActionResult Download()
{
var image = Request.Query["img"].ToString();
var fileName = System.IO.Path.Combine("PreviewImages", image);
var isExists = System.IO.File.Exists(fileName);
if (isExists)
{
Response.Headers.Add($"Content-Disposition", "attachment; filename=\"" + image + "\"");
var bytes = System.IO.File.ReadAllBytes(fileName);
return File(bytes, "image/jpeg");
}
else
{
return NotFound();
}
} سپس متد UrlPreviewModule.js را به صورت زیر مینویسیم:
var urlToImage = require('url-to-image');
module.exports = function (callback, url, imageName) {
urlToImage(url, imageName).then(function () {
callback(null, imageName);
}).catch(function (err) {
callback(err, imageName);
});
};
سرویسهای Node به توسعه دهندگان ASP.NET Core امکان استفاده از اکوسیستم NPM را که دارای قابلیتهای فراوانی میباشد، میدهد.