<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های CodeCell</title>
        <link>https://virgool.io/feed/@codecell</link>
        <description>کدسل یک پلتفرم آموزشی در حوزه برنامه نویسی و طراحی وب است.هدف کدسل بالا بردن سطح علمی علاقه مندان به این حوزه است. https://codecell.ir</description>
        <language>fa</language>
        <pubDate>2026-04-15 04:34:49</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/26965/avatar/gMWXUc.png?height=120&amp;width=120</url>
            <title>CodeCell</title>
            <link>https://virgool.io/@codecell</link>
        </image>

                    <item>
                <title>آموزش جامع .NET MAUI</title>
                <link>https://virgool.io/@codecell/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D8%A7%D9%85%D8%B9-net-maui-n0bh7hp4vfys</link>
                <description>آموزش .NET MAUI.NET MAUI چیست؟NET MAUI یک چارچوب مدرن و منبع باز است که توسط مایکروسافت توسعه یافته است. این برنامه برای ساده سازی فرآیند ساخت اپلیکیشن های موبایل و دسکتاپ چند پلتفرمی با استفاده از اکوسیستم دات نت طراحی شده است. NET MAUI تکامل یافته Xamarin.Forms که یک چارچوب محبوب برای ساخت برنامه های موبایل با C# و .NET بود می باشد.چرا توسعه دهندگان دات نت باید یادگیری NET MAUI را در برنامه خود قرار دهند:.NET MAUI یک پلتفرم مدرن و بسیار کارامد است که یادگیری ان برای هر توسعه دهنده .NET امری ضروری است. دلایل مختلفی برای این که توسعه دهندگان دات نت باید یادگیری NET MAUI را در برنامه خود قرار دهند وجود دارد:توسعه چند پلتفرمی: .NET MAUI  به شما امکان می دهد برنامه هایی ایجاد کنید که بر روی چندین پلتفرم از جمله  Windows، macOS، iOS، Android  و Linux اجرا شوند. توسعه‌دهندگان می‌توانند با یک پایگاه کد واحد برنامه‌هایی بسازند که تجربه کاربری ثابتی در دستگاه‌های مختلف داشته باشند.مدل توسعه یکپارچه: .NET MAUI  یک سطح API یکپارچه برای ایجاد رابط های کاربر، دسترسی به ویژگی های دستگاه و کار با داده ها فراهم می کند. این بدان معناست که توسعه دهندگان می توانند یک بار کد بنویسند و از آن در چندین پلتفرم استفاده کنند و نیاز به کدهای مخصوص پلتفرم را کاهش دهند.توسعه رابط کاربری مبتنی بر XAML: در NET MAUI  از XAML برای تعریف رابط کاربری استفاده می کند. XAML یک زبان اعلامی است که به شما امکان می دهد طراحی UI را از منطق برنامه جدا کنید و ایجاد رابط های بصری جذاب و پاسخگو را آسان تر می کند.عملکرد بومی: NET MAUI از قابلیت‌های بومی هر پلتفرم استفاده می‌کند و در نتیجه برنامه‌هایی با کارایی بالا ایجاد می‌کند. این امر به توسعه دهندگان اجازه می دهد تا به API های مخصوص پلتفرم دسترسی داشته باشند و از کنترل های UI بومی استفاده کنند و اطمینان حاصل شود که برنامه در هر دستگاه بومی به نظر می رسد و همان احساس بومی بودن را منتقل می کند.ادغام با اکوسیستم دات نت: به عنوان بخشی از اکوسیستم دات نت، NET MAUI  به خوبی با سایر فناوری ها و ابزارهای مایکروسافت ادغام می شود. توسعه دهندگان می توانند از دانش موجود خود در C#، .NET و Visual Studio استفاده کنند و انتقال به .NET MAUI را آسان تر کنند.انجمن و پشتیبانی: .NET MAUI  از یک جامعه پر جنب و جوش و رو به رشد توسعه دهندگان استفاده می کند. مایکروسافت به طور فعال از چارچوب پشتیبانی می کند و به روز رسانی های منظم، اسناد و نمونه کدهایی را ارائه می دهد. ماهیت جامعه محور NET MAUI  دسترسی به طیف گسترده ای از منابع، آموزش ها و کتابخانه های شخص ثالث را تضمین می کند.آینده نگری: با افزایش توسعه موبایل و چند پلتفرمی، یادگیری .NET MAUI به توسعه دهندگان این امکان را می دهد که مرتبط باقی بمانند و با روندهای صنعت همراه باشند. آن‌ها را قادر می‌سازد تا برنامه‌هایی بسازند که طیف وسیعی از دستگاه‌ها و پلتفرم‌ها را هدف قرار می‌دهند و تضمین می‌کند که مهارت‌های آنها همچنان مورد تقاضا باقی می‌ماند.مقایسه Xamarin با .NET MAUINET MAUI تکامل یافته ی Xamarin.Forms است. برخی از مزایا و تفاوت های MAUI نسبت به Xamarin در ادامه آورده شده است:پروژه واحد برای سیستم عامل های مختلفدر .NET MAUI می توان همه پلتفرم ها را در یک پروژه مدیریت کرد. این بدان معناست که برای هر پلتفرم هدف، پروژه های متعددی وجود نخواهد داشت. همانطور که می دانید Xamarin از پروژه های جداگانه برای هر پلتفرم استفاده می کند. در MAUI، فایل های منابع مشترک در یک پروژه واحد قرار دارند (یک مانیفست برنامه واحد که عنوان، شناسه و نسخه برنامه را مشخص می کند). یک نقطه ورود اپلیکیشن تک پلتفرمی توسعه را برای شما سریع تر می کند.API های گرافیکیدر زامارین API های مستقیمی برای رسیدگی به نیازمندی های طراحی وجود ندارد. شما باید این کار را در سمت بومی با استفاده از Render انجام دهید. اما در MAUI طراحی به صورت Abstract است. عملکرد گرافیکی کراس پلتفرم در .NET MAUI یک کانواس برای طراحی و رسم اشکال فراهم می کند.پشتیبانی از  NET7NET MAUI در NET7 ادغام شده است، از طرف دیگر در  Xamarin.Forms از NET Core 3.1 استفاده شده است. به دلیل ادغام NET7، می توانید از ویژگی های جدید .NET7 و C#11 در NET MAUI استفاده کنید.Slim renderer هادر برنامه Xamarin ما از رندرهای سفارشی استفاده می کردیم. در MAUI هیچ رندر سفارشی وجود ندارد و می توانیم از Slim Renderer ها استفاده کنیم. انجام این کار برنامه شما را سبک وزن می کند و تجربه توسعه را ساده می کند.یک مکان برای مدیریت تمام asset هادر MAUI می توانید منابعی مانند فونت ها، تصاویر، صفحه نمایش اسپلش، CSS یا raw asset ها را از یک مکان مدیریت کنید. اما در Xamarin.Forms چندین پروژه برای آن ها وجود دارد.Multi-Targeting برای سازماندهی کدهای پلتفرم خاصیک پروژه MAUI دات نت حاوی یک پوشه Platforms است که هر پوشه در آن نشان دهنده یک پلتفرم پشتیبانی شده متفاوت است. بنابراین می توانید به راحتی کدهای خاص پلتفرم مختلف را مدیریت کنید.پشتیبانی از الگوی  Model View Update (MVU)همانطور که می دانید Xamarin.Forms از الگوهای Model-View-Viewmodel و ReactiveUI پشتیبانی می کند. علاوه بر این موارد، .NET MAUI از الگوهای توسعه Model-View-Update و Blazor پشتیبانی می کند. این الگو راه واحدی را برای ساخت فرانت‌اندهای بومی کراس پلتفرم از یک پایه کد ارائه می‌کند.پشتیبانی از Blazorهمانطور که می دانیم Blazor یکی از تطبیقی ​​ترین مدل های برنامه نویسی برای ساخت اپلیکیشن های تحت وب است. در .NET MAUI میتوان از ویژگی ها و امکانات Blazor بهره برد.یکپارچه سازی کتابخانه هاNET MAUI با یکپارچه سازی کتابخانه های مهم ارائه می شود. این امر چندین مزیت را با ادغام کتابخانه Xamarin.Essentials در NET MAUI فراهم می کند تا بتوانید به راحتی از قابلیت های دستگاه مانند حسگرها، عکس ها، مخاطبین و سایر خدماتی که به طور منظم استفاده می کنید مانند احراز هویت و ذخیره سازی ایمن استفاده کنید.پشتیبانی کامل از hot reloadدر .NET MAUI می توانید کد منبع مدیریت شده و XAML خود را در حین اجرای برنامه تغییر دهید. سپس نتیجه تغییرات خود را بدون توقف و شروع مجدد برنامه مشاهده کنید.سرفصل های دوره جامع آموزش .NET MAUIما در این دوره .NET MAUI را به صورت پایه،جامع و کاربردی به شما آموزش خواهیم داد. در این دوره آموزش ها بر روی پلتفرم اندروید صورت می گیرد.می توانید این دوره را از وب سایت آموزش برنامه نویسی کدسل تهیه نمایید:آموزش جامع .NET MAUI برای توسعه اپلیکیشن های اندروید</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Tue, 06 Jun 2023 08:47:59 +0330</pubDate>
            </item>
                    <item>
                <title>Compiled Query ها در EF Core 7</title>
                <link>https://virgool.io/@codecell/compiled-query-%D9%87%D8%A7-%D8%AF%D8%B1-ef-core-7-psydiowackd7</link>
                <description>Compiled Queryوقتی برنامه‌ای دارید که پرس ‌وجوها ساختاری مشابه را بار ها در Entity Framework Core اجرا می‌ کند، می‌ توانید با یک بار کامپایل کردن کوئری و اجرای چندین بار آن با پارامترهای مختلف، عملکرد را به طور مکرر افزایش دهید. به عنوان مثال، یک برنامه ممکن است مجبور باشد تمام مشتریان یک شهر خاص را بازیابی کند. شهر در زمان اجرا توسط کاربر در یک فرم مشخص می شود. برای این منظور از Compiled Query ها استفاده می شود.Compiled Query چیست؟Compiled Query در EF Core یک نسخه از پیش کامپایل شده یک کوئری LINQ است که برای اجرای سریعت ر در حافظه ذخیره می شود. کامپایل یک کوئری شامل تجزیه و تحلیل درخت عبارت پرس و جو و تبدیل آن به کد اجرایی است. Compiled Query می تواند منجر به بهبود عملکرد، به ویژه برای پرس و جوهای پیچیده یا مکرر شود. پرس و جوهای کامپایل شده را می توان با استفاده از متد EF.CompileQuery در EF Core ایجاد کرد. هنگامی که یک پرس و جو کامپایل شد، می توان آن را چندین بار با ارسال مقادیر پارامترهای مختلف بدون نیاز به کامپایل مجدد اجرا کرد.Compiled Query عملکرد بیشتری نسبت به پرس و جوهای استاندارد EF دارند، زیرا می توانند از برخی بهینه سازی های اضافی بهره ببرند.چرا Compiled Query ها سریع تر هستند؟قبل از اینکه EF بتواند پرس و جو را به SQL معتبری که می تواند در پایگاه داده اجرا شود تبدیل کند، باید کوئری را کامپایل کند. پرس و جو کامپایل شده در حافظه کش ذخیره می شود و EF می تواند از آن پرس و جو ذخیره شده مجدد استفاده کند. در برخی شرایط، پرس و جو نیاز به کامپایل مجدد دارد و هزینه های عملکرد اضافی را به همراه دارد.هنگامی که به طور صریح پرس و جو را با فراخوانی EF.CompileQuery کامپایل می کنیم، می توانیم از برخی تکنیک های بهینه سازی که در زمان اجرا در دسترس نیستند استفاده کنیم.توجه داشته باشید که پرس و جوهای کامپایل شده فقط عملکرد بخش درون حافظه اجرای یک کوئری EF را بهبود می بخشد. زمان رفت و برگشت و نتایج حاصل از پایگاه داده بی‌تأثیر باقی می‌ماند.چرا باید از Compiled Query ها در EF Core استفاده کنیم؟دلایل مختلفی وجود دارد که ممکن است بخواهید از کوئری های کامپایل شده در EF Core استفاده کنید:بهبود عملکرد: کامپایل یک کوئری شامل تجزیه و تحلیل درخت عبارت پرس و جو و تبدیل آن به کد اجرایی است که می تواند برای اجرای سریعتر در حافظه ذخیره شود. این موضوع می تواند منجر به بهبود عملکرد قابل توجهی شود، به خصوص برای پرس و جوهای پیچیده یا مکرر.کاهش مصرف حافظه: کوئری های کامپایل شده در حافظه ذخیره می شوند، بنابراین می توان آنها را چندین بار بدون نیاز به کامپایل مجدد اجرا کرد. این موضوع می تواند به کاهش استفاده از حافظه و بهبود مقیاس پذیری برنامه کمک کند.نگهداری آسان تر: کوئری های کامپایل شده می توانند کد شما را با جدا کردن منطق پرس و جو از منطق برنامه قابل نگهداری تر کنند. این موضع می تواند درک و دیباگ کد شما را آسان تر کند و همچنین می تواند به شما در جلوگیری از مشکلات رایج عملکرد کمک کند.امنیت بهبود یافته: هنگامی که از کوئری های کامپایل شده استفاده می کنید، می توانید منطق پرس و جو را در زمان کامپایل اعتبار سنجی کنید، که می تواند به جلوگیری از حملات SQL injection و سایر آسیب پذیری های امنیتی کمک کند.توجه به این نکته مهم است که اگرچه کوئری های کامپایل شده می توانند عملکرد را بهبود بخشند و قابلیت نگهداری کد شما را بالاتر ببرند، اما محدودیت هایی نیز دارند. به عنوان مثال، آنها را نمی توان با پرس و جوهای ایجاد شده به صورت پویا یا با پرس و جوهایی که از اینترفیس IQueryable در EF Core استفاده می کنند، استفاده کرد.ما در این دوره، نحوه ایجاد و استفاده از Compiled Query ها را در .net7 و EF Core 7 آموزش خواهیم داد و سپس از عمکلرد آن با استفاده از کتابخانه BenchmarkDotNet بنچمارک خواهیم گرفت.مشاهده ویدیو :آموزش Compiled Query در EF Core 7 در وب سایت کدسلyoutubeدریافت سورس پروژه آموزش استفاده از CompiledQuery در .Net7 و EF Core 7</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Wed, 01 Feb 2023 13:21:16 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش Web API در Asp.net Core 7</title>
                <link>https://virgool.io/CodeCell/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-web-api-%D8%AF%D8%B1-aspnet-core-7-fqh7llhc2aou</link>
                <description>آموزش Web API در Asp.net Core 7Web API چیست؟اولین سوالی که به ذهن می رسد این است که &quot;API چیست&quot;؟API مخفف Application Programming Interface است. API یک عامل نرم افزاری میانی است که به دو یا چند برنامه اجازه می دهد تا با یکدیگر تعامل داشته باشند.حال سوال بعدی این است: “Web API چیست؟”به زبان ساده می توان گفت که web API یک رابط برنامه نویسی کاربردی برای یک برنامه وب یا وب سرور است و از پروتکل HTTP برای برقراری ارتباط بین کلاینت و وب سایت ها برای دسترسی به داده ها استفاده می کند.Asp.net core web API یک web API چند پلتفرمی است.چرا Web API مورد نیاز است؟کاربران می خواهد از دستگاه های مختلف مانند موبایل، مرورگر، دستگاه های گوگل و غیره به برنامه دسترسی داشته باشد. در این صورت Web API می تواند مفید باشد.دستگاه های مختلف به Web API درخواست می دهند و Web API در قالب JSON پاسخ خواهد داد. اکثر دستگاه ها قادر به درک خروجی JSON هستند.ASP.NET Core Web API چیست؟ASP.NET Core Web API یک چارچوب قابل توسعه برای ساخت سرویس های مبتنی بر HTTP است که در پلتفرم های مختلف مانند وب، ویندوز، موبایل و غیره قابل دسترس است. Asp.net Core Web API کمابیش مانند برنامه وب ASP.NET Core MVC عمل می کند  با این تفاوت که به جای html،  داده ها را به عنوان پاسخ ارسال می کند. Asp.net Core Web API مانند یک وب سرویس یا سرویس WCF است اما فقط از پروتکل HTTP پشتیبانی می کند.تفاوت بین API و REST API چیست؟همه API ها REST نیستند، اما همه سرویس های REST،  API هستند. بنابراین بین API و REST API تفاوت های وجود دارد:API مخفف (Application Program Interface) و REST مخفف (Representational State Transfer) است.وظیفه API اتصال یک برنامه به برنامه دیگر است. می توان گفت که یک رابط بین دو برنامه است. از طرف دیگر، REST API با استفاده از پروتکل های URL و HTTP ارتباط بین کلاینت و سرور را ایجاد می کند.API های REST به طور گسترده برای تبادل داده بین سیستم ها یا برنامه ها استفاده می شوند. API خدماتی را برای برقراری ارتباط با سایر خدمات بدون نیاز به دانستن نحوه پیاده سازی آنها ارائه می دهد.API مجموعه ای از توابع و رویه هایی است که به یک برنامه اجازه می دهد تا به ویژگی های برنامه دیگر دسترسی پیدا کند.API از عملیات CRUD (Create Read Update Delete) پشتیبانی می کند زیرا با HTTP verb های  GET، PUT، POST و DELETE کار می کند.REST API یک سرویس وب است که فقط از پروتکل HTTP پشتیبانی می کند در حالی که API از پروتکل HTTP/HTTPS پشتیبانی می کند.وب سرویس از XML پشتیبانی می کند در حالی که API از XML و JSON پشتیبانی می کند.تفاوت gRPC و REST چیست؟سرویس های REST از یک مدل درخواست و پاسخ ارتباطی استفاده می کنند که معمولاً بر روی HTTP 1.1 ساخته شده است، اما gRPC  چارچوبی برای پیاده سازی API های RPC از طریق HTTP/2 است که نسبت به HTTP 1.1 هم سریع تر و هم ایمن تر است.برای آشنایی بیشتر با gRPC دوره آموزش gRPC در Asp Core را مشاهده کنید.سر فصل های دوره آموزش asp.net core 7 Web APIما در این دوره Web API را در قالب یک پروژه todo از مقدماتی تا پیشرفته با .net7 به شما آموزش خواهیم داد. برخی از موضوعات مهمی که در این دوره به آن‌ ها خواهیم پرداخت عبارتند از:معماری تمیزایجاد دیتابیس با روش کد فرست با استفاده از EF Core 7استفاده از FluentApiاعتبارسنجی داده ها با استفاده از FluentValidation در asp.net core Web APIاستفاده از AutoMapper در asp.net core Web APIاستفاده از الگوی CQRS در asp.net core Web APIآموزش الگوی Unit of Work در asp.net core Web APIاحراز هویت JWT در asp.net core Web APIمستندسازی API ها با استفاده از swagger در asp.net core Web APIاستفاده از Memory Caching در asp.net core Web APIورژن بندی API ها در asp.net core Web APIکانفیگ Json در asp.net core Web APIمدیریت خطا در asp.net core Web APIکار با Filter ها در asp.net core Web APIکار با Postmanجهت شرکت در دوره آموزش مقدماتی تا پیشرفته Web API در Asp.net Core لینک زیر را دنبال نمایید:آموزش جامع Web API در Asp.net Core</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Mon, 09 Jan 2023 08:48:30 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش asp.net core mvc</title>
                <link>https://virgool.io/CodeCell/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-aspnet-core-mvc-vmld9ia1ljvl</link>
                <description>آموزش asp.net coreAsp Core MVC چیست؟ASP.NET Core MVC یک فریمورک غنی برای ساخت برنامه های وب و API با استفاده از الگوی طراحی Model-View-Controller است. Asp Core MVC به ما کنترل کامل بر markup را می دهد، از توسعه مناسب TDD پشتیبانی می کند و از آخرین استانداردهای وب استفاده می کند.الگوی MVC چیست؟الگوی معماری Model-View-Controller (MVC) یک برنامه کاربردی را به سه گروه اصلی از اجزاء تقسیم می کند: Models، Views و Controllers. این الگو به دستیابی به اصل Separation of concerns یا تقسیم کردن حوزه های مختلف نرم افزار کمک می کند.با استفاده از این الگو، درخواست‌ های کاربر به یک کنترلر هدایت می‌شوند که مسئول کار با مدل برای انجام اقدامات کاربر و یا بازیابی نتایج جستجوها است. کنترلر View مربوطه را برای نمایش به کاربر انتخاب می کند و هر مدلی داده ای را که نیاز دارد در اختیار آن قرار می دهد.مسئولیت های Model در الگوی MVCمدل در یک برنامه MVC نشان دهنده وضعیت برنامه و هر منطق تجاری یا عملیاتی است که باید توسط آن انجام شود. ویوهای Strongly-typed معمولاً از انواع ViewModel استفاده می کنند که حاوی داده هایی برای نمایش در آن ویو هستند. کنترلر این نمونه های ViewModel را از طریق Model ایجاد و پر می کند.مسئولیت های View در الگوی MVCView ها وظیفه ارائه محتوا از طریق رابط کاربری را بر عهده دارند. آنها از موتور نمایش Razor برای جاسازی کد دات نت در نشانه گذاری HTML استفاده می کنند. باید حداقل منطق در view ها وجود داشته باشد و هر منطقی در آن ها باید به ارائه محتوا مربوط شود. اگر برای نمایش داده‌ ها از یک مدل پیچیده نیاز به اجرای منطق زیادی در فایل‌های View داریم، باید از View Component، ViewModel یا View Template برای ساده‌ سازی view استفاده کنیم.مسئولیت های Controller در الگوی MVCکنترلرها اجزایی هستند که تعامل کاربر را مدیریت می کنند، با مدل کار می کنند و در نهایت یک view را برای ارائه انتخاب می کنند. در یک برنامه MVC وظیفه View فقط نمایش اطلاعات است. کنترلر ورودی و تعامل کاربر را کنترل می کند و به آن پاسخ می دهد. در الگوی MVC، Controller نقطه ورود اولیه است و مسئول انتخاب نوع Model و رندر کردن View است.سرفصل های دوره آموزش Asp Core 7 Mvcما در این دوره آموزشی فریمورک Asp Core MVC را با استفاده از dotnet 7 و در قالب یک پروژه فروشگاهی به صورت کامل و جامع به شما آموزش خواهیم دارد.شما در پایان این دوره قادر به طراحی یک وب سایت حرفه ای از صفر تا صد با استفاده از Asp Core 7 MVC خواهید بود.سرفصل ها و ابزارهای مورد استفاده در دوره آموزش Asp Core MVC به شرح زیر است:آموزش Clean Architecture یا معماری تمیزآموزش استفاده از gitآموزش code first در Asp Core MVCآموزش fluent api در Asp Core MVCآموزش AutoMapper در Asp Core MVCآموزش FluentValidation در Asp Core MVCآموزش Identity و JWT در Asp Core MVCآموزش WebAPI در Asp Core MVCآموزش مدیریت خطا و logger در Asp Core MVCآموزش Google Recaptchaآموزش الگوی Mediator در Asp Core MVCآموزش پیاده سازی درگاه بانکی در Asp Core MVCآموزش BackgroundService ها در Asp Core MVCآموزش SignalR در Asp Core MVCآموزش Bootstrap 5آموزش Saas در Asp Core MVCآموزش Stimulsoft در Asp Core MVCآموزش Kendo UI در Asp Core MVCآموزش plesk و نحوه پابلیش کردن پروژه Asp Core MVC روی هاست ویندوزیبرای شرکت در این دوره آموزشی لینک زیر از وب سایت آموزش برنامه نویسی کدسل را دنبال نمایید:آموزش asp.net core mvc با .net7 از مقدماتی تا پیشرفته</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Sun, 18 Dec 2022 16:06:07 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش gRPC در Asp Core 7</title>
                <link>https://virgool.io/@codecell/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-grpc-%D8%AF%D8%B1-asp-core-7-couyrgca1qnt</link>
                <description>آموزش grpc در  asp coregRPC چیست؟gRPC یک چارچوب قدرتمند برای کار با Remote Procedure Call(RPC) یا تماس از راه دور است. RPC به شما امکان می‌دهد تا کد خود را طوری بنویسید که گویی روی یک کامپیوتر محلی یا حتی روی کامپیوتر دیگری اجرا می شود.RPC شکلی از ارتباط کلاینت-سرو است که از فراخوانی تابع به جای ارتباط معمولی HTTP استفاده می کند. در واقع gRPC چارچوبی برای پیاده سازی API های RPC از طریق HTTP/2 است.بنابراین gRPC از نظر فنی مفهوم جدیدی نیست. بلکه از RPC اقتباس شده و بهبود یافته است و در عرض 5 سال بسیار محبوب شده است.چرا gRPC محبوب است؟دلایل زیادی برای محبوبیت gRPC وجود دارد:gRPC دارای انتزاع آسان است (یک فراخوانی تابع است)gRPC در بسیاری از زبان ها پشتیبانی می شودgRPC بسیار کاربردی استفراخوانی های HTTP اغلب گیج کننده هستند، بنابراین gRPC کار را آسان تر می کندgRPC محبوب است زیرا میکروسرویس ها بسیار محبوب هستند.میکروسرویس ها و  gRPCاز gRPC برای ایجاد ارتباط بین میکروسرویس ها استفاده می شود.gRPC به اتفاق آرا به عنوان بهترین گزینه برای ارتباط بین میکروسرویس های داخلی به دو دلیل پذیرفته شده است: عملکرد بی بدیل و ماهیت چند زبانه آن.سر فصل های آموزش gRPC در Asp Coreدر این دوره آموزشی نحوه استفاده از gRPC در را در قالب یک پروژه Asp Core 7 به صورت کامل و جامع به شما آموزش خواهیم داد.سرفصل های دوره آموزش gRPC در Asp Core به شرح زیر خواهد بود:بررسی فایل Proto Bufferبررسی انواع Data Type ها در Message های gRPCبررسی سرویس های gRPC در Proto Buffer ها و نحوه کامپایل کردن آن هاایجاد  gRPC Server و gRPC Client  و تنظیمات مربوط به آن هاایجاد Unary Call در gRPC در Asp Coreورژن بندی gRPC در Asp Coreایجاد Server Streaming Call در gRPC در Asp Coreایجاد Client Streaming Call در gRPC در Asp Coreایجاد Bidirectional Streaming Call در gRPC در Asp Coreآپلود و دانلود فایل از طریق gRPC در Asp Coreاستفاده از متد های gRPC در ابزار Postman در Asp Coreتبدیل gRPC به Rest با استفاده از Json Transcoding در Asp Coreراه اندازی Swagger برای gRPC در Asp Coreمدیریت خطا های gRPC در Asp CoreAuthentication و احراز هویت در gRPC با استفاده از Jwt در Asp Coreاستفاده از gRPC interceptor ها در Asp Coreاعتبارسنجی message های gRPC در Asp Coreجهت مشاهده این آموزش می توانید لینک زیر از وبسایت آموزش برنامه نویسی کدسل را دنبال نمایید:آموزش جامع gRPC در Asp Core با دات نت 7</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Sun, 27 Nov 2022 11:42:41 +0330</pubDate>
            </item>
                    <item>
                <title>Json Columns در EF Core 7</title>
                <link>https://virgool.io/@codecell/json-columns-%D8%AF%D8%B1-ef-core-7-ass3poxn7y7q</link>
                <description>آموزش استفاده از Json Columns در EF Core 7
