DotNetZoom
2.96K subscribers
342 photos
18 videos
36 files
606 links
DotNetZoom
💎 Everything about .NET

ارتباط با مدیر و تبلیغات آگهی استخدام:
@mjebrahimi

لینک گروه ASPNET Core:
https://t.iss.one/+ufG25x7lVFgyYTNk
Download Telegram
#EntityFramework, #EFCore, #LazyLoading

همان طور که میدانیم در اِنتیتی فریم ورک، سه روش برای لود نمودنِ اطلاعات مربوط به یک اِنتیتی وجود دارد. به طور کلی، بر اساسِ این نیاز که آیا برای دریافتِ اطلاعاتِ بینِ جداول، باید Join صورت پذیرد یا خیر، نوع واکشی را مشخص میکنیم.
برای این منظور سه الگوی مشترک بین ORM ها به قرار زیر است:
- Eager loading
- Explicit loading
- Lazy loading
بسته به نوع نیاز ممکن است هر یک از روش های فوق مورد استفاده قرار گیرند.

در EF Core هم به صورت مشابه، رویه به همین منوال برقرار است، با این تفاوت که فعلا خبری از Lazy loading نیست و باید به طور واضح، اِنتیتی فریمورک را نسبت به لود دیتای مورد نیاز از طریق include آگاه نمود.

var blogs = context.Blogs

    .Include(blog => blog.Posts)

    .ToList();


هم چنین واکشی اطلاعات تا چند سطح از طریق متد ThenInclude باید انجام شود و برخلاف EF6 که واکشی چند سطحی در متد include و به وسیله ارسال پارامتر از نوع استرینگ (Include("Posts.Comments")) صورت میگرفت در نسخه ی کور باید از متد ThenInclude استفاده گردد:

var blogs = context.Blogs

    .Include(blog => blog.Posts)

        .ThenInclude(post => post.Comments)

    .ToList();


فیلم زیر در channel 9 از سری مجموعه های ASP .NET Monsters Episode این قابلیت را به صورت عملی شرح میدهد:
https://channel9.msdn.com/Series/aspnetmonsters/ASPNET-Monsters-Episode-57-Loading-Related-Data-with-Entity-Framework-Core

@IranAspMvc
#AspNetCore, #MVC

ا ASP .NET Core یا MVC5 ؟

با انتشارِ نسخه ی نهاییِ دات نت کور، امکانات، مزایا و پرفرمنس عالی و فوق العاده ی آن از یک طرف و عدم تطابقِ برخی از ابزارها و کتابخانه ها با این فریمورک جدید و همچنین تغییراتِ مکرر و نرسیدن به یک ثباتِ نسبی از طرف دیگر، همواره توسعه دهندگان را برای شروع یک پروژه ی جدید بر سر دو راهیِ انتخاب بین MVC 5 و ASP .NET Core قرار داده است. موضوعی که اخیرا در سایت ها و وبلاگ ها بیشتر به آن پرداخته میشود و سعی می شود با بررسی نقاط قوت و ضعف هر یک، یک تصمیم گیری صحیح را رقم زد.

اما در نهایت کدام گزینه برای توسعه ی یک وب اپلیکیشن جدید، بهتر خواهد بود؟ MVC5 یا ASP .NET Core ؟

این سوالی است که یکی از مخاطبین Jeff Fritz طی ایمیلی از وی پرسیده است و در مورد شروع یک وب اپلیکشن جدید SaaS با یکی از این دو تکنولوژی خواهان انتخاب بهترین گزینه شده است.

در لینک زیر Jeff Fritz با هوشمندی و در نظر گرفتن شرایط مختلف، به این سوال پاسخ میدهد:

https://www.jeffreyfritz.com/2016/08/should-i-use-asp-net-core-or-mvc-5/

@IranAspMvc
Forwarded from طراحی و توسعه وب
🤔 چطور تو React.js شاخ بشیم و شاخِ Flux رو بشکنیم؟

