#EntityFramework, #EFCore, #LazyLoading
همان طور که میدانیم در اِنتیتی فریم ورک، سه روش برای لود نمودنِ اطلاعات مربوط به یک اِنتیتی وجود دارد. به طور کلی، بر اساسِ این نیاز که آیا برای دریافتِ اطلاعاتِ بینِ جداول، باید Join صورت پذیرد یا خیر، نوع واکشی را مشخص میکنیم.
برای این منظور سه الگوی مشترک بین ORM ها به قرار زیر است:
- Eager loading
- Explicit loading
- Lazy loading
بسته به نوع نیاز ممکن است هر یک از روش های فوق مورد استفاده قرار گیرند.
در EF Core هم به صورت مشابه، رویه به همین منوال برقرار است، با این تفاوت که فعلا خبری از Lazy loading نیست و باید به طور واضح، اِنتیتی فریمورک را نسبت به لود دیتای مورد نیاز از طریق include آگاه نمود.
هم چنین واکشی اطلاعات تا چند سطح از طریق متد
فیلم زیر در channel 9 از سری مجموعه های ASP .NET Monsters Episode این قابلیت را به صورت عملی شرح میدهد:
https://channel9.msdn.com/Series/aspnetmonsters/ASPNET-Monsters-Episode-57-Loading-Related-Data-with-Entity-Framework-Core
@IranAspMvc
همان طور که میدانیم در اِنتیتی فریم ورک، سه روش برای لود نمودنِ اطلاعات مربوط به یک اِنتیتی وجود دارد. به طور کلی، بر اساسِ این نیاز که آیا برای دریافتِ اطلاعاتِ بینِ جداول، باید 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
Channel 9
ASP.NET Monsters #57: Loading Related Data with Entity Framework Core
Entity Framework Core doesn't support lazy loading yet which means you need to explicitly tell Entity Framework what related data to include when querying for an entity. In today's episode, Monster Da
#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
ا 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
Fritz on the Web
Should I Use ASP.NET Core or MVC 5?
I received a question this morning in my email that I thought I would answer here so that everyone can have the benefit of my answer: “I’m planning to build a new web application in a s…
Forwarded from طراحی و توسعه وب
🤔 چطور تو React.js شاخ بشیم و شاخِ Flux رو بشکنیم؟
♨️ https://goo.gl/4uISMT
#Front_end #JS #ReactJS
—
@WEBLY
♨️ 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
🔵 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
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
CodeProject
Introduction to ASP.NET Boilerplate
ASP.NET Boilerplate is a starting point for new modern web applications using best practices and most popular tools.
#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) برای اجزاء مختلف نرم افزار وجود دارد، برای استفاده از این پروایدر، کافی است در کلاس کانتکست، یک سازنده با پارامتر ورودی
در این صورت میتوان برای هر کلاس و یا متدِ تست، دیتابیس درون حافظه ای خود را نیز داشت و کنترل بهتری برای تعیین محدوده ی آن دیتابیس اعمال نمود.
https://docs.efproject.net/en/latest/miscellaneous/testing.html
@IranAspMvc
یکی از ویژگی های جالب و البته مفید در نسخه ی جدید اِنتیتی فریمورک (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
Stormpath User Identity API
Tutorial: Using Entity Framework Core as an In-Memory Database for ASP.NET Core - Stormpath User Identity API
Rapidly prototype and test new ideas for your REST API with Entity Framework Core as your ASP.NET Core in-memory database.
#Xamarin, #CSharp, #Template, #Project
بعد از خرید زامارین توسط مایکروسافت، علاوه بر رایگان و سورس باز شدن این محصول، همانطور که پیش بینی می شد، بهبودهای خوبی نیز از نظر کیفیت و امکانات در آن حاصل شد و فراگیریِ بیش از پیش را برای آن رقم زد. به گونه ای که بسیاری از توسعه دهندگان و کارشناسان، آینده ی بهتری را نیز طی سالهای آتی برای آن پیش بینی می کنند.
این عوامل سبب شده است تا توجه توسعه دهندگانِ بیشتری جلبِ این محصول شود و در نتیجه ی آن، منابع غنی تر و نیز پروژه های سورس بازِ بیشتری برای آن توسعه یابد. موضوعی که شاید تا چند ماهِ گذشته، یکی از علل ملامت این محصول توسط منتقدان بود، یعنی کمبود سورس های آماده جهت تسریع در امر توسعه.
البته هنوز هم این منابع در قیاس با فراوانیِ منابع و کدهای های نِیتیو و مختصِ پلتفرم ها ( مانند جاوا و سوئیفت)، قابلیت رقابت را ندارد، اما در مقابلِ مزایای عمده ای که در اختیار برنامه نویس می گذارد و ذخیره ی زمانی و نیروی انسانی و نیز آینده ی درخشان آن، میتوان از این ضعف نیز چشم پوشید.
یکی از اقدامات خوبی که در این راستا صورت گرفته، توسعه ی چند اپلیکیشنِ سورس باز و با امکانات متداول و عمومی است تا بسیاری از نیازهای ابتدایی و مشترک توسعه دهندگان را پوشش دهد. سورس کدِ این اپلیکیشن ها در گیت هاب قرار گرفته و نه تنها برای آموزش بلکه برای توسعه ی پروژه های مشابه، آغازی سریع را رقم خواهد زد.
لینک زیر به معرفی اجمالیِ این پروژه ها و خصوصیات و امکانات آنها می پردازد. همچنین امکان دانلود پروژه ها و یا مطالعه و مرور کدها در گیت هاب وجود دارد.
نکته ی جالبِ توجه اینکه در بخش اطلاعات فنی، میزان اشتراک کدها هنگام توسعه با Xamarin.Forms به صورت درصدی برای هر پروژه مشخص شده و همانطور که انتظار می رود، بسته به نوع اپلیکیشن این مقدار متفاوت است و در یکی از پروژه ها (پروژه ی My Shoppe) این مقدار به 100% رسیده است!
https://goo.gl/aB3tQu
@IranAspMvc
بعد از خرید زامارین توسط مایکروسافت، علاوه بر رایگان و سورس باز شدن این محصول، همانطور که پیش بینی می شد، بهبودهای خوبی نیز از نظر کیفیت و امکانات در آن حاصل شد و فراگیریِ بیش از پیش را برای آن رقم زد. به گونه ای که بسیاری از توسعه دهندگان و کارشناسان، آینده ی بهتری را نیز طی سالهای آتی برای آن پیش بینی می کنند.
این عوامل سبب شده است تا توجه توسعه دهندگانِ بیشتری جلبِ این محصول شود و در نتیجه ی آن، منابع غنی تر و نیز پروژه های سورس بازِ بیشتری برای آن توسعه یابد. موضوعی که شاید تا چند ماهِ گذشته، یکی از علل ملامت این محصول توسط منتقدان بود، یعنی کمبود سورس های آماده جهت تسریع در امر توسعه.
البته هنوز هم این منابع در قیاس با فراوانیِ منابع و کدهای های نِیتیو و مختصِ پلتفرم ها ( مانند جاوا و سوئیفت)، قابلیت رقابت را ندارد، اما در مقابلِ مزایای عمده ای که در اختیار برنامه نویس می گذارد و ذخیره ی زمانی و نیروی انسانی و نیز آینده ی درخشان آن، میتوان از این ضعف نیز چشم پوشید.
یکی از اقدامات خوبی که در این راستا صورت گرفته، توسعه ی چند اپلیکیشنِ سورس باز و با امکانات متداول و عمومی است تا بسیاری از نیازهای ابتدایی و مشترک توسعه دهندگان را پوشش دهد. سورس کدِ این اپلیکیشن ها در گیت هاب قرار گرفته و نه تنها برای آموزش بلکه برای توسعه ی پروژه های مشابه، آغازی سریع را رقم خواهد زد.
لینک زیر به معرفی اجمالیِ این پروژه ها و خصوصیات و امکانات آنها می پردازد. همچنین امکان دانلود پروژه ها و یا مطالعه و مرور کدها در گیت هاب وجود دارد.
نکته ی جالبِ توجه اینکه در بخش اطلاعات فنی، میزان اشتراک کدها هنگام توسعه با Xamarin.Forms به صورت درصدی برای هر پروژه مشخص شده و همانطور که انتظار می رود، بسته به نوع اپلیکیشن این مقدار متفاوت است و در یکی از پروژه ها (پروژه ی My Shoppe) این مقدار به 100% رسیده است!
https://goo.gl/aB3tQu
@IranAspMvc
Xamarin
Build Apps Quickly using Prebuilt App Templates - Xamarin
Xamarin’s app builder comes with prebuilt mobile app templates. Save time and start building your next app using Xamarin’s collection of prebuilt apps.
#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
امروزه در بسیاری از سیستم های نرم افزاری و وب سایت ها، مخصوصا سیستم هایی که اطلاعات حساسی را نگهداری می کنند، ثبت فعالیت ها و وقایعِ کاربران از اهمیت بالایی برخوردار است. اینکه چه کاربرانی و در چه زمان هایی وارد سیستم شده اند، به چه مکان هایی از سیستم رفته اند، چه عملیاتی را در سیستم انجام داده اند و .... . البته ثبت همه ی این موارد در تمام سیستم ها لازم نیست و بسته به میزانِ حساسیتِ سیستم، حجم این لاگ ها می تواند متغیر باشد.
روش های مختلفی برای پیاده سازیِ ثبت وقایع کاربران در سیستم وجود دارد، اما شاید اولین موردی که برای پیاده سازی به چشم بیاید، تکراری بودنِ این عملیات در بخش های مختلفِ سیستم است. اگر با برنامه نویسی 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
Rion.IO
Implementing Audit Trails using ASP.NET MVC ActionFilters
Accountability is always important, especially when dealing with systems that contain sensitive data. It can often be helpful to have an audit trail that will allow you to go back and retrace the steps that a user took, what they saw, where they went and…
#AngularJs #Angular2 #Tutorial
معرفی Angular 2 به زبان ساده و روان. آغازی مناسب برای تازه کاران.
یکی از بهترین ویدئوها در رابطه انگیولار 2 :
https://www.youtube.com/watch?v=_-CD_5YhJTA
@IranAspMvc
معرفی Angular 2 به زبان ساده و روان. آغازی مناسب برای تازه کاران.
یکی از بهترین ویدئوها در رابطه انگیولار 2 :
https://www.youtube.com/watch?v=_-CD_5YhJTA
@IranAspMvc
YouTube
Angular 2 Tutorial for Beginners: Learn Angular 2 from Scratch | Mosh
🔥Get the COMPLETE COURSE (60% OFF - LIMITED TIME): https://programmingwithmosh.com/courses/angular
Angular 2, now Angular 4, is a very hot topic. This Angular 2 tutorial teaches you the fundamentals of Angular.
SUBSCRIBE FOR MORE VIDEOS!
https://www…
Angular 2, now Angular 4, is a very hot topic. This Angular 2 tutorial teaches you the fundamentals of Angular.
SUBSCRIBE FOR MORE VIDEOS!
https://www…
#Xamarin , #Ionic , #Infographic
اینفوگرافیک جالب مقایسه بین زامارین و آیونیک
منیع:
https://goo.gl/Q1K7rP
@IranAspMvc
اینفوگرافیک جالب مقایسه بین زامارین و آیونیک
منیع:
https://goo.gl/Q1K7rP
@IranAspMvc
#DDD , #CQRS , #event_sourcing , #event_storming
Awesome Domain-Driven Design
لیستی از منابع و لینک های مفید مرتبط با DDD ، CQRS ، event sourcing و event storming شامل کتاب، پروژه، وبلاگ، ویدئو، پادکست، کتابخانه، فریم ورک و ...
https://github.com/heynickc/awesome-ddd
Awesome Domain-Driven Design
لیستی از منابع و لینک های مفید مرتبط با DDD ، CQRS ، event sourcing و event storming شامل کتاب، پروژه، وبلاگ، ویدئو، پادکست، کتابخانه، فریم ورک و ...
https://github.com/heynickc/awesome-ddd
GitHub
GitHub - heynickc/awesome-ddd: A curated list of Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), Event…
A curated list of Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), Event Sourcing, and Event Storming resources - 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
سایت dotnet.libhunt.com یکی از مراجع بسیار خوب جهت یافتنِ بهترین منابع و کتابخانه های دات نت است. این مجموعه که بر اساس لیست Awesome .NET رسمیِ موجود در گیت هاب گرداوری شده است، دسته بندی و مقایسه ی مناسبی را جهت تسهیل و سرعت بخشیدن در امر انتخابِ مناسب ترین کتابخانه فراهم کرده است و تا به اینجا شامل 478 پروژه در 81 گروه مختلف می باشد.
در واقع، هدف اصلی از راه اندازی این سایت، کمک به توسعه دهندگان برای یافتنِ مناسب ترین نرم افزار ها و کتابخانه های مورد نیاز، جهت انجام هر چه بهتر پروژه های نرم افزاری است. از ویژگی های خوب و مفید این سایت، مشخص کردنِ میزان "محبوبیت" و "فعالیت" این پروژه هاست، که این دو معیار برای هر پروژه بین صفر تا 10 متغیر است.
علاوه بر آن درصفحه ی هر کتابخانه، لیستی از پروژه های مشابه در همان گروه، قرار گرفته که لینکی مجزا جهت مقایسه ی بین تک تک آنها نیز در نظر گرفته شده است و از این طریق می توان تصمیم گیری بهتری جهت انتخابِ مناسب ترین گزینه بین گزینه های مشابه را رقم زد.
به عنوان مثال اگر به دنبال پیدا کردن یک CMS به روز و محبوب هستید، پس از رفتن به گروه CMS ها خواهید دید که مقایسه ی نموداری از جهت محبوبیت و فعال بودن بین هشت CMS مطرح انجام گرفته که در بین آنها Umbraco با میران محبوبیت 9.5 و فعالیت 9.8 (منظور از فعال بودن تعداد بیشتر کامیت ها در روزهای اخیر در گیت هاب است) در وضعیت بهتری از بقیه قرار گرفته و بعد از آن Orchard بیشترین میزان محبوبیت را دارد و محبوبیت DotNetNuke به مراتب کمتر از این دو است، هرچند درصد فعالیت آن به نسبت بالاست. و یا اگر به صفحه ی مقایسه ی آنها بروید نمودارهای بیشتری در مورد میزان محبوبیت آنها در نتیجه ی جست و جوهای انجام شده از طریق گوگل در 12 ماه اخیر را میتوانید مشاهده کنید.
گرچه شاید این میزان اطلاعات و مقایسات برای انتخاب قطعی یک پروژه یا کتابخانه کافی نباشد، اما دید کلیِ خوبی در مورد دو معیارِ مهمِ محبوبیت و به روز بودنِ آنها خواهد داد، که در نوع خود بسیار ارزشمند است و می تواند شروعی برای بررسی های بیشتر باشد.
@IranAspMvc
Libhunt
Awesome .NET | LibHunt
Your go-to .NET Toolbox. A collection of Awesome .NET libraries, tools & frameworks. 1195 projects organized into 114 categories.
#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
آپدیت جدید برای دات نت کور (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
Microsoft
Announcing September 2016 Updates for .NET Core 1.0
A first-hand look from the .NET engineering teams
#Angular2
نسخه نهایی Angular 2.0.0 منتشر شد.
بالاخره بعد از مدتی نسبتا طولانی و انتشار نسخ متعدد RC، نسخه نهایی و پایدار انگیولار 2 منتشر شد.
https://angularjs.blogspot.nl/2016/09/angular2-final.html
@IranAspMvc
نسخه نهایی Angular 2.0.0 منتشر شد.
بالاخره بعد از مدتی نسبتا طولانی و انتشار نسخ متعدد RC، نسخه نهایی و پایدار انگیولار 2 منتشر شد.
https://angularjs.blogspot.nl/2016/09/angular2-final.html
@IranAspMvc
angularjs.blogspot.nl
Angular, version 2: proprioception-reinforcement
Today, at a special meetup at Google HQ, we announced the final release version of Angular 2, the full-platform successor to Angular 1. ...
#Javascript , #AngularJs , #ReactJs
سایتی مفید برای مقایسه ی جامع کتابخانه های جاوا اسکریپتی شامل تعداد اِستار در گیت هاب، تعداد دانلود در هفته ی اخیر، تعداد کامیت ها در دو هفته ی آخر و ...
https://starratio.js.org/#/?_k=oh2x6y
مقایسه انگیولار و ری اَکت در این سایت:
https://starratio.js.org/#/compare/tiles?keys=angular%2Fangular.js%2Cfacebook%2Freact&_k=ko8bu7
@IranAspMvc
سایتی مفید برای مقایسه ی جامع کتابخانه های جاوا اسکریپتی شامل تعداد اِستار در گیت هاب، تعداد دانلود در هفته ی اخیر، تعداد کامیت ها در دو هفته ی آخر و ...
https://starratio.js.org/#/?_k=oh2x6y
مقایسه انگیولار و ری اَکت در این سایت:
https://starratio.js.org/#/compare/tiles?keys=angular%2Fangular.js%2Cfacebook%2Freact&_k=ko8bu7
@IranAspMvc
starratio.js.org
Handy Tool to Compare Javascript Open-source Projects
Compare open-source projects by npm downloads, GitHub stars and other stats.
#Angular2 , #AngularJs
در طی مدت زمان چند ماهه از انتشار نگارش های اولیه ی انگیولار 2 تا به حال که بیش از یک هفته از انتشار نسخه ی نهایی و پایدار آن می گذرد، منابع و مقالات زیادی در سایت ها و وبلاگ های مختلف، جهت آموزش قرار داده شده اند. منابعی که برخی از پایه و به صورت مفصل به توضیح موارد جدید در این نسخه پرداخته و برای تازه کاران بسیار مفید هستند و بعضی نیز به صورت کلی تر و بیشتر به مباحث عمیق و پیشرفته اشاره کرده اند.
اما تعدد این منایع و مراجع باعث سردرگمی و ایجاد سوال برای بسیاری از تازه کاران شده است که "از کجا باید شروع کنیم؟".
در لینک زیر، نگارنده ی مقاله پس از بررسی منابع مختلف، در نهایت دو مورد از بهترین مقالات مفید و کاربردی برای فراگیری 4 مفهوم پایه و مهمِ انگیولار 2 را معرفی می کند و در پایان نیز تاکید به مطالعه ی چندباره ی این مقالات دارد و معتقد است پس از آن می توانید شروع به ساختن اولین برنامه ی انگیولار 2 خود کنید!
https://weblogs.asp.net/lduveau/learning-angular-2-where-to-start
@IranAspMvc
در طی مدت زمان چند ماهه از انتشار نگارش های اولیه ی انگیولار 2 تا به حال که بیش از یک هفته از انتشار نسخه ی نهایی و پایدار آن می گذرد، منابع و مقالات زیادی در سایت ها و وبلاگ های مختلف، جهت آموزش قرار داده شده اند. منابعی که برخی از پایه و به صورت مفصل به توضیح موارد جدید در این نسخه پرداخته و برای تازه کاران بسیار مفید هستند و بعضی نیز به صورت کلی تر و بیشتر به مباحث عمیق و پیشرفته اشاره کرده اند.
اما تعدد این منایع و مراجع باعث سردرگمی و ایجاد سوال برای بسیاری از تازه کاران شده است که "از کجا باید شروع کنیم؟".
در لینک زیر، نگارنده ی مقاله پس از بررسی منابع مختلف، در نهایت دو مورد از بهترین مقالات مفید و کاربردی برای فراگیری 4 مفهوم پایه و مهمِ انگیولار 2 را معرفی می کند و در پایان نیز تاکید به مطالعه ی چندباره ی این مقالات دارد و معتقد است پس از آن می توانید شروع به ساختن اولین برنامه ی انگیولار 2 خود کنید!
https://weblogs.asp.net/lduveau/learning-angular-2-where-to-start
@IranAspMvc
weblogs.asp.net
Learning Angular 2: where to start ?
I often get this question: now that Angular 2 is available, where do I start ??During the last few months, I have read literally tons of article and blog posts on different Angular 2 topics, some of …