Json Columns در EF Core 7اکثر پایگاه های داده رابطه ای از ستون هایی که حاوی اسناد JSON هستند  پشتیبانی می کنند. JSON موجود در این ستون‌ ها را می ‌توان با پرس ‌و‌جو ها استخراج کرد. به عنوان مثال، بر اساس ستون های JSON می توان اسناد را فیلتر یا مرتب سازی کرد.EF Core 7 شامل پشتیبانی provider-agnostic برای ستون های JSON با پیاده سازی برای SQL Server است. این پشتیبانی اجازه می دهد تا aggregate های ساخته شده از انواع دات نت را به اسناد JSON نگاشت کرد و پرس ‌و جو های معمولی LINQ را بر روی مجموعه‌ ها استفاده کرد. پرس ‌و جو های LINQ به ساختارهای پرس و جوی مناسب مورد نیاز SQL برای استخراج در JSON ترجمه می‌ شوند. EF Core 7 همچنین از به روز رسانی و ذخیره تغییرات در اسناد JSON پشتیبانی می کند.در EF Core، انواع aggregate ها را می توان با استفاده از OwnsOne و OwnsMany تعریف کرد.ما در این آموزش در قالب یک پروژه از نوع Asp Core 7 جدیدترین قابلیت EF Core 7 یعنی Json Column ها را به شما آموزش خواهیم داد.سرفصل های آموزش استفاده از Json Columns در EF Core 7:مپ کردن ستون های Json در EF7 با استفاده از OwnsOne و OwnsManyدرج داده در ستون های Json در EF7بروزرسانی ستون های Json در EF7پرس و جو در ستون های JSON در EF7برای مشاهده آموزش، لینک زیر از وب سایت آموزش برنامه نویسی کدسل را دنبال نمایید:آموزش استفاده از Json Columns در EF Core 7</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Tue, 15 Nov 2022 08:49:13 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش استفاده از Redis در Asp Core با استفاده از داکر</title>
                <link>https://virgool.io/CodeCell/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-redis-%D8%AF%D8%B1-asp-core-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AF%D8%A7%DA%A9%D8%B1-g6xrtvbqjmpq</link>
                <description>redis در asp coreRedis چیست؟Redis که مخفف Remote Dictionary Server است یک منبع ذخیره Open source و in-memory یا درون حافظه ای به صورت key-value است که توسط میلیون ها توسعه دهنده به عنوان پایگاه داده، حافظه کش توزیع شده، موتور استریم و Message Broker استفاده می شود.پایگاه داده in-memory  یا درون حافظه ای چیست؟پایگاه داده in-memory  یا درون حافظه ای، پایگاه داده ای است که کل مجموعه داده را در RAM نگه می دارد. این بدان معناست که هر بار که یک پایگاه داده را پرس و جو می کنید یا داده ها را در یک پایگاه داده به روز می کنید، فقط به حافظه اصلی دسترسی دارید. بنابراین، هیچ دیسکی در این عملیات دخیل نیست. و این عالی است، زیرا حافظه اصلی بسیار سریعتر از هر دیسکی است.Message Broker چیست؟Message Broker نرم افزاری است که برنامه ها، سیستم ها و سرویس ها را قادر می سازد با یکدیگر ارتباط برقرار کرده و اطلاعات را تبادل کنند. مسیج بروکر این کار را با ترجمه پیام ها بین پروتکل های پیام رسانی رسمی انجام می دهد.پایگاه داده key-value چیست؟پایگاه داده key-value یک الگوی ذخیره سازی داده است که برای ذخیره، بازیابی و مدیریت آرایه های انجمنی طراحی شده است و ساختار داده ای که امروزه بیشتر به عنوان dictionary یا hash table شناخته می شود به صورت key-value است.Redis ساختارهای داده‌ ای مانند رشته ها، هش ‌ها، لیست ها، set ها،bitmap ها، هایپرلاگ ها، ایندکس های مکانی و استریم ها را فراهم می ‌کند. Redis دارای تکثیر داخلی، اسکریپت ‌نویسی Lua، تراکنش ‌ها و سطوح مختلف پایداری روی دیسک است و دسترسی بالایی را از طریق Redis Sentinel و پارتیشن‌ بندی خودکار با Redis Cluster فراهم می ‌کند.بنابراین Redis را می توان به صورت منولوتیک، سیستم توزیع شده یا به عنوان یک کلاستر از گره ها با تقسیم بندی استفاده کرد.Redis چگونه کار می کند؟همه داده‌های Redis برخلاف پایگاه‌های داده مانند PostgreSQL، SQL Server و سایر اطلاعات که بیشتر داده‌ها را روی دیسک ذخیره می‌کنند، در حافظه اصلی سرور قرار دارند. در مقایسه با پایگاه‌های داده سنتی مبتنی بر دیسک که در آن بیشتر عملیات ‌ها نیاز به یک رفت و برگشت به دیسک دارند، ذخیره‌ سازی داده ‌های درون حافظه مانند Redis متحمل چنین رفت و برگشی نمی باشد. بنابراین، Redis می تواند از یک مرتبه عملیات بیشتر و زمان پاسخ سریعتر پشتیبانی کنند و نتیجه آن عملکرد سریع و فوق العاده با میانگین عملیات خواندن یا نوشتن کمتر از یک میلی ثانیه و پشتیبانی از میلیون ها عملیات در ثانیه است.انواع persistence یا ماندگاری یا در RedisRDB (Redis Database): ماندگاری RDB اسنپ شات های لحظه ‌ای از مجموعه داده‌ های شما را در فواصل زمانی مشخص انجام می‌دهد.AOF (Append Only File): ماندگاری AOF هر عملیات نوشتن دریافت شده توسط سرور را ثبت می کند، که در راه اندازی سرور دوباره اجرا می شود و مجموعه داده اصلی را بازسازی می کند. دستورات با استفاده از همان فرمت خود پروتکل Redis و به روش append-only ثبت می شوند. Redis می‌تواند لاگ ها را زمانی که خیلی بزرگ می شوند در پس ‌زمینه بازنویسی کند.بدون ماندگاری: در صورت تمایل، اگر می ‌خواهید تا زمانی که سرور در حال اجرا است، داده‌های شما وجود داشته باشند، می ‌توانید ماندگاری را به طور کامل غیرفعال کنید.RDB + AOF: امکان ترکیب هر دو AOF و RDB در یک نمونه وجود دارد. توجه داشته باشید که در این مورد، هنگامی که Redis راه اندازی مجدد می شود، از فایل AOF برای بازسازی مجموعه داده اصلی استفاده می شود زیرا تضمین می شود که کامل ترین است.سرفصل های دوره آموزش Redis در Asp Core 6 با داکر:آموزش راه اندازی Redis در داکر(Docker)آموزش تنظیمات Redis Container در داکرآموزش تنظیمات ذخیره سازی با روش RDB در Redis Container در داکرآموزش تنظیمات ذخیره سازی با روش AOF در Redis Container در داکرآموزش استفاده از Redis-cli در Dockerایجاد یک پروژه Asp Core 6 و اتصال آن به Redisبررسی انواع  Data Type های اصلی Redis و کار با آن ها در Asp Coreآموزش استفاده از Pub/Sub و ایجاد Message Broker در Redis و استفاده از آن در Asp Coreنحوه ایجاد و تنظیم فایل docker-copmose.yml و داکرایز کردن پروژهبرای مشاهده این آموزش می توانید لینک زیر را در کدسل دنبال نمایید:آموزش Redis در Asp Core با Docker</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Sun, 13 Nov 2022 08:11:33 +0330</pubDate>
            </item>
                    <item>
                <title>ایجاد دسترسی داینامیک و احراز هویت Jwt در Asp Core</title>
                <link>https://virgool.io/CodeCell/%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D8%AF%D8%A7%DB%8C%D9%86%D8%A7%D9%85%DB%8C%DA%A9-%D9%88-%D8%A7%D8%AD%D8%B1%D8%A7%D8%B2-%D9%87%D9%88%DB%8C%D8%AA-jwt-%D8%AF%D8%B1-asp-core-sxnhjbv1gqfc</link>
                <description>ایجاد دسترسی داینامیک و احراز هویت Jwt در Asp CoreAuthentication در Asp Core چیست؟Authentication یا احراز هویت در Asp Core فرآیندی است که در آن مشخص می شود کاربر چه کسی است.Authorization یا مجوز در Asp Core چیست؟Authorization در Asp Core به فرآیندی اشاره دارد که تعیین می کند کاربر مجاز به انجام چه کاری است. به عنوان مثال، یک کاربر ادمین مجاز است یک سند ایجاد کند، سند را ویرایش کند و آن را حذف کند ولی یک کاربر عادی  فقط مجاز به خواندن اسناد است.وب سایت آموزش برنامه نویسی کدسل با استفاده از Policy-based Authorization و requirement ها در Asp Core به پیاده سازی یک مکانیسم ایجاد دسترسی داینامیک پرداخته استآنچه در این دوره آموزشی یاد خواهید گرفت به شرح زیر خواهد بود:شخصی سازی و افزودن Identity به Asp Core 6آشنایی با انواع Authorization در Asp Core 6آشنایی با مفاهیم requirement ها و handler های Authorization در Asp Core 6پیاده سازی ماکانیسم دسترسی داینامیک در Asp Core 6پیاده سازی احراز هویت Jwt در Asp Core 6 با قابلیت Refresh Tokenبرای مشاهده این ویدیوی آموزش می توانید لینک زیر از وب سایت آموزش برنامه نویسی کدسل را دنبال نمایید:آموزش ایجاد دسترسی داینامیک در Asp Core</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Wed, 07 Sep 2022 09:56:08 +0430</pubDate>
            </item>
                    <item>
                <title>ارسال web push notification در Asp Core</title>
                <link>https://virgool.io/CodeCell/%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-web-push-notification-%D8%AF%D8%B1-asp-core-sttmtprqtqq8</link>
                <description>ارسال web push notification در Asp Coreweb push notification چیست؟web push notification ها notification هایی هستند که می توانند از طریق وب دسکتاپ و وب موبایل برای کاربران ارسال شوند. web push notification پیام‌های سبک notification هستند که بسته به سیستم عامل، در گوشه سمت راست بالا یا پایین صفحه دسکتاپ قرار می‌گیرند و یا در دستگاه های تلفن همراه به روشی تقریباً مشابه با notification های ارسالی از برنامه‌ ها ظاهر شود. web push notification بر روی صفحه دسکتاپ یا تلفن همراه کاربر هر زمان که مرورگر او باز است - خواه کاربر در وب ‌سایت باشد یا نباشد، ارائه می‌شود.تفاوت web push notification و app push notificationتنها چیزی که برای ارسال web push notification مورد نیاز است، وب‌ سایتی است که در آن کد های web push notification پیاده سازی شده باشد. این بدان معناست که برندهایی که اپلیکیشن ندارند، می‌توانند از بسیاری از مزایای push notification (ارتباطات هم ‌زمان، شخصی ‌سازی شده، realtime) استفاده کنند، حتی اگر اپلیکیشنی نداشته باشند. ولی app push notification ها از طریق کد قرار داده شده در یک app ارسال می‌شوند.ساختار web push notificationعنوان notification: برخی از برندها به سادگی از نام خود در اینجا استفاده می کنند.محتوای notification: پیام ارسال شده. تعداد کاراکترهای محتوا بین مرورگرها و سیستم عامل ها متفاوت است. هرچه طول آن کوتاه تر باشد بهتر است.دامنه notification: دامنه ای که web notification را ارسال می کند.آیکن notification: این آیکن می تواند یک لوگو یا هر تصویری باشد.آیکن مرورگر: لوگوی مرورگر ارسال کننده notification. این آیکن در notification ‌های ارسال شده به کامپیوترهای رومیزی یا لپ ‌تاپ اپل گنجانده شده است و نمی توان آن را تغییر داد یا حذف کرد.تصویر notification (معروف به &quot;big image&quot; یا &quot;large image&quot;): برخی از مرورگرها و سیستم عامل ها از گنجاندن یک تصویر بزرگ در web notification علاوه بر آیکن notification پشتیبانی می کنند.نحوه عملکرد web push notificationهر شرکتی که یک وب‌ سایت دارد، می‌تواند در وب ‌سایت خود به راحتی web push notification ارسال کند و برای این کار نیاز به هیچ برنامه ای نیست. کاربران دریافت کننده notification با کلیک کردن یا ضربه زدن بر روی یک web notification، به یک URL از پیش تعیین شده توسط  ارسال کننده web notification هدایت می شوند.فرآیند Opt-In درweb push notificationweb push notification یک کانال بازاریابی مبتنی بر مجوز هستند. یعنی کاربران قبل از دریافت web push notification، باید به مروگر مجوز نمایش web push notification را بدهند. برندها می‌توانند فرآیند و زمان بندی Opt-In را به روش‌های مختلف مدیریت کنند.Opt-in یک روش بازاریابی است که درآن کاربر باید رضایت خود را مبنی بر دریافت اطلاعات محصول، خدمات و اخبار آن شرکت، یا دادن اطلاعات شخصی و اطلاعات تماس به شخص سوم (مؤسسات و شرکت های دیگر همکای یا طرف قرارداد با آن شرکت) اعلام نماید.مرورگرها و دستگاه های سازگار با web push notificationمرورگرهای Chrome ، Firefox ، Opera و Safari در حال حاضر از web push notification پشتیبانی می‌کنند. web push notification روی هر کامپیوتر یا لپ‌ تاپی که از مرورگرهای پشتیبانی ‌شده استفاده می‌کند، اعم از PC یا Mac، کار می‌کند.با این حال، همه دستگاه های تلفن همراه نمی توانند web push notification را دریافت کنند. دستگاه‌ های همراه iOS (اپل) در حال حاضر از web push notification پشتیبانی نمی‌کنند، اگرچه اپل اعلام کرده است که در سال 2023 پشتیبانی می‌شود. این به این معنی است که حتی اگر یک آیفون یا آی ‌پد یک مرورگر پشتیبانی ‌شده مانند Chrome نصب کرده باشد، کاربران نمی‌توانند web push notification را دریافت کنند. دستگاه‌های تلفن همراه اندروید از web push notification برای کاربرانی که Chrome، Firefox و Opera دارند، پشتیبانی می‌ کنند.سرفصل های دوره آموزش ارسال web push notification در Asp Coreما در این دوره آموزشی با استفاده از SignalR و Notifications API مرورگر، به پیاده سازی و ارسال web push notification در Asp Core خواهیم پرداخت.با ارسال نوتیفیکیشن در Asp Core می توانید به اهدافی نظیر بازریابی،جذب مخاطب بیشتر،اطلاع رسانی و غیره جامه عمل بپوشانید.جهت آشنایی بیشتر با SignalR می توانید دوره آموزش SignalR را از لینک زیر به صورت رایگان دنبال نمایید:آموزش SignalR در Asp Coreجهت مشاهده این ویدیوی آموزشی می توانید آن را از لینک زیر به صورت رایگان دنبال نمایید: آموزش ارسال Notification در Asp Coreدریافت سورس پروژه آموزش ارسال نوتیفیکیشن در Asp Core</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Wed, 10 Aug 2022 09:08:49 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش اصول SOLID در سی شارپ</title>
                <link>https://virgool.io/CodeCell/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B5%D9%88%D9%84-solid-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-prv0x2e5x1od</link>
                <description>آموزش اصول SOLID در سی شارپاصول Solid چیست؟اصول Solid در سی شارپ از اصول اولیه طراحی هستند. SOLID مجموعه ای از توصیه های طراحی برای ایجاد نرم افزار قابل اعتماد، قابل درک، انعطاف پذیر و قابل نگهداری است.اصول SOLID توسط مربی و نویسنده علوم کامپیوتر رابرت سی. مارتین (گاهی اوقات &quot;عمو باب&quot; نامیده می شود) در سال 2000 توسعه یافت و به سرعت به یکی از اصلی ترین اجزای طراحی مدرن شی گرا (OOD) تبدیل شد. مخفف SOLID زمانی رایج شد که این اصول در دنیای برنامه نویسی محبوبیت گسترده ای پیدا کردند. در حال حاضر، SOLID هم در توسعه چابک و هم در توسعه نرم افزار تطبیقی پذیرفته شده است.SOLID مخفف پنج اصل زیر است:Single Responsibility Principle (اصل مسئولیت واحد)Open closed Principle (اصل باز و بسته بودن)Liskov substitution principle (اصل جایگزینی لیسکوف)Interface Segregation Principle (اصل جداسازی اینترفیس)Dependency Inversion Principle (اصل وارونگی وابستگی)توسعه دهندگان نرم افزار از اصول SOLID برای نوشتن کد تمیز استفاده می کنند.مشکلات نرم افزاری رایجاشکال زدایی کلاس ها با مسئولیت های بیش از حد آن ها سخت است. اتصال تنگاتنگ بین کلاس ها، افزودن ویژگی های جدید را به یک چالش تبدیل می کند و باعث نوشتن کدهای تکراری می شود.راه حل های رایجانتخاب معماری تمیز مناسب برای برنامه، به عنوان مثال MVC، 3-tier، Onion، MVP و غیره.پیروی از اصول طراحی SOLID.استفاده از الگوهای طراحی مناسب.مزایای اصول SOLID چیست؟قابلیت نگهداری(Maintainability)تست پذیری(Testability)انعطاف پذیری(Flexibility)توسعه چابک(Agile development)اصل Single Responsibility Principle یا مسئولیت واحد (SRP) در Solidرابرت سی مارتین تعریف اصل Single Responsibility Principle یا مسئولیت واحد در SOLID را در کتاب توسعه نرم افزار چابک، اصول، الگوها و شیوه ها ارائه کرد و بعداً در نسخه سی شارپ کتاب اصول، الگوها و تمرینات چابک در سی شارپ دوباره منتشر شد.اصل Single Responsibility Principle یا مسئولیت واحد در SOLID توصیه می کند که &quot;هر ماژول نرم افزاری باید تنها یک دلیل برای تغییر داشته باشد&quot;. این بدان معنی است که هر کلاس یا ساختار مشابه در کد شما فقط یک کار برای انجام دارد و نباید مانند یک چاقوی سوئیسی چند کار را انجام دهد. وقتی کلاس‌ها کوچک‌تر هستند و حاوی کدهای پاک‌تر هستند، نگهداری آن آسان‌تر است و اگر یک قسمت از سیستم خود را تغییر دهیم، نیازی به ایجاد چندین تغییر دیگر نداریم، زیرا بخشی که تغییر داده‌ایم تنها مسئول یک واحد است. چیز.در اصطلاح عامیانه، این بدان معنی است که یک کلاس نباید با مسئولیت های متعدد بارگذاری شود و یک مسئولیت واحد نباید در چندین کلاس پخش شود یا با مسئولیت های دیگر مخلوط شود. دلیل آن این است که تغییرات بیشتری در آینده درخواست می شود و در کلاس باید تغییرات بیشتری اعمال شود.اگر یک کلاس فقط یک مسئولیت داشته باشد، احتمالاً بسیار قوی خواهد بود و بررسی عملکرد آن طبق منطق تعریف شده آسان است. همچنین تغییر در کلاس آسان است زیرا مسئولیت واحد دارد.اصل  Single Responsibility Principle در SOLID یک مزیت دیگر را به همراه دارد. کلاس‌ها، اجزای نرم‌افزار و ماژول‌هایی که فقط یک مسئولیت دارند، توضیح، پیاده‌سازی و درک آن ها بسیار آسان‌ تر از آنهایی هستند که برای همه چیز راه‌ حل می‌دهند.این همچنین تعداد باگ ها را کاهش می دهد و سرعت توسعه را بهبود می بخشد و از همه مهمتر زندگی توسعه دهنده را بسیار آسان تر می کند.مشکلات رایج  عدم استفاده از اصل Single Responsibility Principle یا مسئولیت واحد (SRP) در Solid چیست؟درک و حفظ کد دشوار استتست عملکردها دشوار است و توسعه تست محور را تسهیل نمی کنداحتمال تکرار کد بالامزایای استفاده از اصل Single Responsibility Principle یا مسئولیت واحد (SRP) در Solid چیست؟اگر یک عملکرد واحد خراب شود، به راحتی می دانیم که کدام کلاس دارای اشکال است.درک و پیاده سازی کلاس ها بسیار ساده تر از کلاس هایی با چند عملکرد خواهد بود.ما به راحتی می توانیم رفتار یک تابع را با ویرایش تک کلاسی که مسئول آن است تغییر دهیم.اصل Open closed Principle یا اصل باز و بسته(OCP) در Solid چیست؟اصل Open closed Principle یا اصل باز و بسته بودن در SOLID توصیه می کند که &quot;یک ماژول یا کلاس نرم افزار باید برای توسعه باز و برای اصلاح بسته باشد&quot;. این بدان معناست که برای نیازهای جدید، ماژول های نرم افزار را با رفتارهای جدید گسترش می دهیم و نباید کد موجود را به جز رفع اشکال تغییر دهیم.برتراند مایر عموماً به دلیل ابداع تعریف اصل باز و بسته بودن در SOLID در کتاب ساخت نرم افزار شی گرا شناخته می شود.این اصل نشان می دهد که کلاس باید به راحتی گسترش یابد اما نیازی به تغییر پیاده سازی های اصلی آن نیست.برنامه یا نرم افزار باید برای تغییر انعطاف پذیر باشد. نحوه اجرای مدیریت تغییر در یک سیستم تأثیر بسزایی در موفقیت آن برنامه/نرم افزار دارد. OCP بیان می کند که رفتارهای سیستم را می توان بدون نیاز به تغییر پیاده سازی موجود آن گسترش داد.یعنی ویژگی های جدید باید با استفاده از کد جدید پیاده سازی شوند، نه با تغییر کد موجود. مزیت اصلی پایبندی به OCP در SOLID این است که به طور بالقوه نگهداری کد را ساده می کند و خطر شکستن پیاده سازی موجود را کاهش می دهد.مشکلات رایج عدم استفاده از اصل Open closed Principle یا اصل باز و بسته بودن در Solid چیست؟افزودن ویژگی‌های جدید می‌تواند باگ‌هایی را ایجاد کند و نیاز به تست مجدد برنامه موجود و همچنین ویژگی‌های جدید دارد.پیاده سازی تمام ویژگی ها در یک کلاس، تعمیر و نگهداری کلاس را بسیار سخت می کند.تغییراتی که در بسیاری از ماژول‌های برنامه وجود دارد.مزایای استفاده از اصل Open closed Principle یا اصل باز و بسته بودن در Solid چیست؟نگهداری کد آسان تر است زیرا ریسک شکست اجرای موجود را کاهش می دهد.احتمال کمتری برای بروز مشکلات در پایگاه کد وجود دارد.اطمینان حاصل می کنید که تغییرات جدید روی والد یا هر کلاس مشتق شده دیگری تأثیر نخواهد گذاشت.اصل Liskov substitution یا جایگزینی لیسکوف(LSP) در Solid چیست؟اصل جایگزینی لیسکوف (LSP) در SOLID بیان می کند که &quot;شما باید بتوانید از هر کلاس مشتق شده به جای کلاس والد استفاده کنید و از آن بخواهید بدون تغییر به همان شیوه رفتار کند&quot;. توصیه می کند که هر کلاس مشتق شده باید کاملاً با کلاس والد قابل تعویض باشد. &quot;قابلیت جایگزینی هر نمونه ای از یک کلاس والد با نمونه ای از یکی از کلاس های فرزند آن بدون عوارض جانبی منفی&quot;.اصل جایگزینی لیسکوف (LSP) تعریفی از یک رابطه فرعی است که زیرمجموعه رفتاری نامیده می‌شود و اولین بار توسط باربارا لیسکوف در سخنرانی یک کنفرانس در سال 1987 با عنوان انتزاع داده‌ها و سلسله مراتب معرفی شد.LSP بیان می کند که کلاس فرزند باید کاملاً قابل جایگزینی برای کلاس والد آنها باشد. اگر کلاس C از P مشتق شده باشد، C باید جایگزین P شود.ما می توانیم با استفاده از LSP بررسی کنیم که وراثت در کد ما به درستی اعمال شده است یا خیر.LSP یک اصل اساسی از اصول SOLID است و بیان می کند که اگر برنامه یا ماژول از کلاس پایه استفاده می کند، کلاس مشتق شده باید بتواند کلاس پایه خود را بدون تغییر پیاده سازی اصلی خود گسترش دهد.مشکلات رایج عدم استفاده از اصل Liskov substitution یا جایگزینی لیسکوف در Solid چیست؟شکست پلی مورفیسم کد مشتق شده غیر قابل تعویضمعمولاً کد کلاینت انتظار دارد که کلاس های فرزند قابل جایگزینی با کلاس های پایه خود باشنداستفاده از دستورهای if-then یا switch برای حل مشکلات قابلیت جایگزینی ، تعمیر و نگهداری را سخت تر می کندمزایای استفاده از اصل Liskov substitution یا جایگزینی لیسکوف در Solid چیست؟کد غیر قابل جایگزینی چندریختی یا پلی مورفیسم را نقض می کندامکان استفاده صحیح از پلی مورفیسم را فراهم می کنداصل Interface Segregation Principle یا جداسازی اینترفیس ها(ISP) در Solid چیست؟اصل تفکیک اینترفیس یا Interface Segregation Principle در Solid بیان می کند که کلاینت ها نباید مجبور به پیاده سازی اینترفیس هایی شوند که استفاده نمی کنند. بنابراین به جای اینترفیس های بزرگ، بهتر است چندین اینترفیس کوچک ایجاد کنید تا به بهترین شکل ممکن از آنها استفاده شود.اصل ISP در SOLID اولین بار توسط رابرت سی مارتین در حین مشاوره برای زیراکس استفاده و فرموله شد.اصل تفکیک اینترفیس برای حل مشکل طراحی برنامه مورد نیاز است. وقتی همه کارها توسط یک کلاس انجام می شود یا به عبارت دیگر تقریباً در همه کلاس های کاربردی از یک کلاس استفاده می شود، آنگاه آن کلاس به یک کلاس سنگین تبدیل می شود. به ارث بردن از چنین کلاسی منجر به داشتن متدهای می شود که مربوط به کلاس های مشتق شده نیستند اما در کلاس پایه وجود دارند تا در کلاس مشتق شده ارث بری کنند.با استفاده از ISP، ما می توانیم برای هر عملیات یا به جای داشتن یک کلاس واحد برای انجام همان کار، اینترفیس های جداگانه ایجاد کنیم.مشکلات رایج عدم استفاده از اصل Interface Segregation Principle یا جداسازی اینترفیس ها در Solid چیست؟وابستگی بیشتر به معنای کوپلینگ بیشتر، کد شکننده تر و تست بیشتر استنقض تفکیک اینترفیس ها منجر به کلاس هایی می شود که به چیزهایی بستگی دارند که آنها به آنها نیاز ندارند.باعث کاهش انعطاف پذیری هنگام افزودن ویژگی های جدید و قابلیت نگهداری می شودمزایای استفاده از اصل Interface Segregation Principle یا جداسازی اینترفیس ها در Solid چیست؟Abstraction با نشان دادن ضروری ترین جزئیات یک شی از طریق یک اینترفیس، امنیت برنامه را افزایش می دهدیک کلاس می تواند چندین اینترفیس را که با کاما از هم جدا می شوند را پیاده سازی کندیک اینترفیس به عنوان یک قرارداد عمل می کند که کلاس ها را مجبور به پیاده سازی تمام متد ها می کند.اصل Dependency Inversion Principle یا وارونگی وابستگی(ِDIP) در Solid چیست؟اصل Dependency Inversion Principle یا وارونگی وابستگی (DIP) در Solid بیان می‌کند که ماژول‌ها/کلاس‌های سطح بالا نباید به ماژول‌ها/کلاس‌های سطح پایین وابسته باشند. هر دو باید به انتزاعات بستگی داشته باشند. ثانیاً، انتزاعات نباید به جزئیات بستگی داشته باشند. جزئیات باید به انتزاعات بستگی داشته باشد.این اصل می گوید که ماژول های سطح بالا باید به انتزاع بستگی داشته باشند، نه به جزئیات یا ماژول های سطح پایین. به عبارت ساده، این اصل می گوید که نباید بین اجزای نرم افزار کوپلینگ محکمی وجود داشته باشد و برای جلوگیری از آن، اجزا باید به انتزاع بستگی داشته باشند.اصطلاحات تزریق وابستگی (DI) و وارونگی کنترل (IoC) معمولاً به جای یکدیگر برای بیان یک الگوی طراحی استفاده می‌شوند. این الگو در ابتدا IoC نامیده می شد، اما مارتین فاولر (معروف به طراحی نرم افزار سازمانی) نام آن را DI پیش بینی کرد زیرا همه فریمورک ها زمان اجرا کنترل را به نوعی معکوس می کنند و او می خواست بداند کدام جنبه از کنترل معکوس شده است.Inversion of Control (IoC) تکنیکی برای پیاده سازی Dependency Inversion Principle در سی شارپ است. وارونگی کنترل را می توان با استفاده از یک کلاس انتزاعی یا اینترفیس پیاده سازی کرد.. این تکنیک وابستگی بین موجودیت ها را حذف می کند.مزایای استفاده از اصل Dependency Inversion Principle یا وارونگی وابستگی در Solid چیست؟Abstraction با نشان دادن ضروری ترین جزئیات یک شی از طریق یک اینترفیس، امنیت برنامه را افزایش می دهدیک کلاس می تواند چندین اینترفیس را که با کاما از هم جدا می شوند را پیاده سازی کند.سرفصل های دوره آموزش رایگان اصول SOLID در سی شارپآموزش و پیاده سازی عملی اصل Single Responsibility Principle یا مسئولیت واحد(SRP) از SOLID در سی شارپآموزش و پیاده سازی عملی اصل Open closed Principle یا اصل باز و بسته بودن(OCP) از SOLID در سی شارپآموزش و پیاده سازی عملی اصل Liskov substitution یا جایگزینی لیسکوف (LSP) از SOLID در سی شارپآموزش و پیاده سازی عملی اصل Interface Segregation Principle یا جداسازی اینترفیس ها(ISP) از SOLID در سی شارپآموزش و پیاده سازی عملی اصل Dependency Inversion Principle یا وارونگی وابستگی(ِDIP) از SOLID در سی شارپنتیجه گیریپنج اصل Solid که در این آموزش مورد بحث قرار گرفته برای طراحی شی گرا خوب است. بیشتر اصول درگیر، اضافه کردن یک لایه انتزاع بین کلاس‌ها است. همیشه توصیه می شود هنگام نوشتن کد جدید اصول Solid را در نظر داشته باشید.ما در این آموزش به صورت عملی نحوه استفاده از اصول SOLID در سی شارپ را به شما آموزش خواهیم داد و در پایان شما قادر خواهید بود با رعایت اصول SOLID در سی شارپ کدهای تمیزتر، قابل انعطاف تر و تست پذیر با قابلیت نگهداری بالا بنویسید.لینک دوره: آموزش رایگان اصول SOLID در سی شارپ  کدسل- مرجع تخصصی آموزش برنامه نویسی</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Sat, 23 Jul 2022 13:50:49 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش RESTful API و عملیات CRUD در Asp Core</title>
                <link>https://virgool.io/Bartarinha/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-restful-api-%D9%88-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-crud-%D8%AF%D8%B1-asp-core-piloafnloy5y</link>
                <description>آموزش RESTful API و عملیات CRUD در Asp CoreREST چیست؟REpresentational State Transfer یه به اختصار REST یک سبک معماری برای ارائه استانداردهای بین سیستم های کامپیوتری در وب است که ارتباط سیستم ها با یکدیگر را آسان تر می کند. سیستم‌های سازگار با REST، که اغلب سیستم‌های RESTful نامیده می‌شوند، نگرانی‌های مشتری و سرور را از هم جدا می‌کنند.REST بر رابطه Client-Server متکی است. این اساساً به این معنی است که برنامه کلاینت و برنامه سرور باید بتوانند به طور جداگانه و بدون وابستگی به یکدیگر تکامل یابند.REST بدون حالت یا stateless است. این بدان معناست که ارتباط بین کلاینت و سرور همیشه حاوی تمام اطلاعات مورد نیاز برای انجام درخواست است. هیچ حالت سشن ی در سرور وجود ندارد و به طور کامل در سمت کلاینت نگهداری می شود.REST یک اینترفیس یکنواخت(uniform interface) بین اجزاء فراهم می کند.انتخاب ابزار مناسب برای نوشتن سرویس‌های RESTful بسیار مهم است زیرا ما باید به مقیاس‌پذیری، نگهداری، مستندات و سایر جنبه‌های مرتبط اهمیت دهیم. ASP Core یک API قدرتمند و آسان برای استفاده به ما می دهد که برای دستیابی به این اهداف عالی است.CRUD چیست؟چهار عمل ایجاد، خواندن، به‌روزرسانی و حذف(Create, Read, Update, Delete) یا به اصطلاح CRUD چهار عملکرد اساسی هستند که مدل‌ها باید بتوانند انجام دهند.CRUD یک کلمه مخفف است که از دنیای برنامه نویسی کامپیوتر آمده است و به چهار عملکردی اشاره دارد که برای اجرای یک برنامه ذخیره سازی پایدار ضروری هستند: ایجاد، خواندن، به روز رسانی و حذف. ذخیره سازی پایدار به هر وسیله ذخیره سازی داده ای اطلاق می شود که پس از خاموش شدن دستگاه حالت را حفظ می کند، مانند هارد دیسک یا درایو حالت جامد. در مقابل، حافظه با دسترسی تصادفی و حافظه پنهان داخلی دو نمونه از حافظه فرار هستند، آنها حاوی داده هایی هستند که در صورت قطع برق پاک می شوند.هنگامی که ما در حال ساخت API هستیم، باید مدل های ما چهار نوع عملکرد اساسی را ارائه دهند. مدل باید قادر به ایجاد، خواندن، به روز رسانی و حذف منابع باشد. یک مدل باید حداکثر توانایی انجام این چهار عملکرد را داشته باشد تا کامل شود. اگر عملی را نتوان با یکی از این چهار عملیات توصیف کرد، باید به طور بالقوه مدلی برای خود باشد.پارادایم CRUD در ساخت برنامه های کاربردی وب رایج است، زیرا چارچوبی جالب برای یادآوری توسعه دهندگان از نحوه ساخت مدل های کامل و قابل استفاده فراهم می کند. اصطلاح CRUD اولین بار توسط جیمز مارتین در کتاب مدیریت محیط پایگاه داده در سال 1983 رایج شد.CRUD و دیتابیسمخفف CRUD به عملیات اصلی اشاره دارد که توسط پایگاه های داده پیاده سازی می شوند. هر حرف CRUD می تواند به یک عبارت استاندارد زبان پرس و جو ساختاریافته (SQL) نگاشت شود. INSERT==Create SELECT==ReadUPDATE==UpdateDELETE==Deleteاگر چه پایگاه‌ داده های رابطه‌ ای یک لایه پایدار رایج در برنامه‌های کاربردی نرم‌ افزاری هستند، لایه‌های پایداری متعدد دیگری نیز وجود دارند. عملکرد CRUD را می توان به عنوان مثال با پایگاه داده های اسناد، پایگاه داده های شی، پایگاه های داده XML، فایل های متنی یا فایل های باینری پیاده سازی کرد.توجه: برخی از سیستم‌های کلان داده UPDATE را پیاده‌سازی نمی‌کنند، اما تنها دارای یک INSERT (ژورنال) هستند که هر بار یک نسخه کاملاً جدید از شی را ذخیره می‌کنند.عملیات CRUD و RESTful APIمخفف CRUD نیز در بحث RESTful API ها ظاهر می شود. هر حرف در CRUD به یک روش پروتکل انتقال ابرمتن (HTTP) نگاشت می شود: HTTPCRUDPUTCreateGETReadPUTUpdateDELETEDelete GET==ReadPUT==UpdateDELETE==Deleteدر HTTP، روش‌های GET (خواندن)، PUT (ایجاد و بروزرسانی) و DELETE (حذف) عملیات CRUD هستند زیرا معنای مدیریت ذخیره‌سازی دارند، به این معنی که به عامل کاربر اجازه می‌دهند مستقیماً حالات منابع هدف را دستکاری کنند. از طرف دیگر، روش POST یک عملیات فرآیندی است که دارای مفاهیم target-resource-specific است که معمولاً از محدوده عملیات CRUD فراتر می رود.Postman چیست؟Postman یک پلت فرم API برای توسعه دهندگان برای طراحی، ساخت، آزمایش و تکرار API های خود است. از آوریل 2022، Postman گزارش می دهد که بیش از 20 میلیون کاربر ثبت شده و 75000 API باز دارد و بزرگترین هاب API عمومی جهان را تشکیل می دهد.سرفصل های دوره آموزش Restful Api و عملیات CRUD در Asp Coreایجاد دیتابیس با روش کد فرست در Asp Coreپیکربندی و تنظیم جداول با استفاده از روش Fluent Api در Asp Coreایجاد Restful Api و پیاده سازی عملیات CRUD در Asp coreایجاد سرویس های مورد نیاز جهت ارتباط با دیتابیسارسال درخواست به Restful Api با ابزار Postman و مشاهده نتایج در Asp coreپیش نیازهای دوره آموزش RESTful API و انجام عملیات CRUD در Asp Core 6برای شروع دوره آموزش RESTful API و عملیات CRUD در Asp Core 6 ابتدا نیاز است که دوره های آموزش ایجاد دیتابیس با روش کد فرست در Asp Core 6 و  استفاده Fluent Api در Asp Core 6 را از سایت آموزش برنامه نویسی کدسل دنبال نمایید.برای مشاهده آموزش restful API و عملیات Crud در Asp Core 6، لینک زیر از سایت آموزش برنامه نویسی کدسل را دنبال نمایید:آموزش restful API و عملیات Crud در Asp Core 6</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Thu, 14 Jul 2022 09:07:01 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش استفاده از Serilog در asp core</title>
                <link>https://virgool.io/CodeCell/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-serilog-%D8%AF%D8%B1-asp-core-qduupiedscvk</link>
                <description>آموزش استفاده از Serilog در asp coreلاگ گیری یا Logging چیست؟امروزه لاگ گرفتن از سیستم یکی از اساسی ترین مواردی است که هر اپلیکیشنی به آن نیاز دارد. برای عیب یابی هر گونه مشکل در سیستم استفاده از logger امری ضروری است. Logger برای ایجاد فایل های خطای سفارشی شده یا رویدادهای سیستم استفاده می شود.با کمک logging نه تنها می‌ توانیم آنچه را که در برنامه اتفاق می‌افتد ردیابی کنیم، بلکه به ردیابی هر نوع exception نیز کمک می‌کند. این exception در واقع زمانی مفید است که متد دقیق و شماره خط را با جزئیات پیام مناسب نشان دهد. بنابراین با کمک log، توسعه دهندگان می توانند به راحتی بفهمند که خطای واقعی چیست.Serilog چیست؟Serilog یک کتابخانه logging ساختاری برای Microsoft.Net است و به کتابخانه logging ترجیحی برای برنامه‌های .Net تبدیل شده است. کتابخانه های logging ، ارسال لاگ های خود را به مکان‌ های مختلف از طریق پیکربندی‌ های ساده آسان می‌کنند. Serilog از آنچه (سینک)sink نامیده می شود استفاده می کند تا لاگ های ما را به یک فایل متنی، پایگاه داده یا مکان های دیگر ارسال کند. مانند بسیاری از کتابخانه های دیگر برای دات نت، Serilog امکان ثبت لاگ درون فایل، محیط کنسول، دیتابیس و جاهای دیگر را فراهم می کند. راه اندازی Serilog بسیار آسان است و قابل استفاده در اکثر پلتفرم های دات نت می باشد. الگوهای پیام Serilog یک DSL ساده است که فرمت رشته های .NET را گسترش می دهد. پارامترها را می ‌توان نام ‌گذاری کرد و مقادیر آن‌ ها به‌ عنوان ویژگی‌ روی event برای انعطاف ‌پذیری باور نکردنی در جستجو و مرتب ‌سازی serialize می‌شوند.var position = new { Latitude = 25, Longitude = 134 };