♨️ https://goo.gl/4uISMT


#Front_end #JS #ReactJS

@WEBLY
Forwarded from MyPAD
کاملترین لیست #گروه های برنامه نویسی (سری اول)

🔵 Asp .Net
—---------------------------------------
l گروه تخصصی AspNet MVC
l Asp .Net Developers
l Iran ASP .Net Community
l DNN - Official

🔵 C# & .Net
—---------------------------------------
l C# Tutorial
l Devsharp
l .NET Discussion Group
l .NET Developers
l گروه برنامه نویسی #C
l Xamarin .Net

🔵 SQL Server
—---------------------------------------
l گروه تخصصی Sql Server
l SQL Server

🔵 PHP
—---------------------------------------
l PHP & Frameworks
l PHP Programmers
l لاراول / Laravel
l CodeIgniter
l Symfony Framework
l Yii2 Framework
l Laratalks (Laravel User Group)
l MySQL RDBMS

🔵 WordPress
—---------------------------------------
l Wordpress وردپرس
l WordPress
l چت وردپرس

🔵 Joomla
—---------------------------------------
l گروه طراحان وب جوملا و افزونه های رایگان
l _____جوملا_____

🔵 Html-Css-Javascript
—---------------------------------------
l HTML CSS JAVASCRIPT
l CSS & Frameworks
l گروه طراحی وب(html-css-js-php)

🔵 JavaScript & NodeJs
—---------------------------------------
l Javascript Experts
l JavaScript
l NodeJS and Family
l NodeJS Talk

جهت تکمیل این لیست، لینک های خودتون رو به @mj_ebrahimi ارسال کنید@
@IranAspMvc
#AspNetBoilerplate, #Template, #Architecture, #Framework, #AspNetMvc, #AspNetCore

ASP .NET Boilerplate

یکی از سخت ترین کارها در توسعه ی نرم افزار، آغاز و پایه ریزی یک اپلیکیشن جدید است. پیاده سازی معماری، اضافه نمودن ابزارها و تنظیماتِ مربوطه، پایه ریزی لایه هایِ مختلف و ... همه و همه کارهایی است که برای ایجاد هر اپلیکیشن جدید "تکرار" می کنیم.

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


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

مخصوصا اینکه اگر بدانید این فریم ورک، از آخرین تکنولوژی ها (ASP .NET Core)، بِست پِرَکتیس ها، پرکاربردترن روش های توسعه (Domain Driven Design) ، تزریق وابستگی، معروف ترین ORM ها (EF و NHibernate) ، قابلیت های اعتبارسنجی، ثبت وقایع کاربران، مدیریت خطاها و ... به صورت تو کار بهره میبرد و همچنین امکان انتخاب بین Single-Page (با انگولار) و یا Multi-Page هم دارید.

از دیگر مزایای بسیار مهم این فریم ورک، داشتن راهنما و داکیومنت بسیار غنی برای درک بخش های مختلف و نحوه ی کار با آن است.

لینک زیر سایت اختصاصی این فریم ورک است:
https://www.aspnetboilerplate.com/

مطالب بیشتر برای شروع به کار را نیز می توانید از طریق این لینک مطالعه کنید:
https://www.codeproject.com/Articles/768664/Introduction-to-ASP-NET-Boilerplate

@IranAspMvc
#EFCore, #AspNetCore, #EntityFramework

یکی از ویژگی های جالب و البته مفید در نسخه ی جدید اِنتیتی فریمورک (Entity Framework Core) ، اضافه شدن InMemory provider به لیست پروایدرهای آن است. بدین معنی که اِنتیتی فریمورک این قابلیت را دارد که با دیتابیسِ درون حافظه ای نیز کار کند.

با استفاده از این پروایدر میتوانیم بدون تغییرِ کد های برنامه و یا ایجاد کانتکست جدا، برای واحدهای مختلف نرم افزارِ خود، تست های کاربردی بنویسیم.

