<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های منصور طرفدار</title>
        <link>https://virgool.io/feed/@tarafdar.mansour</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-10 23:08:22</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/538957/avatar/xKuf43.jpg?height=120&amp;width=120</url>
            <title>منصور طرفدار</title>
            <link>https://virgool.io/@tarafdar.mansour</link>
        </image>

                    <item>
                <title>تجربه من از مطالعه کتاب Practical Entity Framework Core 6</title>
                <link>https://virgool.io/@tarafdar.mansour/%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D9%85%D9%86-%D8%A7%D8%B2-%D9%85%D8%B7%D8%A7%D9%84%D8%B9%D9%87-%DA%A9%D8%AA%D8%A7%D8%A8-practical-entity-framework-core-6-mpeudjncsc9z</link>
                <description>سلامامیدوارم حالتون خوب باشه.مدتی پیش چون فکر میکردم لازمه دید جامع تری نسبت به EF Core داشته باشم تصمیم گرفتم یه کتاب کاربردی در این زمینه بخونم. بررسی ها منو به این کتاب رسوند.Practical Entity Framework Core 6, Database Access for Enterprise Applications, Second EditionPractical Entity Framework Core 6, Database Access for Enterprise Applications, Second Editionدر کتاب استفاده از EF Core در کنار SQL Server توضیح داده شده و هدف انجام کار مورد نیاز بوده و تمرکز خاصی برای انجام اون توسط Data Annotation و یا Fluent API نشده. کتاب مملو از مثال های مفصل هست و هر فصل بین 2 تا 4 مثال عملی برای یادگیری بهتر دارد.بررسی بخش های کتاب:بخش 1محتوا: نصب و راه اندازی ابزار های مورد نیاز، دیتابیس های مورد نیاز برای آموزش، توضیحاتی در مورد روشهای Code First و Database Firstمناسب برای: افرادی که سابقه کمی (یکی دو سال) با خانواده EF دارند. برای افراد با سابقه توصیه نمیشه.بخش 2محتوا: به سمت ایجاد یک ساختار جامع برای مدیریت لایه دیتای پروژه رفته. این بخش  شامل ایجاد و انتقال Table، Function، SP، View و اطلاعات به وسیله Migration به دیتابیس هست و روش استفاده هر کدام از Function، SP، View در برنامه توضیح داده شده. در این بخش همچنین نکات مفیدی در کار با IEnumerable و IQuerable ها بیان شده. نویسنده کاملا به جزئیات توجه کرده و در جاهایی برای درک بهتر شما از Profiler برای نمایش نتایج کوئری شما استفاده کرده.مناسب برای: اگر در EF کم سابقه هستید ولی قصد دارید در آینده از اون استفاده کنید بسیار توصیه میکنم این فصل رو دقیق بخونید و مثال هاش رو انجام بدید. برای افراد با سابقه در این زمینه تورق این فصل خالی از لطف نیست.بخش 3محتوا: این فصل مباحث فنی تر برای واکشی دیتا و Map کردن اون رو داره. همچنین دیتا رو چطور بصورت توکار در SQL رمزگذاری کنید و سمت EF مورد استفاده قرار بدید (اگه خواستید از این تکنیک استفاده کنید حتما چالش های محیط عملیاتی رو در نظر بگیرید). نوشتن Unit Test و Integration Test و همچنین انجام عملیات دیتابیس به صورت Async (که به نظرم بسیار مهمه) از دیگر مسائل مطرح شده توی این فصله. توی این فصل یه مبحثی پیرامون Repository and Unit of Work Patterns باز شده که من رو اقناع نکرد و سوالات من رو بی جواب گذاشت.مناسب برای: مطالعه این فصل رو به همه توصیه میکنم ولی اگه سابقه کمی دارید حتما مثال ها رو هم انجام بدیدفصل 4محتوا: یه سری نکات تکمیلی مانند Interceptor ها و کاربردهاشون، SplitQuery ، ساختار TPT، یه سری Data Annotation Attribute جدید، استفاده از قابلیت FullText Search در  EF Coreرو بیان کرده و هر کدوم رو با مثال های عملی همراه کرده. برای مثال فکر کنید اگه کوئری هاتون که EF روی دیتابیس میزنه کند شدند از کجا میخواید بفهمید؟ راه حلش یه Interceptor ساده است که توی این فصل آموزش داده شده.مناسب برای: مطالعه این فصل رو به همه توصیه میکنم ولی باز هم اگه سابقه کمی دارید حتما مثال ها رو هم انجام بدید.جمع بندیدر پایان اگه به محتوای این کتاب به خوبی مسلط باشید میتونید لایه دیتای پروژه های نسبتا بزرگ به خوبی مدیریت کنید. قطعا ده ها نکته ریز و درشت دیگه وجود داره که میتونید دانش خودتون رو باهاش بهبود ببخشید. مثل بقیه کتاب های دیگه این کتاب و محتواش وحی منزل نیست و کاملا از یک پروژه تا پروژه دیگه میتونه درست یا غلط باشه.در پایان اگه در مورد این متن و یا این کتاب نکته ای داشتید که برای من یا بقیه دوستان مفید بود ممنون میشم به اشتراک بذارید. اگه کتاب مناسب تر و کاربردی تری در زمینه EF Core میشناسید ممنون میشم راهنمائیم کنید.</description>
                <category>منصور طرفدار</category>
                <author>منصور طرفدار</author>
                <pubDate>Thu, 09 Nov 2023 19:44:26 +0330</pubDate>
            </item>
                    <item>
                <title>مدیریت کاربران از طریق IP آنها (net core 6 &amp; webapi)</title>
                <link>https://virgool.io/@tarafdar.mansour/%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%A7%D9%86-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-ip-%D8%A2%D9%86%D9%87%D8%A7-net-core-6-webapi-paauvjmtfbau</link>
                <description>به نام خدا و سلاماین اولین مقاله (و شاید هم آخرین مقاله) من هستش و دنبال این هستم که یه کم چیزی که بلدم رو اینجا منتشر کنم. امیدوارم خوشتون بیاد و ازش استفاده کنید. به جای حرف های گنده گنده و گیج کننده تصمیم گرفتم از وسط یه داستان بامزه شروع کنم تا ببینیم به کجای داستان برسیم.هدف از این مقاله ارائه یک راه حل ساده ( و شاید ساده ترین راه حل) برای کنترل IP کاربرانی هست که به WebApi شما درخواست می دهند.فریم وورکی که ازش استفاده می کنم .net core 6 و ابزار من Visual Studio 2022 هستش. این رو زود گفتم که اگه دات نت کار نیستید بی خیال ادامه مقاله بشید. لازمه یه کم دات نت، یه کم c# ، مفاهیم DI، مفاهیم webapi و البته asp.net core Middleware رو بدونید. (اگه نمیدونید یه کم بخونید و به قولی توی سرو کله خودتون و پروژه بزنید یاد میگیرید)ویژوال استودیو رو باز کنید و Create a new project رو بزنید. پروژه از نوع ASP.Net core WebApi رو انتخاب کنید. یه نام با مسمی بهش بدید و تنظیمات فریم وورک رو ببرید روی .net core 6 مثل تصور زیر:تا اینجا که هیچ کار خاصی نکردیم ( و البته بعدا دیگه در مورد این مرحله ها چیزی نمی گم) فقط گفتم این ها رو که بعدا با تغییرش برای مقاصد دیگه در پروژه های دگیه بشه اشاره کرد.خب حالا ساختار پروژه اومده بالا با یه کنترلر پیش فرض در مورد آب و هوا (یا هر چی) و اون OpenAPI هم که داره داداش خودمون swagger هستش برای بازی با سرویس ها. ساختار پروژمون میشه شکل زیر:خب تا حالا همه کارها رو ویژوال استودیو کرد. کار ما تازه از اینجا شروع میشه.خب سوال اصلی پروژه ( و شاید سوال کلیدی زندگی هر شخصی): هدف ما از این کار چیست؟پاسخ: ما لیستی از IP های مجاز (white list) و غیر مجاز (black list) داریم و میتونیم چک کردن اونها رو فعال یا غیرفعال کنیم. با استفاده از این دو لیست ما تمام درخواست ها به web api رو چک میکنیم و اونهایی که با سیاست ما نخونه رد می کنیم که بره توی دیوار به قولی.مرحله یک: قرار دادن تنظیمات مورد نظر در پروژهمن دو تا لیست دارم و دوتا فلگ که باید true و یا false باشن. توی این پروژه میخوام بذارمشون توی appsettings.json . در نتیجه فایل appsettings.json پروژه من میشه این شکلی: https://gist.github.com/tarafdarmansour/c89d2e728cb58e98ef583f4d48a735be#file-appsettings-json شما میتونید این تنظیمات رو کم و زیاد کنید و هر چی دوست دارید بهشون اضافه کنید. همونطور که فهمیدید IP ها رو با ، از هم جدا کردم و به صورت یه رشته گذاشتم.مرحله دو: خوندن تنظیمات از appsettings.json و استفاده در یک سرویسحالا وقتشه این تنظیمات رو بخونم و توی یه سرویس ازشون استفاده کنم. من یه سرویس و اینترفیسش رو اضافه میکنم تا بتونم بعدا توی مسیر حرکت HTTP Request توی Middleware ازش استفاده کنم. https://gist.github.com/tarafdarmansour/80e0ecdc8e8bef45af0da3f9649e13b2#file-ipcheckservice-cs خب توی سازنده این سرویس من مقادیر فلگ ها رو از فایل کانفیگ میخونم و با توجه به اونها لیست IP ها رو پر میکنم تا بتونیم توی متد IsBlocked از این فلگ ها و لیست ها استفاده کنم. از اونجایی که فکر میکنم یه مقداری در مورد DI چیزی میدونید حرفی در مورد  IConfiguration و یا IIPCheckService نمی زنم. بعد از تعریف این سرویس برای اینکه بتونید به وسیله تزریق وابستگی از این سرویس استفاده کنید کد زیر رو باید به Program.cs پروژه اضافه کنید.builder.Services.AddTransient&lt;IIPCheckService, IPCheckService&gt;();مرحله سه: استفاده از سرویس در یک Middlewareسرویس که آماده شد کافیه یه Middleware تعریف کنیم و از سرویس توی اون استفاده کنیم. کد Middleware من این شکلی شد. https://gist.github.com/tarafdarmansour/fafc565a9383e063d4a958c85bbc979a#file-ipcheckmiddleware-cs اینکه MIddleware ها چی هستن و چه ساختاری دارن و چجوری فراخونی میشن و با چه ترتیبی رو از اینجا بخونید. من زیاد نمی خوام سرتون رو درد بیارم.حالا برای اینکه MIddleware ما برای همه درخواست ها اجرا بشه باید کد زیر رو به Program.cs اضافه کنید.app.UseMiddleware&lt;IpCheckMiddleware&gt;();اگه خواستید فقط برای بعضی متد ها اجرا بشه هم یه روش هایی وجود داره هم میتونید از FilterAttribute ها استفاده کنید.در آخر یه نکته رو باید بهش توجه کنیم که برای داشتن IP صحیح کاربر و مطمئن بودن از اون باید تکه کد زیر رو توی Program.cs قرار بدید.خب حالا تقریبا همه کارها رو انجام دادیم.میتونید برای تست روی سیستم خودتون اجراش کنید و مقدار BlackListCheck رو true قرار بدید. لازمه IP سیستمون رو که معمولا 1:: هست توی BlackList قرار بدید. در اولین اجرا این صفحه رو میبینید:حالا اگه IP تون رو از اون لیست خارج کنید باید صفحه swagger رو ببینید. برای تست بهتر باید برنامه رو روی یه سرور بذارید و بعضی IP ها رو ببندید و بعضی ها رو باز بذارید تا تست قشنگ تری داشته باشید.یه نکته بگم که بدون سرور هم میشه با ابزاری مثل ngrok اما چون تحریم هستیم بهش دسترسی نداریم. اگه خارج از ایران هستید میتونید برنامتون رو اجرا کنید و به وسیله ngrok از اینترنت بهش دسترسی داشته باشید.سورس این پروژه رو روی گیت هاب اینجا گذاشتم.خوشحال میشم هر نظری در مورد مقاله داشتید بهم بگید. به امید خدا توی نسخه های بعدی این برنامه سراغ روش های دیگه انجام این کار میریم.فعلا.</description>
                <category>منصور طرفدار</category>
                <author>منصور طرفدار</author>
                <pubDate>Thu, 16 Jun 2022 19:22:06 +0430</pubDate>
            </item>
            </channel>
</rss>