var elapsedMs = 34;
log.Information(&amp;quotProcessed {@Position} in {Elapsed:000} ms.&amp;quot, position, elapsedMs);این مثال دو ویژگی Position و Elapsed را به همراه رویداد log ثبت می کند. ویژگی های ثبت شده در مثال، در قالب JSON، به صورت زیر ظاهر می شوند:{&amp;quotPosition&amp;quot: {&amp;quotLatitude&amp;quot: 25, &amp;quotLongitude&amp;quot: 134}, &amp;quotElapsed&amp;quot: 34}عملگر @ در جلوی Position به Serilog می‌گوید که به جای تبدیل آن با استفاده از ToString، شیء ارسال شده را serialize کند.بخش :000 در Elapsed یک فرمت رشته ستاندارد دات نت است که بر نحوه رندر شدن ویژگی تأثیر می گذارد. sink کنسول همراه با Serilog پیام فوق را به صورت زیر نمایش می دهد:09:14:22 [Information] Processed { Latitude: 25, Longitude: 134 } in 034 ms.Sink(سینک) ها در SerilogSerilog برای نوشتن لاگ رویدادها در قالب های مختلف ذخیره سازی sink هایی را ارائه می دهد. این sink ها توسط جامعه گسترده Serilog توسعه یافته و پشتیبانی می شوند. از معروف ترین sink های Serilog می توان به موارد زیر اشاره کرد:ConsoleFileSQL ServerSeqلیست کامل sink های Serilog را از اینجا ببینید.چرا باید از Serilog استفاده کنیم؟اکوسیستم وسیع Serilog متشکل از صدها انجمن است که کنسول، فایل، صف پیام، Seq، جستجوی الاستیک، مرکز رویداد Azure و غیره را پوشش می‌دهد.API ساده و آسان برای توسعه دارد.قابلیت تعویض یکپارچه فرمت خروجی به متن ساده یا Json.راه اندازی آن بسیار آسان است.آموزش نحوه استفاده از Serilog در Asp Coreما در این دوره آموزشی ابتدا یک پروژه Asp Core 6 MVC ایجاد خواهیم کرد و سپس Serilog را برای انجام عملیات Logging به آن اضافه خواهیم کرد. در ادامه نحوه استفاده از سینک های Console، File، SQLServer و Seq در Serilog را در Asp Core 6 آموزش خواهیم داد.برای مشاهده آموزش، لینک زیر از سایت آموزش برنامه نویسی کدسل را  دنبال نمایید:آموزش استفاده از Serilog در asp core</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Wed, 29 Jun 2022 15:38:12 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش نصب و استفاده از CKEditor 5 در Asp Core</title>
                <link>https://virgool.io/CodeCell/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-%D9%88-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-ckeditor-5-%D8%AF%D8%B1-asp-core-bygpsraozuni</link>
                <description>ckeditor 5 در aspCKEditor چیست؟CKEditor یک ویرایشگر متن قدرتمند و فوق مدرن جاوا اسکریپتی با معماری MVC است. آخرین نسخه از CKEdiotr نسخه 5 آن یعنی CKEditor 5 است.CKEditor 5، رویکردی متفاوت و مدرن نسبت به نسخه قبلی خود دارد که از ابتدا در ES6 نوشته شده است. به جز نام و مجموعه کاملی از ویژگی ها، شباهت زیادی با نسخه قبلی خود ندارد. CKEditor 5 دارای یک موتور مبتنی بر MVC با مدل داده سفارشی و DOM مجازی است. معماری ماژولار و مبتنی بر پلاگین آن قابل تنظیم است و دارای ادغام بومی با Angular، React، Vue.js، npm، webpack، Electron و غیره است.چگونه باید از CKEditor در Asp Core MVC استفاده و آن را شخصی سازی کنیم؟ما در این آموزش به صورت رایگان نحوه راه اندازی و استفاده از CKEditor 5 در Asp را به شما قدم به قدم خواهیم آموخت و آن را برای استفاده شخصی سازی خواهیم کرد. ما در این آموزش CKEditor را در یک پروژه Asp MVC Core 6 راه اندازی، شخصی سازی و سپس استفاده خواهیم کرد.سرفصل های دوره آموزش استفاده از CKEditor 5 در Asp Coreنحوه دانلود، نصب و راه اندازی CKEditor در  Asp Core MVCشخصی سازی Heading ها در CKEditorشخصی سازی و نحوه استفاده از فونت ها در CKEditorشخصی سازی اندازه فونت ها در CKEditorشخصی سازی نوار ابزار در CKEditorشخصی سازی لینک دهی در CKEditorآپلود تصویر و شخصی سازی ابزارهای تصویر در CKEditorشخصی سازی جدول در CKEditorبرای مشاهده این دوره آموزشی می توانید سایت آموزش برنامه نویسی کدسل را از طریق لینک زیر دنبال نمایید:آموزش CKEditor5 در Asp</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Mon, 20 Jun 2022 12:50:40 +0430</pubDate>
            </item>
                    <item>
                <title>بررسی طول عمر سرویس ها در تزریق وابستگی در Asp Core</title>
                <link>https://virgool.io/CodeCell/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D8%B7%D9%88%D9%84-%D8%B9%D9%85%D8%B1-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%87%D8%A7-%D8%AF%D8%B1-%D8%AA%D8%B2%D8%B1%DB%8C%D9%82-%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C-%D8%AF%D8%B1-asp-core-ytf9dwnbqnfl</link>
                <description>طول عمر سرویس ها در تزریق وابستگیتزریق وابستگی یا Dependency injection چیست؟تزریق وابستگی (DI) الگویی است که می تواند به توسعه دهندگان کمک کند تا بخش های مختلف برنامه های خود را جدا کنند. هنگامی که یک سیستم برای استفاده از DI طراحی شده است، و بسیاری از کلاس‌ها وابستگی‌های خود را از طریق سازنده (یا ویژگی‌هایشان) درخواست می‌کنند، مفید است که کلاسی برای ایجاد این کلاس‌ها با وابستگی‌های مرتبط با آنها اختصاص داده شود. به این کلاس ها کانتینرها یا به طور خاص کانتینرهای وارونگی کنترل (IoC) یا ظروف تزریق وابستگی (DI) گفته می شود. کانتینر اساساً کارخانه ای است که مسئول ارائه نمونه هایی از انواع درخواستی از آن است.تزریق وابستگی(Dependency injection) در .Net CoreMicrosoft .NET Core شامل یک کانتینر داخلی ساده  است (توسط اینترفیس IServiceProvider ارائه  شده است) که از تزریق سازنده پشتیبانی می کند. فضای نام که تحت آن گنجانده شده است Microsoft.Extensions.DependencyInjection است.طول عمر وابستگیدر زمان ثبت سرویس، وابستگی ها نیاز به تعریف طول عمر دارند. طول عمر سرویس، شرایطی را که تحت آن یک نمونه جدید از سرویس ایجاد می شود را مشخص می کند. در زیر طول عمر تعریف شده توسط چارچوب .NET Core DI آمده استزریق وابستگی Transient یا گذراتزریق وابستگی Scoped یا محدوده شدهتزریق وابستگی Singleton یا یگانهبرای بررسی طول عمر سرویس ها به صورت عملی می توانید ویدیوی آموزش بررسی LifeTime یا طول عمر سرویس ها در تزریق وابستگی را از طریق سایت آموزش برنامه نویسی و طراحی وب کدسل مشاهده نمایید.دریافت سورس پروژه بررسی Service Lifetime  تزریق وابستگی در Asp core</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Sat, 18 Jun 2022 08:25:59 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش استفاده از Hosted Service ها در Asp Core</title>
                <link>https://virgool.io/CodeCell/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-hosted-service-%D9%87%D8%A7-%D8%AF%D8%B1-asp-core-v51i2lixzlnq</link>
                <description>کارهای پس زمینه در asp coreHosted Service چیست؟Hosted service ها در ASP.NET Core 3.1 معرفی شدند و روشی عالی برای اجرای وظایف پس زمینه یا Background Task ها هستند.Hosted service در دنیای NET Core در اصطلاح توسعه دهندگان به معنای وظایف پس ‌زمینه روزمره است. اگر در دنیای C# و حتی دنیای Azure زندگی می کنید، در واقع چند گزینه برای انجام کارهای سبک پس زمینه دارید. مشکلاتی که می‌توانید با استفاده از Hosted service حل کنید احتمالاً مشابه مشکلاتی هستند که در حال حاضر با استفاده از Windows Service ها یا Azure WebJobs حل می شوند.Background Task ها را می توان با استفاده از Hosted service در یک برنامه وب ASP.NET Core اجرا کرد. اگر بخواهیم در پس‌ زمینه چیزی را که بر همه کاربران تأثیر بگذارد اجرا کنیم استفاده از Hosted service ها بهترین گزینه ممکن است.از طرف دیگر، می توان Hosted service ها را با استفاده از یک الگوی Worker Service اجرا کرد. Hosted service ها برای اجرای یک تسک پس زمینه طراحی شده اند و می توانند به عنوان یک سرویس ویندوز نیز راه اندازی شوند.نحوه ایجاد یک Hosted service در asp coreبرای ایجاد یک Hosted service در asp core دو راه وجود دارد:استفاده از اینترفیس IHostedService برای ایجاد Hosted Service در Asp Coreاولین راهی که می توانیم انجام دهیم این است که اینترفیس IHostedService را پیاده سازی کنیم. کلاس پیاده کننده اینترفیس IHostedService باید متدهای StartAsync و StopAsync را پیاده سازی کند.ارث بری از کلاس BackgroundService برای ایجاد Hosted Service در Asp Coreدومین راه جایگزین، ارث بری از کلاس BackgroundService است. کلاس BackgroundService یک کلاس انتزاعی است که اینترفیس IHostedService را نیز به ارث می برد. یکی از مزایای استفاده از این روش این است که ما مجبور نیستیم متدهای StartAsync یا StopAsync را پیاده سازی کنیم. با این حال می توانیم آن ها را override کنیم. در کلاس BackgroundService یک متد انتزاعی به نام ExecuteAsync وجود دارد. از آنجایی که متد ExecuteAsync یک متد انتزاعی است، باید آن را برای اجرای Background Task های خود override کنیم.چرا باید از Background Task ها یا کارهای پس زمینه استفاده کنیم؟افزایش سرعتمنتظر نماندن کاربر جهت دریافت پاسخ و در نتیجه افزایش تجربه کاربریاجرای کارها طبق زمانبندی مشخصخودکار سازی کارها در پس زمینهبرای مشاهده این آموزش به وب سایت آموزش برنامه نویسی کدسل مراجعه نمایید:اجرای وظایف پس زمینه یا Background Task ها در Asp Core</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Tue, 14 Jun 2022 11:42:00 +0430</pubDate>
            </item>
                    <item>
                <title>تبدیل برنامه های Asp Core به PWA</title>
                <link>https://virgool.io/CodeCell/%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-asp-core-%D8%A8%D9%87-pwa-uj6r6jpk9vxn</link>
                <description>آموزش تبدیل برنامه های Asp.Net Core به PWA