لینک زیر از این قابلیت در یک برنامه ASP .NET Core API بهره برده است و نشان داده که پس از تستِ متدهای مورد نیاز از طریق دیتابیسِ درون حافظه ای و آماده شدن نرم افزار، فقط با تغییر یک خط کد، امکان سوویچ به پروایدرهای دیگر و یک دیتابیس واقعی مانند SQL Server وجود دارد.

https://stormpath.com/blog/tutorial-entity-framework-core-in-memory-database-asp-net-core

اما در روشی بهتر و مخصوصا در سناریوهایی که نیاز به نوشتن آزمون های واحد (unit testing) برای اجزاء مختلف نرم افزار وجود دارد، برای استفاده از این پروایدر، کافی است در کلاس کانتکست، یک سازنده با پارامتر ورودی DbContextOptions<TContext> قرار داده و در زمانِ ایجادِ کانتکست، در متدهایِ تست، نوع پروایدر را InMemory تعیین کرد.
در این صورت میتوان برای هر کلاس و یا متدِ تست، دیتابیس درون حافظه ای خود را نیز داشت و کنترل بهتری برای تعیین محدوده ی آن دیتابیس اعمال نمود.

https://docs.efproject.net/en/latest/miscellaneous/testing.html

@IranAspMvc
#Xamarin, #CSharp, #Template, #Project

بعد از خرید زامارین توسط مایکروسافت، علاوه بر رایگان و سورس باز شدن این محصول، همانطور که پیش بینی می شد، بهبودهای خوبی نیز از نظر کیفیت و امکانات در آن حاصل شد و فراگیریِ بیش از پیش را برای آن رقم زد. به گونه ای که بسیاری از توسعه دهندگان و کارشناسان، آینده ی بهتری را نیز طی سالهای آتی برای آن پیش بینی می کنند.
این عوامل سبب شده است تا توجه توسعه دهندگانِ بیشتری جلبِ این محصول شود و در نتیجه ی آن، منابع غنی تر و نیز پروژه های سورس بازِ بیشتری برای آن توسعه یابد. موضوعی که شاید تا چند ماهِ گذشته، یکی از علل ملامت این محصول توسط منتقدان بود، یعنی کمبود سورس های آماده جهت تسریع در امر توسعه.
البته هنوز هم این منابع در قیاس با فراوانیِ منابع و کدهای های نِیتیو و مختصِ پلتفرم ها ( مانند جاوا و سوئیفت)، قابلیت رقابت را ندارد، اما در مقابلِ مزایای عمده ای که در اختیار برنامه نویس می گذارد و ذخیره ی زمانی و نیروی انسانی و نیز آینده ی درخشان آن، میتوان از این ضعف نیز چشم پوشید.

یکی از اقدامات خوبی که در این راستا صورت گرفته، توسعه ی چند اپلیکیشنِ سورس باز و با امکانات متداول و عمومی است تا بسیاری از نیازهای ابتدایی و مشترک توسعه دهندگان را پوشش دهد. سورس کدِ این اپلیکیشن ها در گیت هاب قرار گرفته و نه تنها برای آموزش بلکه برای توسعه ی پروژه های مشابه، آغازی سریع را رقم خواهد زد.


لینک زیر به معرفی اجمالیِ این پروژه ها و خصوصیات و امکانات آنها می پردازد. همچنین امکان دانلود پروژه ها و یا مطالعه و مرور کدها در گیت هاب وجود دارد.
نکته ی جالبِ توجه اینکه در بخش اطلاعات فنی، میزان اشتراک کدها هنگام توسعه با Xamarin.Forms به صورت درصدی برای هر پروژه مشخص شده و همانطور که انتظار می رود، بسته به نوع اپلیکیشن این مقدار متفاوت است و در یکی از پروژه ها (پروژه ی My Shoppe) این مقدار به 100% رسیده است!

https://goo.gl/aB3tQu

@IranAspMvc
#Audit , #ActionFilter , #AspNetMvc , #AOP , #Interceptor , #IoC

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

