1658931609
تعرف على مفهوم هندسة الخدمات المصغرة. تعرف على كيفية إنشاء ونشر واختبار بنية الخدمات المصغرة في .NET و C # باستخدام حاوية Docker.
يصور مصطلح الخدمات المصغرة أسلوب تطوير البرمجيات الذي نما من الاتجاهات المعاصرة إلى إعداد الممارسات التي تهدف إلى زيادة سرعة وكفاءة تطوير وإدارة حلول البرمجيات على نطاق واسع. الخدمات المصغرة هي أكثر حول تطبيق عدد معين من المبادئ والأنماط المعمارية مثل الهندسة المعمارية. تعيش كل خدمة صغيرة بشكل مستقل ، ولكن من ناحية أخرى ، تعتمد جميعها أيضًا على بعضها البعض. يتم نشر جميع الخدمات المصغرة في المشروع في الإنتاج وفقًا لسرعتها الخاصة ، في مكان العمل على السحابة ، بشكل مستقل ، تعيش جنبًا إلى جنب.
في هذه المقالة ، سوف نتعلم مفهوم الخدمات المصغرة وبنيتها وكيفية إنشاء الخدمات المصغرة في .NET و C #. ستتعلم أيضًا خطوات إنشاء الخدمات المصغرة ونشرها واختبارها في .NET باستخدام حاوية عامل إرساء.
تُظهر الصورة التالية من Microsoft Docs نمط بنية الخدمات المصغرة.
هناك العديد من المكونات في بنية الخدمات المصغرة بصرف النظر عن الخدمات المصغرة نفسها.
الإدارة . يحافظ على العقد الخاصة بالخدمة.
مزود الهوية . يدير معلومات الهوية ويوفر خدمات المصادقة داخل شبكة موزعة.
اكتشاف الخدمة . يتتبع الخدمات وعناوين الخدمة ونقاط النهاية.
بوابة API . بمثابة نقطة دخول العميل. نقطة اتصال واحدة من العميل والتي بدورها تعرض ردودًا من الخدمات المصغرة الأساسية وأحيانًا استجابة مجمعة من خدمات مصغرة أساسية متعددة.
CDN . شبكة توصيل المحتوى لخدمة الموارد الثابتة مثل الصفحات ومحتوى الويب في شبكة موزعة
المحتوى الثابت الموارد الثابتة مثل الصفحات ومحتوى الويب
يتم نشر الخدمات المصغرة بشكل مستقل مع قاعدة البيانات الخاصة بها لكل خدمة بحيث تبدو الخدمات المصغرة الأساسية كما هو موضح في الصورة التالية.
التطبيقات المتجانسة هي أكثر من حزمة واحدة كاملة تحتوي على جميع المكونات والخدمات اللازمة ذات الصلة المغلفة في حزمة واحدة.
فيما يلي التمثيل التخطيطي للعمارة المتجانسة كونها حزمة كاملة أو قائمة على الخدمة.
Microservice هي طريقة لإنشاء خدمات صغيرة تعمل كل منها في مساحتها الخاصة ويمكن التواصل عبر الرسائل. هذه خدمات مستقلة تقوم باستدعاء قاعدة البيانات الخاصة بها مباشرة.
فيما يلي تمثيل تخطيطي لبنية الخدمات المصغرة.
في البنية المتجانسة ، تظل قاعدة البيانات كما هي بالنسبة لجميع الوظائف حتى إذا تم اتباع نهج للبنية الموجهة نحو الخدمة ، بينما في الخدمات المصغرة ، سيكون لكل خدمة قاعدة بيانات خاصة بها.
تقوم الحاويات مثل Dockers وغيرها بتقسيم موارد نظام التشغيل ، على سبيل المثال مكدس الشبكة ومساحة العمليات وتسلسل نظام الملفات ومكدس التخزين. يشبه عمال الرصيف إضفاء الطابع الافتراضي على نظام التشغيل. تعرف على المزيد حول عمال الرصيف هنا . افتح عنوان URL هذا وانقر فوق Download from Docker hub. بمجرد التنزيل ، قم بتسجيل الدخول إلى Docker واتبع التعليمات لتثبيت Docker لـ Windows.
سيوضح هذا القسم كيفية إنشاء خدمة مصغرة للمنتج باستخدام ASP.NET Core خطوة بخطوة بمساعدة الصور. سيتم بناء الخدمة باستخدام ASP.NET Core 2.1 و Visual Studio 2017. يأتي Asp.NET Core مدمجًا مع VS 2017. سيكون لهذه الخدمة قاعدة بيانات DBcontext وقاعدة بيانات مع المستودع المعزول بحيث يمكن نشر الخدمة بشكل مستقل.
على الرغم من أن مشروع .NET Core API يحتوي على دعم داخلي لـ EF Core ويتم تنزيل جميع التبعيات ذات الصلة في وقت إنشاء المشروع وتجميعه والتي يمكن العثور عليها ضمن قسم SDK في المشروع كما هو موضح أدناه.
يجب أن يكون Microsoft.EntityFrameworkCore.SqlServer (2.1.1) هو الحزمة داخل حزمة SDK التي تم تنزيلها. إذا لم يكن موجودًا ، فيمكن إضافته صراحةً إلى المشروع عبر حزم Nuget.
هناك حاجة إلى سياق قاعدة البيانات حتى تتمكن النماذج من التفاعل مع قاعدة البيانات.
using Microsoft.EntityFrameworkCore;
using ProductMicroservice.Models;
namespace ProductMicroservice.DBContexts
{
public class ProductContext : DbContext
{
public ProductContext(DbContextOptions<ProductContext> options) : base(options)
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Category>().HasData(
new Category
{
Id = 1,
Name = "Electronics",
Description = "Electronic Items",
},
new Category
{
Id = 2,
Name = "Clothes",
Description = "Dresses",
},
new Category
{
Id = 3,
Name = "Grocery",
Description = "Grocery Items",
}
);
}
}
}
افتح ملف Startup.cs لإضافة موفر قاعدة بيانات خادم SQL لـ EF Core. قم بإضافة خدمات التعليمات البرمجية .AddDbContext <ProductContext> (o => o.UseSqlServer (Configuration.GetConnectionString ("ProductDB"))) ؛ تحت طريقة ConfigureServices. لاحظ أنه في طريقة GetConnectionString ، يتم تمرير اسم مفتاح سلسلة الاتصال التي تمت إضافتها في ملف appsettings.
يعمل المستودع كمكون صغير للخدمة المصغرة التي تغلف طبقة الوصول إلى البيانات وتساعد في استمرارية البيانات وقابلية الاختبار أيضًا.
using Microsoft.EntityFrameworkCore;
using ProductMicroservice.DBContexts;
using ProductMicroservice.Models;
using System;
using System.Collections.Generic;
using System.Linq;
namespace ProductMicroservice.Repository
{
public class ProductRepository: IProductRepository
{
private readonly ProductContext _dbContext;
public ProductRepository(ProductContext dbContext)
{
_dbContext = dbContext;
}
public void DeleteProduct(int productId)
{
var product = _dbContext.Products.Find(productId);
_dbContext.Products.Remove(product);
Save();
}
public Product GetProductByID(int productId)
{
return _dbContext.Products.Find(productId);
}
public IEnumerable<Product> GetProducts()
{
return _dbContext.Products.ToList();
}
public void InsertProduct(Product product)
{
_dbContext.Add(product);
Save(); }
public void Save()
{
_dbContext.SaveChanges();
}
public void UpdateProduct(Product product)
{
_dbContext.Entry(product).State = EntityState.Modified;
Save();
}
}
}
يجب أن تحتوي الخدمة المصغرة على نقطة نهاية تحتاج إلى وحدة تحكم والتي تعرض طرق HTTP للعميل كنقاط نهاية لطرق الخدمة.
using Microsoft.AspNetCore.Mvc;
using ProductMicroservice.Models;
using ProductMicroservice.Repository;
using System;
using System.Collections.Generic;
using System.Transactions;
namespace ProductMicroservice.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ProductController : ControllerBase
{
private readonly IProductRepository _productRepository;
public ProductController(IProductRepository productRepository)
{
_productRepository = productRepository;
}
[HttpGet]
public IActionResult Get()
{
var products = _productRepository.GetProducts();
return new OkObjectResult(products);
}
[HttpGet("{id}", Name = "Get")]
public IActionResult Get(int id)
{
var product = _productRepository.GetProductByID(id);
return new OkObjectResult(product);
}
[HttpPost]
public IActionResult Post([FromBody] Product product)
{
using (var scope = new TransactionScope())
{
_productRepository.InsertProduct(product);
scope.Complete();
return CreatedAtAction(nameof(Get), new { id = product.Id }, product);
}
}
[HttpPut]
public IActionResult Put([FromBody] Product product)
{
if (product != null)
{
using (var scope = new TransactionScope())
{
_productRepository.UpdateProduct(product);
scope.Complete();
return new OkResult();
}
}
return new NoContentResult();
}
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
_productRepository.DeleteProduct(id);
return new OkResult();
}
}
}
تسمح لنا عمليات الترحيل بتوفير رمز لتغيير قاعدة البيانات من إصدار إلى آخر.
يمكن تشغيل الخدمة عبر IIS Express ، أي Visual Studio الافتراضي أو عبر حاوية Docker أيضًا.
اختر IIS Express في Visual Studio كما هو موضح أدناه واضغط على F5 أو انقر فوق زر IIS Express نفسه.
سيتم تشغيل التطبيق بمجرد بدء تشغيل صفحة المتصفح. نظرًا لأنه لا يوجد شيء لعرضه ، فسيكون فارغًا ، ولكن يمكن اختبار الخدمة عبر أي عميل اختبار API. هنا يستخدم Postman لاختبار نقاط نهاية الخدمة. احتفظ به مفتوحًا وتشغيل التطبيق.
قم بتثبيت Postman إذا لم يكن موجودًا على الجهاز وقم بتشغيله.
بريد
لاختبار طريقة POST ؛ على سبيل المثال ، قم بإنشاء مورد جديد ، وحدد الطريقة كـ POST في ساعي البريد وقم بتوفير نقطة النهاية ، مثل https: // localhost: 44312 / api / product وفي قسم الجسم ، أضف JSON مشابهًا لامتلاك خصائص نموذج المنتج كما هو موضح أدناه و انقر فوق إرسال.
يتم إرجاع الاستجابة مع معرف المنتج أيضًا.
طريقة "النشر" لوحدة التحكم هي المسؤولة عن إنشاء مورد في قاعدة البيانات وإرسال الرد.
إرجاع السطر CreatedAtAction (nameof (Get) ، جديد {id = product.Id} ، المنتج) ؛ يُرجع موقع المورد الذي تم إنشاؤه والذي يمكن التحقق منه في سمة الموقع في الاستجابة ضمن علامة التبويب "الرؤوس".
قم بإجراء استعلام تحديد في جدول المنتج وسيتم عرض صف مضاف للمنتج الذي تم إنشاؤه حديثًا.
قم بإنشاء منتج آخر بطريقة مماثلة.
احصل على
قم بإجراء طلب GET الآن بنفس العنوان ويتم عرض سجلين كاستجابة نتيجة JSON.
حذف
قم بتنفيذ طلب الحذف عن طريق تحديد DELETE كفعل ومعرف إلحاق كـ 1 (إذا كان المنتج ذو المعرف 1 بحاجة إلى حذفه) واضغط على إرسال.
في قاعدة البيانات ، يتم حذف سجل واحد بالمعرف 1.
وضع
فعل PUT مسؤول عن تحديث المورد. حدد فعل PUT ، وقم بتوفير عنوان API ، وفي قسم النص ، قدم تفاصيل المنتج الذي يحتاج إلى تحديث بتنسيق JSON. على سبيل المثال ، قم بتحديث المنتج بـ Id 2 وقم بتحديث اسمه ووصفه وسعره من Samsung إلى iPhone المحدد. اضغط على إرسال.
تحقق من قاعدة البيانات لرؤية المنتج المحدث.
يمكن أن يتم تشغيل الخدمة عبر أوامر docker ليتم تشغيلها في موجه أوامر docker واستخدام الاستوديو المرئي أيضًا. نظرًا لأننا أضفنا دعم عامل الإرساء ، فمن السهل تشغيل الخدمة في حاوية عامل الإرساء باستخدام الاستوديو المرئي.
هذا يثبت أن الخدمة المصغرة تعمل على نقطتي نهاية وعلى نظامي تشغيل يتم نشرهما محليًا بشكل مستقل.
الخدمة المصغرة هي خدمة مبنية على قدرة عمل محددة ، والتي يمكن نشرها بشكل مستقل وهو ما يسمى السياق المحدود. ركزت هذه المقالة على الخدمات المصغرة على ماهية الخدمات المصغرة ومزاياها على بنية الخدمات المتجانسة. وصفت المقالة بالتفصيل تطوير خدمة مصغرة باستخدام ASP.NET Core وتشغيلها عبر IIS و Docker container. وبالمثل ، يمكن أن تحتوي الخدمة على صور متعددة ويمكن تشغيلها على حاويات متعددة في نفس الوقت.
مصدر المقال الأصلي في https://www.c-sharpcorner.com
#microservice #aspdotnet #dotnet #csharp #docker
1602560783
In this article, we’ll discuss how to use jQuery Ajax for ASP.NET Core MVC CRUD Operations using Bootstrap Modal. With jQuery Ajax, we can make HTTP request to controller action methods without reloading the entire page, like a single page application.
To demonstrate CRUD operations – insert, update, delete and retrieve, the project will be dealing with details of a normal bank transaction. GitHub repository for this demo project : https://bit.ly/33KTJAu.
Sub-topics discussed :
In Visual Studio 2019, Go to File > New > Project (Ctrl + Shift + N).
From new project window, Select Asp.Net Core Web Application_._
Once you provide the project name and location. Select Web Application(Model-View-Controller) and uncheck HTTPS Configuration. Above steps will create a brand new ASP.NET Core MVC project.
Let’s create a database for this application using Entity Framework Core. For that we’ve to install corresponding NuGet Packages. Right click on project from solution explorer, select Manage NuGet Packages_,_ From browse tab, install following 3 packages.
Now let’s define DB model class file – /Models/TransactionModel.cs.
public class TransactionModel
{
[Key]
public int TransactionId { get; set; }
[Column(TypeName ="nvarchar(12)")]
[DisplayName("Account Number")]
[Required(ErrorMessage ="This Field is required.")]
[MaxLength(12,ErrorMessage ="Maximum 12 characters only")]
public string AccountNumber { get; set; }
[Column(TypeName ="nvarchar(100)")]
[DisplayName("Beneficiary Name")]
[Required(ErrorMessage = "This Field is required.")]
public string BeneficiaryName { get; set; }
[Column(TypeName ="nvarchar(100)")]
[DisplayName("Bank Name")]
[Required(ErrorMessage = "This Field is required.")]
public string BankName { get; set; }
[Column(TypeName ="nvarchar(11)")]
[DisplayName("SWIFT Code")]
[Required(ErrorMessage = "This Field is required.")]
[MaxLength(11)]
public string SWIFTCode { get; set; }
[DisplayName("Amount")]
[Required(ErrorMessage = "This Field is required.")]
public int Amount { get; set; }
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime Date { get; set; }
}
C#Copy
Here we’ve defined model properties for the transaction with proper validation. Now let’s define DbContextclass for EF Core.
#asp.net core article #asp.net core #add loading spinner in asp.net core #asp.net core crud without reloading #asp.net core jquery ajax form #asp.net core modal dialog #asp.net core mvc crud using jquery ajax #asp.net core mvc with jquery and ajax #asp.net core popup window #bootstrap modal popup in asp.net core mvc. bootstrap modal popup in asp.net core #delete and viewall in asp.net core #jquery ajax - insert #jquery ajax form post #modal popup dialog in asp.net core #no direct access action method #update #validation in modal popup
1658931609
تعرف على مفهوم هندسة الخدمات المصغرة. تعرف على كيفية إنشاء ونشر واختبار بنية الخدمات المصغرة في .NET و C # باستخدام حاوية Docker.
يصور مصطلح الخدمات المصغرة أسلوب تطوير البرمجيات الذي نما من الاتجاهات المعاصرة إلى إعداد الممارسات التي تهدف إلى زيادة سرعة وكفاءة تطوير وإدارة حلول البرمجيات على نطاق واسع. الخدمات المصغرة هي أكثر حول تطبيق عدد معين من المبادئ والأنماط المعمارية مثل الهندسة المعمارية. تعيش كل خدمة صغيرة بشكل مستقل ، ولكن من ناحية أخرى ، تعتمد جميعها أيضًا على بعضها البعض. يتم نشر جميع الخدمات المصغرة في المشروع في الإنتاج وفقًا لسرعتها الخاصة ، في مكان العمل على السحابة ، بشكل مستقل ، تعيش جنبًا إلى جنب.
في هذه المقالة ، سوف نتعلم مفهوم الخدمات المصغرة وبنيتها وكيفية إنشاء الخدمات المصغرة في .NET و C #. ستتعلم أيضًا خطوات إنشاء الخدمات المصغرة ونشرها واختبارها في .NET باستخدام حاوية عامل إرساء.
تُظهر الصورة التالية من Microsoft Docs نمط بنية الخدمات المصغرة.
هناك العديد من المكونات في بنية الخدمات المصغرة بصرف النظر عن الخدمات المصغرة نفسها.
الإدارة . يحافظ على العقد الخاصة بالخدمة.
مزود الهوية . يدير معلومات الهوية ويوفر خدمات المصادقة داخل شبكة موزعة.
اكتشاف الخدمة . يتتبع الخدمات وعناوين الخدمة ونقاط النهاية.
بوابة API . بمثابة نقطة دخول العميل. نقطة اتصال واحدة من العميل والتي بدورها تعرض ردودًا من الخدمات المصغرة الأساسية وأحيانًا استجابة مجمعة من خدمات مصغرة أساسية متعددة.
CDN . شبكة توصيل المحتوى لخدمة الموارد الثابتة مثل الصفحات ومحتوى الويب في شبكة موزعة
المحتوى الثابت الموارد الثابتة مثل الصفحات ومحتوى الويب
يتم نشر الخدمات المصغرة بشكل مستقل مع قاعدة البيانات الخاصة بها لكل خدمة بحيث تبدو الخدمات المصغرة الأساسية كما هو موضح في الصورة التالية.
التطبيقات المتجانسة هي أكثر من حزمة واحدة كاملة تحتوي على جميع المكونات والخدمات اللازمة ذات الصلة المغلفة في حزمة واحدة.
فيما يلي التمثيل التخطيطي للعمارة المتجانسة كونها حزمة كاملة أو قائمة على الخدمة.
Microservice هي طريقة لإنشاء خدمات صغيرة تعمل كل منها في مساحتها الخاصة ويمكن التواصل عبر الرسائل. هذه خدمات مستقلة تقوم باستدعاء قاعدة البيانات الخاصة بها مباشرة.
فيما يلي تمثيل تخطيطي لبنية الخدمات المصغرة.
في البنية المتجانسة ، تظل قاعدة البيانات كما هي بالنسبة لجميع الوظائف حتى إذا تم اتباع نهج للبنية الموجهة نحو الخدمة ، بينما في الخدمات المصغرة ، سيكون لكل خدمة قاعدة بيانات خاصة بها.
تقوم الحاويات مثل Dockers وغيرها بتقسيم موارد نظام التشغيل ، على سبيل المثال مكدس الشبكة ومساحة العمليات وتسلسل نظام الملفات ومكدس التخزين. يشبه عمال الرصيف إضفاء الطابع الافتراضي على نظام التشغيل. تعرف على المزيد حول عمال الرصيف هنا . افتح عنوان URL هذا وانقر فوق Download from Docker hub. بمجرد التنزيل ، قم بتسجيل الدخول إلى Docker واتبع التعليمات لتثبيت Docker لـ Windows.
سيوضح هذا القسم كيفية إنشاء خدمة مصغرة للمنتج باستخدام ASP.NET Core خطوة بخطوة بمساعدة الصور. سيتم بناء الخدمة باستخدام ASP.NET Core 2.1 و Visual Studio 2017. يأتي Asp.NET Core مدمجًا مع VS 2017. سيكون لهذه الخدمة قاعدة بيانات DBcontext وقاعدة بيانات مع المستودع المعزول بحيث يمكن نشر الخدمة بشكل مستقل.
على الرغم من أن مشروع .NET Core API يحتوي على دعم داخلي لـ EF Core ويتم تنزيل جميع التبعيات ذات الصلة في وقت إنشاء المشروع وتجميعه والتي يمكن العثور عليها ضمن قسم SDK في المشروع كما هو موضح أدناه.
يجب أن يكون Microsoft.EntityFrameworkCore.SqlServer (2.1.1) هو الحزمة داخل حزمة SDK التي تم تنزيلها. إذا لم يكن موجودًا ، فيمكن إضافته صراحةً إلى المشروع عبر حزم Nuget.
هناك حاجة إلى سياق قاعدة البيانات حتى تتمكن النماذج من التفاعل مع قاعدة البيانات.
using Microsoft.EntityFrameworkCore;
using ProductMicroservice.Models;
namespace ProductMicroservice.DBContexts
{
public class ProductContext : DbContext
{
public ProductContext(DbContextOptions<ProductContext> options) : base(options)
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Category>().HasData(
new Category
{
Id = 1,
Name = "Electronics",
Description = "Electronic Items",
},
new Category
{
Id = 2,
Name = "Clothes",
Description = "Dresses",
},
new Category
{
Id = 3,
Name = "Grocery",
Description = "Grocery Items",
}
);
}
}
}
افتح ملف Startup.cs لإضافة موفر قاعدة بيانات خادم SQL لـ EF Core. قم بإضافة خدمات التعليمات البرمجية .AddDbContext <ProductContext> (o => o.UseSqlServer (Configuration.GetConnectionString ("ProductDB"))) ؛ تحت طريقة ConfigureServices. لاحظ أنه في طريقة GetConnectionString ، يتم تمرير اسم مفتاح سلسلة الاتصال التي تمت إضافتها في ملف appsettings.
يعمل المستودع كمكون صغير للخدمة المصغرة التي تغلف طبقة الوصول إلى البيانات وتساعد في استمرارية البيانات وقابلية الاختبار أيضًا.
using Microsoft.EntityFrameworkCore;
using ProductMicroservice.DBContexts;
using ProductMicroservice.Models;
using System;
using System.Collections.Generic;
using System.Linq;
namespace ProductMicroservice.Repository
{
public class ProductRepository: IProductRepository
{
private readonly ProductContext _dbContext;
public ProductRepository(ProductContext dbContext)
{
_dbContext = dbContext;
}
public void DeleteProduct(int productId)
{
var product = _dbContext.Products.Find(productId);
_dbContext.Products.Remove(product);
Save();
}
public Product GetProductByID(int productId)
{
return _dbContext.Products.Find(productId);
}
public IEnumerable<Product> GetProducts()
{
return _dbContext.Products.ToList();
}
public void InsertProduct(Product product)
{
_dbContext.Add(product);
Save(); }
public void Save()
{
_dbContext.SaveChanges();
}
public void UpdateProduct(Product product)
{
_dbContext.Entry(product).State = EntityState.Modified;
Save();
}
}
}
يجب أن تحتوي الخدمة المصغرة على نقطة نهاية تحتاج إلى وحدة تحكم والتي تعرض طرق HTTP للعميل كنقاط نهاية لطرق الخدمة.
using Microsoft.AspNetCore.Mvc;
using ProductMicroservice.Models;
using ProductMicroservice.Repository;
using System;
using System.Collections.Generic;
using System.Transactions;
namespace ProductMicroservice.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ProductController : ControllerBase
{
private readonly IProductRepository _productRepository;
public ProductController(IProductRepository productRepository)
{
_productRepository = productRepository;
}
[HttpGet]
public IActionResult Get()
{
var products = _productRepository.GetProducts();
return new OkObjectResult(products);
}
[HttpGet("{id}", Name = "Get")]
public IActionResult Get(int id)
{
var product = _productRepository.GetProductByID(id);
return new OkObjectResult(product);
}
[HttpPost]
public IActionResult Post([FromBody] Product product)
{
using (var scope = new TransactionScope())
{
_productRepository.InsertProduct(product);
scope.Complete();
return CreatedAtAction(nameof(Get), new { id = product.Id }, product);
}
}
[HttpPut]
public IActionResult Put([FromBody] Product product)
{
if (product != null)
{
using (var scope = new TransactionScope())
{
_productRepository.UpdateProduct(product);
scope.Complete();
return new OkResult();
}
}
return new NoContentResult();
}
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
_productRepository.DeleteProduct(id);
return new OkResult();
}
}
}
تسمح لنا عمليات الترحيل بتوفير رمز لتغيير قاعدة البيانات من إصدار إلى آخر.
يمكن تشغيل الخدمة عبر IIS Express ، أي Visual Studio الافتراضي أو عبر حاوية Docker أيضًا.
اختر IIS Express في Visual Studio كما هو موضح أدناه واضغط على F5 أو انقر فوق زر IIS Express نفسه.
سيتم تشغيل التطبيق بمجرد بدء تشغيل صفحة المتصفح. نظرًا لأنه لا يوجد شيء لعرضه ، فسيكون فارغًا ، ولكن يمكن اختبار الخدمة عبر أي عميل اختبار API. هنا يستخدم Postman لاختبار نقاط نهاية الخدمة. احتفظ به مفتوحًا وتشغيل التطبيق.
قم بتثبيت Postman إذا لم يكن موجودًا على الجهاز وقم بتشغيله.
بريد
لاختبار طريقة POST ؛ على سبيل المثال ، قم بإنشاء مورد جديد ، وحدد الطريقة كـ POST في ساعي البريد وقم بتوفير نقطة النهاية ، مثل https: // localhost: 44312 / api / product وفي قسم الجسم ، أضف JSON مشابهًا لامتلاك خصائص نموذج المنتج كما هو موضح أدناه و انقر فوق إرسال.
يتم إرجاع الاستجابة مع معرف المنتج أيضًا.
طريقة "النشر" لوحدة التحكم هي المسؤولة عن إنشاء مورد في قاعدة البيانات وإرسال الرد.
إرجاع السطر CreatedAtAction (nameof (Get) ، جديد {id = product.Id} ، المنتج) ؛ يُرجع موقع المورد الذي تم إنشاؤه والذي يمكن التحقق منه في سمة الموقع في الاستجابة ضمن علامة التبويب "الرؤوس".
قم بإجراء استعلام تحديد في جدول المنتج وسيتم عرض صف مضاف للمنتج الذي تم إنشاؤه حديثًا.
قم بإنشاء منتج آخر بطريقة مماثلة.
احصل على
قم بإجراء طلب GET الآن بنفس العنوان ويتم عرض سجلين كاستجابة نتيجة JSON.
حذف
قم بتنفيذ طلب الحذف عن طريق تحديد DELETE كفعل ومعرف إلحاق كـ 1 (إذا كان المنتج ذو المعرف 1 بحاجة إلى حذفه) واضغط على إرسال.
في قاعدة البيانات ، يتم حذف سجل واحد بالمعرف 1.
وضع
فعل PUT مسؤول عن تحديث المورد. حدد فعل PUT ، وقم بتوفير عنوان API ، وفي قسم النص ، قدم تفاصيل المنتج الذي يحتاج إلى تحديث بتنسيق JSON. على سبيل المثال ، قم بتحديث المنتج بـ Id 2 وقم بتحديث اسمه ووصفه وسعره من Samsung إلى iPhone المحدد. اضغط على إرسال.
تحقق من قاعدة البيانات لرؤية المنتج المحدث.
يمكن أن يتم تشغيل الخدمة عبر أوامر docker ليتم تشغيلها في موجه أوامر docker واستخدام الاستوديو المرئي أيضًا. نظرًا لأننا أضفنا دعم عامل الإرساء ، فمن السهل تشغيل الخدمة في حاوية عامل الإرساء باستخدام الاستوديو المرئي.
هذا يثبت أن الخدمة المصغرة تعمل على نقطتي نهاية وعلى نظامي تشغيل يتم نشرهما محليًا بشكل مستقل.
الخدمة المصغرة هي خدمة مبنية على قدرة عمل محددة ، والتي يمكن نشرها بشكل مستقل وهو ما يسمى السياق المحدود. ركزت هذه المقالة على الخدمات المصغرة على ماهية الخدمات المصغرة ومزاياها على بنية الخدمات المتجانسة. وصفت المقالة بالتفصيل تطوير خدمة مصغرة باستخدام ASP.NET Core وتشغيلها عبر IIS و Docker container. وبالمثل ، يمكن أن تحتوي الخدمة على صور متعددة ويمكن تشغيلها على حاويات متعددة في نفس الوقت.
مصدر المقال الأصلي في https://www.c-sharpcorner.com
#microservice #aspdotnet #dotnet #csharp #docker
1618666860
This year’s .NET Conf was the largest one yet, with over 80 live sessions across three days that were co-organized and presented by the .NET community and Microsoft. On top of all of that, it also marked the release of .NET 5.0 that brings a full set of new capabilities, performance gains, and new languages features for developers to create amazing apps. If you missed this year’s .NET Conf live stream, don’t worry because we have you covered!
#.net #.net core #asp.net #c# #.net conf #.net foundation #community #demos
1597368540
Docker is an open platform that allows use package, develop, run, and ship software applications in different environments using containers.
In this course We will learn How to Write Dockerfiles, Working with the Docker Toolbox, How to Work with the Docker Machine, How to Use Docker Compose to fire up multiple containers, How to Work with Docker Kinematic, Push images to Docker Hub, Pull images from a Docker Registery, Push stacks of servers to Docker Hub.
How to install Docker on Mac.
#docker tutorial #c++ #docker container #docker #docker hub #devopstools
1618348620
Adding Docker support to a project in Rider is now easier – you can generate the Dockerfile while creating a new project. Just select Docker Support in the New project dialog. If you want to add a Dockerfile to an existing project, use** Add | Docker Support** in the context menu for a project in the Solution Explorer tool window.
Rider can also run Dockerfiles generated by Visual Studio with no additional changes required from you.
#net-tools #releases #debugger #c# #c++ #c