PWA یا وب اپلیکیشن پیش رونده چیست؟PWA یا وب اپلیکیشن پیش رونده (Progressive Web Application) نوعی برنامه وب است که می تواند هم به عنوان صفحه وب و هم به عنوان برنامه تلفن همراه در هر دستگاهی کار کند. PWA یک راه حل عالی برای جبران UX برنامه های تلفن همراه است.PWA ها با جاوا اسکریپت، CSS و HTML نوشته می شوند. آنها دقیقاً مانند صفحات وب معمولی به نظر می رسند و رفتار می کنند (به این معنی که در مرورگرهای اینترنتی قابل جستجو هستند). با این حال، آنها عملکردهای یکسانی که توسط برنامه های تلفن همراه ارائه می شود را ارائه می دهند.نحوه تبدیل برنامه Asp Core به PWAبرای ایجاد PWA در برنامه های Asp Core می توان بوسیله پکیج WebEssentials.AspNetCore.PWA  یک پروژه Asp Core را به یک اپلیکیشن PWA تبدیل کرد.برای مشاهده این ویدیو آموزشی می توانید به لینک زیر در وب سایت آموزش برنامه نویسی کدسل مراجعه نمایید:آموزش تبدیل برنامه های Asp.Net Core به PWA</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Tue, 07 Jun 2022 15:37:20 +0430</pubDate>
            </item>
                    <item>
                <title>استفاده از پشته در سی شارپ</title>
                <link>https://virgool.io/CodeCell/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%BE%D8%B4%D8%AA%D9%87-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-ssfnpi98kfjk</link>
                <description>پشته در سی شارپپشته در سی شارپ چیست؟پشته یا Stack در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. پشته یک ساختار داده LIFO یا Last-In-First-Out است، به این معنی که آخرین موردی که در پشته قرار می گیرد اولین موردی است که از پشته خارج می شود.برای آشنایی بیشتر با پشته یا Stack در سی شارپ مقاله وب سایت  کدسل را دنبال نمایید:پشته در سی شارپ</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Mon, 06 Jun 2022 15:28:24 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش Fluent API در EF Core</title>
                <link>https://virgool.io/CodeCell/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-fluent-api-%D8%AF%D8%B1-ef-core-sujmjigjxfko</link>
                <description>آموزش Fluent API در EF CoreFluent API چیست؟در روش کد فرست یا Code First بصورت پیش فرض کلاس ها با استفاده از مجموعه ای از قراردادهای گنجانده شده در EF به جداول نگاشت می شود. به طور مثال بصورت پیش فرض در روش کد فرست در EF Core یک پراپرتی از نوع string به varchar(MAX) در دیتابیس نگاشت می شود.با این حال، گاهی اوقات نمی‌توانیم یا نمی‌خواهیم از آن قراردادها پیروی کنیم و نیاز داریم که موجودیت‌ها را به چیزی غیر از آنچه که قراردادها دیکته می‌کنند، نگاشت کنیم.برای آموزش Code First در EF Core می توانید از این لینک استفاده کنید.برای این که EF را به چیزی غیر از قراردادها پیکربندی کنیم دو راه وجود دارد:استفاده از annotation ها  در EF Coreاستفاده از  Fluent API در EF Coreچرا در روش کد فرست نباید از annotation ها در EF Core استفاده کنیم؟استفاده از annotation ها باعث کثیفی کد خواهند شداستفاده از annotation ها خوانایی کد را پایین می آورداستفاده از annotation ها توسعه و نگه داری کد را سخت خواهد کردچرا در روش کد فرست باید از Fluent API در EF Core استفاده کنیم؟استفاده از Fluent API ها خوانایی کد را بالا می برداستفاده از Fluent API ها باعث تسریع روند پروژه خواهد شداستفاده از Fluent API ها توسعه و نگه داری کد را آسان می کندانواع سناریوهای نگاشت را می توان با Fluent API انجام دادبه طور کل annotation ها فقط زیرمجموعه ای از عملکرد Fluent Api را پوشش می دهند، بنابراین سناریوهای نگاشتی وجود دارد که با استفاده از annotation نمی توان به آنها دست یافت که این سناریو ها باید با Fluent Api ها نگاشت شوند.سر فصل های آموزش Fluent API در EF Core نحوه ایجاد یک Fluent API و آشنایی با ساختار آنجداسازی پیاده سازی های Fluent API از contextبررسی انواع متدهای Fluent API و کاربردهای آنایجاد رابطه یک به یک(One-to- One) با استفاده از Fluent APiایجاد رابطه یک به چند(One-to-Many) با استفاده از Fluent APiایجاد رابطه چند  به چند(Many -to-Many) با استفاده از Fluent APiایجاد رابطه Self Relation با استفاده از Fluent APIانجام Seed Data در Fluent APIنحوه اعمال کردن ایندکس ها بوسیله  Fluent APIجهت مشاهده این آموزش به وب سایت آموزش برنامه نویسی کدسل در لینک زیر مراجعه نمایید:دوره آموزش Fluent API در EF Core</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Sat, 28 May 2022 08:46:40 +0430</pubDate>
            </item>
                    <item>
                <title>ایجاد دیتابیس با روش Code First در EF Core</title>
                <link>https://virgool.io/CodeCell/%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A8%D8%A7-%D8%B1%D9%88%D8%B4-code-first-%D8%AF%D8%B1-ef-core-zyfwecitd5wp</link>
                <description>ایجاد دیتابیس با روش کد فرستروش کد فرست(Code First) در EFCore چیست؟روش کد فرست یا Code First تکنیکی است که به ما کمک می کند تا از طریق کد و مایگریشن یک دیتابیس را ایجاد و جداول آن را کانفیگ و نگهداری کنیم. در روش code first بصورت مستقیم دیتابیس و جداول مربوط به آن را از طریق  کد دات نت نگهداری می کنیم.مایگریشن چیست؟در روش کد فرست مایگریشن یا migration یک  راه پیشنهادی برای تکامل طرح پایگاه داده برنامه ما است. مایگریشن مجموعه‌ای از ابزارها را فراهم می‌کند که به کمک آن ها میتوانیم به موارد زیر دست یابیم:ایجاد یک پایگاه داده اولیه که با مدل EF ما کار کندایجاد مایگریشن برای پیگیری تغییراتی که در مدل EF خود ایجاد می کنیمبروز نگه داشتن پایگاه داده خود بوسیله این تغییراتکاربرد Fluent Api چیست؟در روش کدفرست بصورت پیش فرض کلاس ها با استفاده از مجموعه ای از قراردادهای گنجانده شده در EF به جداول نگاشت می شود. با این حال، گاهی اوقات نمی‌توانیم یا نمی‌خواهیم از آن قراردادها پیروی کنیم و نیاز داریم که موجودیت‌ها را به چیزی غیر از آنچه که قراردادها دیکته می‌کنند، نگاشت کنیم.برای این که EF را به چیزی غیر از قراردادها پیکربندی کنیم دو راه وجود دارد، استفاده از annotation ها یا EFs fluent API. استفاده از annotation ها فقط زیرمجموعه ای از عملکرد Fluent Api را پوشش می دهند، بنابراین سناریوهای نگاشتی وجود دارد که با استفاده از annotation نمی توان به آنها دست یافت که این سناریو ها باید با Fluent Api ها نگاشت شوند.آموزش کد فرست(Code First) در EF Core و Asp.Net Coreوب سایت آموزش برنامه نویسی و طراحی وب کدسل به صورت روان و ساده به آموزش استفاده از کد فرست در ef core و asp.net core 6 پرداخته است.جهت مشاهده این ویدیو آموزشی از لینک زیر استفاده نمایید:آموزش Code First در EF Core</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Wed, 25 May 2022 09:56:51 +0430</pubDate>
            </item>
                    <item>
                <title>صف (Queue) در سی شارپ</title>
                <link>https://virgool.io/CodeCell/%D8%B5%D9%81-queue-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-gbxfdba3ydtv</link>
                <description>صف (Queue) در سی شارپصف (Queue) در سی شارپ چیست؟صف در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. Queue یک ساختار داده first-in-first-out یا FIFO است که به این معنی است که اولین مورد اضافه شده به صف اولین موردی است که حذف می شود.برای آشنایی بیشتر با صف در csharp مقاله وب سایت برنامه نویسی و طراحی وب کدسل را دنبال نمایید:صف در سی شارپ</description>
                <category>CodeCell</category>
                <author>CodeCell</author>
                <pubDate>Sat, 21 May 2022 13:42:17 +0430</pubDate>
            </item>
            </channel>
</rss>