روش های مختلفی برای پیاده سازیِ ثبت وقایع کاربران در سیستم وجود دارد، اما شاید اولین موردی که برای پیاده سازی به چشم بیاید، تکراری بودنِ این عملیات در بخش های مختلفِ سیستم است. اگر با برنامه نویسی AOP یا Aspect oriented programming آشنایی داشته باشید، می دانید که برای جلوگیری از پراکندگی و نوشتن کدهای تکراری، بهتر است که به صورت یک ماژول واحد با این قسمت برخورد شود، و به عبارت دیگر، کدهای این بخش در یک aspect مستقل ارائه و استفاده شوند. پیاده سازی آن نیز عموما از طریق تزریق وابستگی ها و Interceptor ها صورت می پذیرد، خبر خوب اینکه اگر از ASP .NET MVC استفاده می کنید، خوشبختانه این قابلیت به صورت توکار وجود دارد و "اکشن فیلترها" همان نقش Interceptor های AOP رو بازی می کنند، چون میدانیم کار نهاییِ این فیلترها نیز تزریق کدهایی است که باید پیش و پس از اجرای یک اکشن متد،‌ اجرا شوند.

بنابراین تنها کاری که برای این منظور باید انجام شود، تعریف یک اکشن فیلترِ سفارشی و مزین کردن اکشن ها و یا کنترلر هایی است که میخواهیم وقایع آن ها ثبت شود. اطلاعاتی که میتوانیم به ازای هر اکشن ثبت کنیم نیز شامل نام کاربری، نام کنترلر و اکشن ملاقات شده، مدت زمان اجرای هر اکشن، آدرس آی پی و ... می باشد.

مقاله های زیر به صورت مفصل به پیاده سازی این موارد می پردازید. سورس کد آن نیز برای دانلود موجود است.

Part1: https://rion.io/2013/03/03/implementing-audit-trails-using-asp-net-mvc-actionfilters/

Part2: https://rion.io/2013/04/15/creating-advanced-audit-trails-using-actionfilters-in-asp-net-mvc/

این لینک نیز سورس کدِ اکشن فیلتر سفارشی Audit (ذکر شده در مقاله ی فوق) است که با جزئیات کامل آن میتوانید مشاهده و استفاده نمایید.

https://github.com/rionmonster/Advanced-Auditing/blob/7e46ece14e0241ec2ca34ec5fa42d71bb48e3b2a/Advanced%20Auditing/Models/AuditingModels.cs

@IranAspMvc
#Xamarin , #Ionic , #Infographic

اینفوگرافیک جالب مقایسه بین زامارین و آیونیک

منیع:
https://goo.gl/Q1K7rP

@IranAspMvc
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی در حال کدنویسی یکی مزاحممون میشه ... 😂😂

🌐 مرجع تخصصی برنامه نویسان
🆔 @Barnamenevisan_org
This media is not supported in your browser
VIEW IN TELEGRAM
من و باگ های پروژه ... 😒

🌐 مرجع تخصصی برنامه نویسان
🆔 @Barnamenevisan_org
#DDD , #CQRS , #event_sourcing , #event_storming

Awesome Domain-Driven Design

لیستی از منابع و لینک های مفید مرتبط با DDD ، CQRS ، event sourcing و event storming شامل کتاب، پروژه، وبلاگ، ویدئو، پادکست، کتابخانه، فریم ورک و ...

https://github.com/heynickc/awesome-ddd
#DotNet , #Awesome_DotNet

سایت dotnet.libhunt.com یکی از مراجع بسیار خوب جهت یافتنِ بهترین منابع و کتابخانه های دات نت است. این مجموعه که بر اساس لیست Awesome .NET رسمیِ موجود در گیت هاب گرداوری شده است، دسته بندی و مقایسه ی مناسبی را جهت تسهیل و سرعت بخشیدن در امر انتخابِ مناسب ترین کتابخانه فراهم کرده است و تا به اینجا شامل 478 پروژه در 81 گروه مختلف می باشد.

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

