۳۰ آذر ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

نحوه ایجاد سرویس های SOAP در ASP.NET Core

از SoapCore برای ایجاد خدمات SOAP در ASP.NET Core و پشتیبانی از تبادل داده با سایر سیستم ها استفاده کنید.

از SoapCore برای ایجاد خدمات SOAP در ASP.NET Core و پشتیبانی از تبادل داده با سایر سیستم ها استفاده کنید.

سرویس هایی که شامل برنامه های کاربردی توزیع شده هستند باید برای تبادل داده یا اطلاعات با یکدیگر ارتباط برقرار کنند. شما به یک قالب داده مشترک برای این ارتباطات نیاز دارید، که در صورتی که برنامه های کاربردی توزیع شده شما از پلتفرم های ناهمگن استفاده کنند، گزینه ها را محدود می کند. پروتکل های قبلی مانند DCOM، RPC، و IIOP به محیط های همگن محدود شده بودند.

برای محیط‌های ناهمگن، به یک پروتکل ارتباطی نیاز داریم که در پلتفرم‌های متفاوت پشتیبانی شود. اینجاست که SOAP (پروتکل دسترسی به شیء ساده) وارد می شود.

SOAP یک پروتکل سبک وزن است که از XML برای تسهیل تبادل داده بین سیستم ها استفاده می کند. با SOAP، اشیاء توسعه یافته بر روی پلتفرم های مختلف و در زبان های برنامه نویسی مختلف می توانند به طور یکپارچه با هم ارتباط برقرار کنند. بنابراین SOAP به ما این امکان را می دهد که با یکپارچه سازی خدمات از سیستم های مختلف به عنوان اجزا، سیستم های اطلاعاتی پیچیده بسازیم.

این مقاله SOAP را معرفی می‌کند و نشان می‌دهد که چگونه می‌توانید یک سرویس ساده SOAP را در یک برنامه ASP.NET Core پیاده‌سازی کنید. برای انجام این کار، از SoapCore، یک بسته میان‌افزار SOAP برای ASP.NET Core استفاده خواهیم کرد.

برای استفاده از نمونه کدهای ارائه شده در این مقاله، باید Visual Studio 2022 را در سیستم خود نصب کنید. اگر قبلاً نسخه‌ای ندارید، می‌توانید Visual Studio 2022 را از اینجا بارگیری کنید.

یک پروژه ASP.NET Core Web API در Visual Studio 2022 ایجاد کنید

