اشتراک‌ها
بررسی معماری Vertical Slice در ASP.NET Core

In this article, we are going to learn about Vertical Slice Architecture in ASP.NET Core and the benefits it provides to make our code more maintainable. We’re also going to learn how it differs from traditional architecture and its advantages over the traditional approach. 

بررسی معماری Vertical Slice در ASP.NET Core
مطالب
آموزش زبان Rust - قسمت 13 - Enum
Enums، مخفف enumerations و یک ساختار داده قدرتمند در زبان برنامه نویسی Rust است. Enum‌های Rust، بسیار متنوع‌تر از آنهایی هستند که در بسیاری از زبان‌های برنامه نویسی دیگر یافت می‌شوند و به شما این امکان را می‌دهند که داده‌های پیچیده را با تطبیق الگو و مدیریت خطا، مدل سازی کنید. در این مقاله به اصول اولیه‌ی enums در Rust، موارد استفاده‌ی از آنها و چند مثال کاربردی خواهیم پرداخت.

تعریف Enums در Rust

Enum‌ها در Rust، با استفاده از کلمه‌ی کلیدی enum و به دنبال آن، نام enumeration تعریف می‌شوند. هر enum می‌تواند صفر یا بیشتر، مقادیر مرتبط با انواع داده‌های مختلف را داشته باشد. در اینجا یک مثال ساده آورده شده‌است:
enum Direction {
    North,
    East,
    South,
    West,
}
Rust به enum‌ها اجازه می‌دهد تا داده‌های مرتبطی را داشته باشند و آنها را به ابزاری قدرتمند، برای مدل سازی ساختارهای داده پیچیده، تبدیل می‌کند. در اینجا یک مثال از یک enum که اشکال مختلفی را نشان می‌دهد، مشاهده می‌کنید:
enum Shape {
    Circle(f64),
    Rectangle(f64, f64),
    Square(f64),
}
در این مثال، نوع Circle دارای یک مقدار ورودی برای شعاع است؛ در حالیکه نوع Rectangle دارای دو مقدار ورودی است که نشان دهنده‌ی عرض و ارتفاع است. نوع Square دارای یک مقدار ورودی برای طول ضلع خود است.


Pattern Matching در Enums

** Pattern Matching  ** در ادامه مطالب به صورت کامل صحبت خواهد شد .

قابلیت Pattern Matching به ویژه هنگام کار با enums مفید است. می‌توانید از کلمه‌ی کلیدی match برای destructure  و مطابقت با انواع enum استفاده کنید که به شما امکان می‌دهد، کد مختصر و خوانایی را بنویسید. در اینجا یک مثال، با استفاده از Shape enum آورده شده‌است:
fn area(shape: Shape) -> f64 {
    match shape {
        Shape::Circle(radius) => std::f64::consts::PI * radius * radius,
        Shape::Rectangle(width, height) => width * height,
        Shape::Square(side) => side * side,
    }
}

 
استفاده از Enum در Error Handling

Enum‌ها معمولاً در Rust، برای رسیدگی به خطا استفاده می‌شوند؛ به لطف Result ارائه شده توسط کتابخانه‌ی استاندارد. Enum مربوط به Result، دو نوع را دارد: Ok برای نتایج موفق و Err برای خطاها. در اینجا نمونه‌ای از استفاده‌ی از Result را در تابعی که داده‌ها را از یک فایل می‌خواند، مشاهده می‌کنید:
**Result ** در ادامه‌ی مطالب به صورت کامل صحبت خواهد شد. در اینجا هدف فقط نشان دادن کاربردهای Enum است:
use std::io::Read;
use std::fs::File;
use std::io;

fn read_file_contents(file_path: &str) -> Result<String, io::Error> {
    let mut file = File::open(file_path)?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    Ok(contents)
}


Enums و Optionality

یکی دیگر از موارد استفاده‌ی رایج برای enums در Rust، نمایش مقادیر اختیاری است که توسط Option enum ارائه شده‌ی توسط کتابخانه‌ی استاندارد، تسهیل می‌شود. Option enum دو نوع دارد: برخی برای مقادیر فعلی و None برای مقادیر غایب. در اینجا مثالی از استفاده‌ی از Option enum، برای پیاده سازی یک پشته‌ی ساده آورده شده‌است:
**Option ** در ادامه مطالب به صورت کامل صحبت خواهد شد. در اینجا هدف فقط نشان دادن کاربردهای Enum است:
struct Stack<T> {
    elements: Vec<T>,
}

impl<T> Stack<T> {
    fn new() -> Self {
        Stack { elements: Vec::new() }
    }

    fn push(&mut self, item: T) {
        self.elements.push(item);
    }

    fn pop(&mut self) -> Option<T> {
        self.elements.pop()
    }
}
Enums در Rust، یک ویژگی قدرتمند است که به شما امکان می‌دهد ساختارهای داده‌ی پیچیده را مدل سازی کنید و به راحتی خطاها را مدیریت کنید. با استفاده از قدرت enums،  Pattern Matching  ، و فهرست‌های داخلی کتابخانه‌ی استاندارد مانند Result و Option میتوانید از قدرت Enum‌ها استفاده کنید. 
اشتراک‌ها
شرکت در نظرسنجی رسمی Entity Framework Core
The team behind Entity Framework Core thanks you for your interest in our product. I am a Senior Program Manager for .NET data at Microsoft and work closely with the EF Core team. As part of our ongoing effort to improve the experience of working with data in .NET, we developed a short survey to learn more about how you work with data. It should only take a few minutes of your time. 
شرکت در نظرسنجی رسمی Entity Framework Core
اشتراک‌ها
سری 8 قسمتی NET MAUI. برای تازه‌کارها

.NET MAUI for Beginners
8 videos
.NET Multi-platform App UI (.NET MAUI) is a framework for building modern, multi-platform, natively compiled iOS, Android, macOS, and Windows apps using C# and XAML in a single codebase. In this video series you will learn how to get started with .NET MAUI, C#, and Visual Studio to build your very first cross-platform desktop and mobile app. 

سری 8 قسمتی NET MAUI. برای تازه‌کارها
اشتراک‌ها
راهنمای نسبتا" کامل اعتبار بخشی به درخواستهای ارسالی به ASP.NET Core web API با استفاده از IdentityServer4 در سمت کلاینت

This is a guide on how to make requests to a protected resource using Client Credentials with the IdentityServer4.Contrib.HttpClientService nuget package. The library is actually an HttpClient service that makes it easy to make authenticated and resilient HTTP requests to .protected by IdentityServer4 resource

راهنمای نسبتا" کامل اعتبار بخشی به درخواستهای ارسالی به ASP.NET Core web API با استفاده از IdentityServer4 در سمت کلاینت
اشتراک‌ها
دوره آموزشی TypeScript در سایت EDX
You will learn what TypeScript is and how it can add value to your JavaScript Development
You will learn how to write TypeScript code and how to use the TypeScript API
You will learn how to use TypeScript to manage your JavaScript code base 
دوره آموزشی TypeScript در سایت EDX
اشتراک‌ها
زبان برنامه نویسی Loci

Loci is a multi-paradigm systems programming language. Or, to describe it in a slightly more intuitive way, it’s very similar to, and a close competitor of, C++. 

زبان برنامه نویسی Loci