به عنوان مثال اگر به دنبال پیدا کردن یک CMS به روز و محبوب هستید، پس از رفتن به گروه CMS ها خواهید دید که مقایسه ی نموداری از جهت محبوبیت و فعال بودن بین هشت CMS مطرح انجام گرفته که در بین آنها Umbraco با میران محبوبیت 9.5 و فعالیت 9.8 (منظور از فعال بودن تعداد بیشتر کامیت ها در روزهای اخیر در گیت هاب است) در وضعیت بهتری از بقیه قرار گرفته و بعد از آن Orchard بیشترین میزان محبوبیت را دارد و محبوبیت DotNetNuke به مراتب کمتر از این دو است، هرچند درصد فعالیت آن به نسبت بالاست. و یا اگر به صفحه ی مقایسه ی آنها بروید نمودارهای بیشتری در مورد میزان محبوبیت آنها در نتیجه ی جست و جوهای انجام شده از طریق گوگل در 12 ماه اخیر را میتوانید مشاهده کنید.

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

@IranAspMvc
روز جهانی برنامه نویس مبارک 🌹 👍😎💪
@IranAspMvc
#NetCore , #AspNetCore , #EFCore

آپدیت جدید برای دات نت کور (NET Core 1.0.1.) منتشر شد.

این اولین آپدیت LTS (Long Term Support) برای NET Core 1.0. است و بسیاری از باگ ها و مشکلات موجود در نسخه ی قبل، در آن رفع شده است. همچنین آپدیت های جدید برای ASP .NET Core و Entity Framework Core نیز منتشر شدند.

بدیهی است با توجه به عمده بهبودهای صورت گرفته در این نسخه و به دنبال آن امنیت و قابلیتِ اطمینانِ بیشتر، نصب آن و ارتقاءِ پروژه های نوشته شده با نسخه ی قبل، امری ضروری خواهد بود.

اطلاعات بیشتر در مورد تغییرات صورت گرفته و نحوه ی نصب NET Core 1.0.1. را از طریق لینک زیر مطالعه نمایید:

https://blogs.msdn.microsoft.com/dotnet/2016/09/13/announcing-september-2016-updates-for-net-core-1-0/

@IranAspMvc
#Angular2

نسخه نهایی Angular 2.0.0 منتشر شد.
بالاخره بعد از مدتی نسبتا طولانی و انتشار نسخ متعدد RC، نسخه نهایی و پایدار انگیولار 2 منتشر شد.

https://angularjs.blogspot.nl/2016/09/angular2-final.html

@IranAspMvc
#Javascript , #AngularJs , #ReactJs

سایتی مفید برای مقایسه ی جامع کتابخانه های جاوا اسکریپتی شامل تعداد اِستار در گیت هاب، تعداد دانلود در هفته ی اخیر، تعداد کامیت ها در دو هفته ی آخر و ...
https://starratio.js.org/#/?_k=oh2x6y

مقایسه انگیولار و ری اَکت در این سایت:

https://starratio.js.org/#/compare/tiles?keys=angular%2Fangular.js%2Cfacebook%2Freact&_k=ko8bu7

@IranAspMvc
#Angular2 , #AngularJs

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

اما تعدد این منایع و مراجع باعث سردرگمی و ایجاد سوال برای بسیاری از تازه کاران شده است که "از کجا باید شروع کنیم؟".

در لینک زیر، نگارنده ی مقاله پس از بررسی منابع مختلف، در نهایت دو مورد از بهترین مقالات مفید و کاربردی برای فراگیری 4 مفهوم پایه و مهمِ انگیولار 2 را معرفی می کند و در پایان نیز تاکید به مطالعه ی چندباره ی این مقالات دارد و معتقد است پس از آن می توانید شروع به ساختن اولین برنامه ی انگیولار 2 خود کنید!

https://weblogs.asp.net/lduveau/learning-angular-2-where-to-start

@IranAspMvc