برای ایجاد یک پروژه ASP.NET Core 7 Web API در Visual Studio 2022، مراحل ذکر شده در زیر را دنبال کنید.

  1. Visual Studio 2022 IDE را راه اندازی کنید.
  2. روی “ایجاد پروژه جدید” کلیک کنید.
  3. در پنجره “ایجاد پروژه جدید”، “ASP.NET Core Web API” را از لیست الگوهای نمایش داده شده انتخاب کنید.
  4. بعدی را کلیک کنید.
  5. در پنجره “پیکربندی پروژه جدید خود”، نام و مکان پروژه جدید را مشخص کنید.
  6. به صورت اختیاری، بسته به تنظیمات برگزیده خود، کادر انتخاب «قرار دادن راه حل و پروژه در یک فهرست راهنمای» را علامت بزنید.
  7. بعدی را کلیک کنید.
  8. در پنجره «اطلاعات اضافی» که در ادامه نشان داده شده است، کادر «استفاده از کنترل‌کننده‌ها (برای استفاده از حداقل API‌ها علامت آن را بردارید» علامت بزنید. ما در این پروژه از حداقل API استفاده نخواهیم کرد.
  9. در جای دیگری از پنجره «اطلاعات اضافی»، «نوع احراز هویت» را روی «هیچ» (پیش‌فرض) بگذارید و مطمئن شوید که کادرهای «فعال کردن پشتیبانی از API باز کردن»، «پیکربندی برای HTTPS» و «فعال کردن داکر» را انتخاب کنید. ” کنترل نشده باقی بماند. ما در اینجا از هیچ یک از این ویژگی ها استفاده نخواهیم کرد.
  10. روی ایجاد کلیک کنید.
چگونه یک پلتفرم توسعه دهنده داخلی بسازیم، از کسانی که این کار را انجام داده اند

ما از این پروژه ASP.NET Core Web API برای کار با سرویس‌های SOAP در بخش‌های زیر استفاده خواهیم کرد.

بسته SoapCore NuGet را نصب کنید

بعد بسته SoapCore NuGet را به پروژه Web API که در ویژوال استودیو ایجاد کردید اضافه کنید. برای انجام این کار، پروژه را در پنجره Solution Explorer انتخاب کنید و کلیک راست کرده و “Manage NuGet Packages” را انتخاب کنید. در پنجره NuGet Package Manager، بسته SoapCore را جستجو کرده و آن را نصب کنید.

از طرف دیگر، می‌توانید بسته SoapCore را از طریق کنسول NuGet Package Manager با وارد کردن خط نشان داده شده در زیر نصب کنید.

PM> Install-Package SoapCore

گزینه سوم این است که بسته SoapCore را از طریق dotnet CLI با استفاده از دستور زیر نصب کنید.

dotnet add package SoapCore

یک قرارداد داده در ASP.NET Core ایجاد کنید

ابتدا، اجازه دهید قرارداد داده را تعریف کنیم. در یک برنامه کاربردی توزیع شده، قرارداد داده نقش مهمی در حصول اطمینان از سازگاری و سازگاری داده های مبادله شده بین سیستم های مختلف با تعریف ساختار و قالب داده های مبادله شده ایفا می کند. قراردادهای داده علاوه بر انواع پایه مانند رشته ها، اعداد و بولی ها، از انواع ترکیبی مانند کلاس ها و ساختارها و همچنین انواع مجموعه پشتیبانی می کنند.

نحوه کار با نمایندگان در سی شارپ

در قرارداد داده، ویژگی‌ها یا فیلدهای هر نوع داده به همراه انواع داده‌ها، نام‌ها و محدودیت‌ها یا قوانین اعتبارسنجی مربوطه مشخص می‌شوند. این به فعال کردن قابلیت همکاری بین کلاینت‌ها و سرویس‌های پیاده‌سازی شده در زبان‌ها یا پلتفرم‌های برنامه‌نویسی مختلف کمک می‌کند.

در سی شارپ، می‌توانید از ویژگی [DataContract] برای تعریف قرارداد داده استفاده کنید. یک فایل جدید به نام Author.cs ایجاد کنید و کد زیر را برای تعریف قرارداد داده وارد کنید.

using System.Runtime.Serialization;
namespace SoapCore_Demo
{
    [DataContract]
    public class Author
    {
        [DataMember]
        public int Id { get; set; }
        [DataMember]
        public string FirstName { get; set; }
        [DataMember]
        public string LastName { get; set; }
        [DataMember]
        public string Address { get; set; }
    }
}

یک قرارداد سرویس در ASP.NET Core ایجاد کنید

قرارداد خدمات بخشی اساسی از یک معماری سرویس گرا (SOA) است و رابط و رفتارهای ارائه شده توسط یک سرویس را تعریف می کند. قراردادهای خدمات با تسهیل ارتباط شفاف و کارآمد بین ارائه دهندگان خدمات و مشتریان، نقش مهمی در معماری های سرویس گرا ایفا می کنند. این قراردادها توافق متقابل بین هر دو طرف را تضمین می‌کند و قابلیت همکاری و تعامل مؤثر را ارتقا می‌دهد.

یک قرارداد خدمات معمولاً دارای دو بخش اصلی است: رابط سرویس (توضیحات سرویس) و هر ابرداده مرتبطی که سرویس را توصیف می‌کند، مانند قالب‌های پیام، الزامات امنیتی، و رفتار سرویس. قراردادهای سرویس با استفاده از ویژگی ServiceContract در سی شارپ تعریف می شوند. ویژگی [ServiceContract] در سی شارپ برای تعیین یک رابط یا کلاس به عنوان قرارداد خدمات استفاده می‌شود.

Node.js 18 پشتیبانی OpenSSL را به روز می کند، واکشی API را فعال می کند

فایل .cs دیگری به نام AuthorServiceContract.cs ایجاد کنید و کد زیر را در آنجا وارد کنید.

using System.Diagnostics;
using System.ServiceModel;
using System.Xml.Linq;
namespace SoapCore_Demo
{
    [ServiceContract]
    public interface IAuthorService
    {
        [OperationContract]
        void MySoapMethod(XElement xml);
    }
    public class AuthorService : IAuthorService
    {
        public void MySoapMethod(XElement xml)
        {
            Trace.WriteLine(xml.ToString());
        }
    }
}

رابط IAuthorService با ویژگی [ServiceContract] علامت گذاری شده است که در مثال بالا یک قرارداد خدمات را تعریف می کند. متد MySoapMethod() با ویژگی [OperationContract] حاشیه نویسی شده است، که آن را به عنوان عملیاتی که مشتریان می توانند برای تعامل با سرویس فراخوانی کنند، علامت گذاری می کند.

یک سرویس SOAP را در ASP.NET Core ثبت کنید

برای ثبت سرویس SOAP، ابتدا باید سرویس را با قرار دادن قطعه کد زیر در فایل Program.cs به ظرف اضافه کنید.

builder.Services.AddSingleton<IAuthorService, AuthorService>();

سپس باید خط لوله درخواست HTTP را برای نقطه پایانی SOAP با استفاده از خط کد زیر پیکربندی کنید.

app.UseSoapEndpoint<IAuthorService>("/Service.asmx", new SoapEncoderOptions());

در اینجا کد منبع کامل فایل Program.cs برای مرجع شما آمده است.

using SoapCore;
using SoapCore_Demo;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddSingleton<IAuthorService, AuthorService>();
builder.Services.AddControllers();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseSoapEndpoint<IAuthorService>("/Service.asmx", new SoapEncoderOptions());
app.UseAuthorization();
app.MapControllers();
app.Run();

سرویس SOAP را اجرا کنید

اکنون، برنامه را اجرا کنید و نقطه پایانی زیر را مرور کنید تا WSDL (زبان شرح خدمات وب) سرویس SOAP ایجاد شده را همانطور که در شکل ۱ نشان داده شده است مشاهده کنید.

http://localhost:5210/Service.asmx

soap wsdl aspnet core v2

شکل ۱: WSDL سرویس SOAP ما.

و ما آن را داریم—یک سرویس SOAP در ASP.NET Core. توجه داشته باشید که می‌توانید با استفاده از ابزار مرجع خدمات وب WCF در Visual Studio IDE شما. این ابزار به عنوان یک برنامه افزودنی سرویس ویژوال استودیو در دسترس است و می تواند برای ایجاد یک سرویس Windows Communication Foundation (WCF) بر اساس SOAP در یک برنامه NET Core استفاده شود.