<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های مرتضی احمدوند</title>
        <link>https://virgool.io/feed/@Morteza_Ahmadvand71</link>
        <description>برنامه نویس و توسعه دهنده وب، مدرس دوره های برنامه نویسی</description>
        <language>fa</language>
        <pubDate>2026-06-16 13:18:01</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2249098/avatar/6gBbE4.jpg?height=120&amp;width=120</url>
            <title>مرتضی احمدوند</title>
            <link>https://virgool.io/@Morteza_Ahmadvand71</link>
        </image>

                    <item>
                <title>معماری تمیز (Clean Architecture):</title>
                <link>https://virgool.io/@Morteza_Ahmadvand71/%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D8%AA%D9%85%DB%8C%D8%B2-clean-architecture-eypa4io2s7mu</link>
                <description>شکل ساختاری معماری تمیز زمانی که شروع به توسعه یک وب اپلیکیشن می‌کنید شاید اولین سوالی که از خودتان بپرسید این باشد که با چه معماری شروع به کار بکنم؟ انتخاب یک معماری درست تعیین کننده تمام چیزی است که مربوط به وب اپلیکیشن شما خواهد بود: کارایی، تعاملات المان‌ها و... . برای آنکه یک پروژه درست و کاربردی داشته باشید شما نیاز دارید که در ارتباط با این مسئله به خوبی آگاهی داشته باشید.یک معماری مناسب برای توسعه وب اپلیکیشن‌ها شامل موارد زیر است:امنیت بالارفع نیازهای کسب و کارتجربه کاربری سریع و بهینهپشتیبانی از تست‌ها و آنالیزهای مختلفوجود خلاقیت بصریپشتیبانی از قابلیت خودکارسازیمقیاس‌پذیری و مقیاس‌دهی آسانخود تنظیم‌گریدر اینجا می خواهیم با لایه های معماری clean یا همان Clean Architecture آشنا شویم.مزیت ها:مستقل از فریم ورکقابلیت تست پذیری بالامستقل از UIمستقل از دیتابیسمعماری تمیز پروژه ما را به 5 لایه اصلی تقسیم می کند:DomainApplicationPersistenceInfrastructurePersentationلایه Domain:این لایه درونی ترین لایه پروژه می باشد و در مرکز هسته نرم افزار قرار دارد. تعاریف دیتابیس و ساختار دیتابیس و جداول در این لایه قرار می گیرد از جمله:در این لایه Entity ها، Value Object ها، enum ها، Logic ها و Exception ها پیاده سازی می شوند.لایه Application:در این لایه قواعد دیتابیس و پروژه، سرویس های مورد نیاز،اعتبارسنجی داده ها و عملیات ذخیره و بازیابی اطلاعات انجام می شود.در این لایه: Interface ها، business logic و Command Query ها، Validator ها و Exeptionهای لایه اپلیکیشن یا business لایه Persistence:در این لایه DbContext را پیاده سازی میکنیم و عملیات ماگریشن نیز در این لایه انجام می شود، کانفیگ هایی که برای entity ها توسط ef انجام می شود در این بخش پیاده سازی می کنیم، مقدار دهی اولیه به انتیتی ها نیز در این لایه انجام میگیرد.لایه Infrastructure:در این لایه کارهایی که خارج از business هست را انجام می دهیم مثلا ارسال ایمیل یا پیامک یا Api های که از بیرون تهیه می کنیم ، کار با فایل سیستم ها در این لایه پیاده سازی می شوند.لایه Presentation:همان طور که از نام این لایه مشخص است در این لایه UI پروژه و دستورات اصلی برنامه قرار می گیرد. در واقع پروژه اصلی شما در این لایه قرار دارد.در این لایه خروجی اصلی برنامه قرار میگیرد مثلا یک خروجی وب Mvcدر این مقاله سعی کردم به ساده ترین صورت معماری تمیز رو برای شما دوستان توضیح دهم تا اگر مشکلی در لایه های این معماری دارید برطرف شود.اگر سوالی بود میتونید در نظرات به اشتراک بگذارید تا پاسخ داده شود. </description>
                <category>مرتضی احمدوند</category>
                <author>مرتضی احمدوند</author>
                <pubDate>Sat, 06 May 2023 10:29:26 +0330</pubDate>
            </item>
                    <item>
                <title>Middleware ها در Asp .Net Core</title>
                <link>https://virgool.io/@Morteza_Ahmadvand71/middleware-%D9%87%D8%A7-%D8%AF%D8%B1-asp-net-core-i0pbozknfkxg</link>
                <description>زمانیکه کاربر از طریق مرورگر خود درخواستی را به سمت سرور می فرستد، این درخواست از طریق پروتکل Http به سمت سرور مورد نظر رفته و اطلاعات از طریق همین پروتکل Http به کاربر برگردانده می شود.هر درخواست Http دارای یک header می باشد که اطلاعاتی را درون خود نگه میدارد.پس زمانیکه یک درخواست http به سایت ما می رسد، از لحظه ای که این درخواست وارد سرور ما می شود تا موقعی که این درخواست پردازش می شود و به مرورگر کاربر بازگردانده می شود بایستی یک مسیر خاص را طی نماید که به این مسیر خط لوله یا PipeLine می گویند.در زمانیکه این درخواست از خط لوله می گذرد یکسری عملیات روی آن انجام می شود. همچنین یکسری اطلاعات از این درخواست استخراج شده و یا اطلاعاتی به آن افزوده می شود. این عملیات در طول گذر درخواست از خط لوله توسط middleware ها یا میان افزارها انجام می شود.در یک پروژه از نوع Asp.net Core 3.1 کلاسی به نام Startup.cs وجود دارد. در این کلاس متدی به نام Configure وجود دارد. در این متد ما می توانیم میان افزارهای خود را تعریف کنیم.مثال بالا که متد Configure را نمایش می دهد دارای میان افزارهای مختلفی می باشد. یکی از این میان افزارها app.UseStaticFiles می باشد که در مثال بالا مشخص شده است. این میان افزار به درخواست های رسیده و به سرور اجازه دسترسی به فایلهای static پروژه مانند تصاویر و فایلهای css و js را می دهد. در نسخه های قبلی Asp که میان افزارها وجود نداشت تمامی این درخواست ها توسط IIS مدیریت می شد.مشکلی که وجود داشت این بود که اگر مشکلی برای IIS به وجود می امد یا هنگ می کرد دیگر قادر به مدیریت هیچ وظیفه ای نبود. اما توسط میان افزارها حتی اگر IIS به مشکل برخورد کند باز هم بسیاری از وظایف مانند همین نمایش فایلهای ثابت پروژه به خوبی انجام می شود.در .Net 6 به بعد دیگر خبری از کلاس Startup.cs نیست و این کلاس با Program.cs ترکیب شده است.varbuilder = WebApplication.CreateBuilder(args);varapp = builder.Build();app.UseStaticFiles();به صورت بالا نوشته می شود.نکته مهم: ترتیب نوشتن این Middleware ها مهم می باشد.  به طور مثال برای اهراز هویت یا همان Identity ما دو Middleware را باید اضافه کنیم که ترتیب این دو مهم می باشد که کدام را اول بنویسیم.app.UseAuthentication();app.UseAuthorization();چند نمونه از Middleware های پرکاربرد:</description>
                <category>مرتضی احمدوند</category>
                <author>مرتضی احمدوند</author>
                <pubDate>Tue, 02 May 2023 14:45:20 +0330</pubDate>
            </item>
            </channel>
</rss>