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

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

لینک گروه ASPNET Core:
https://t.iss.one/+ufG25x7lVFgyYTNk
Download Telegram
#Component , #DLL , #Embedded , #WebResource

برای ساخت کامپوننت یا مجتمع کردن فایل های استاتیک (javascript, css , image , ...) داخل یک dll باید بتونیم اولا فایل هامون رو داخل resource (محل ذخیره سازی منابع در dll) اضافه کنیم و دوم اینکه بتونیم از این فایل های embed شده (جا سازی شده) داخل dll استفاده کنیم.

How To Emebed/Access To Javascript In .Net DLL
Managing Your JavaScript Library in ASP NET
Using embedded WebResources throughout WebResource.axd
#Optimize, #Comprss
برای استفاده از تصاویر در وب بهتره که همیشه اونها رو Optimize و فشرده سازی کنین
یکی از بهترین سایت های Image Optimizer
https://kraken.io/web-interface
و یکی از بهترین برنامه های مخصوص این کار
https://luci.criosweb.ro/riot/
این عمل تا حدود 70% از حجم فایل تصویری کم میکنه و افت کیفیت کمی رو به همراه داره
@IranAspMvc
#GoogleMap , #GMaps , #Map
یکی از بهترین و کامل ترین کتابخانه ها جهت کار با GoogleMap
https://goo.gl/BnAC8h
قابلیت ها :
نقطه (Marker) گذاری روی نقشه
جستجو بر اساس نام مکان
طراحی Overlays روی نقشه : مسیر - محوطه
مسیریابی حرفه ای
نمای 360 درجه ایساده (Street View)
انواع نقشه ها : نقشه ماهواره ای - نقشه خیابانی
و ...
https://hpneo.github.io/gmaps/

@IranAspMvc
DotNetZoom
GMaps.zip
👆 یک مثال با کتابخانه Gmaps در ASP Webform
#ViewBag #ViewData #TempData #Comparison

مقایسه ViewData , ViewBag , TempData
#DLL, #AspMvc, #Route
در پروژه های بزرگ و Enterprise برای جدا سازی و بخش بندی قسمت های مختلف پروژه معمولا کنترولر های پروژه رو در یک assembly جداگانه ایجاد میکنند.
برای اینکار باید ابتدا یک پروژه Class Library ایجاد کرده و تمام Controller هاتون رو به اونجا انتقال بدید (دقت داشته باشید که کلاس(Controller) ها باید از کلاس پایه System.Web.Mvc.Controller ارث بری کرده باشه)
سپس Reference این پروژه که خروجی آن یک DLL یا Assembly هست رو به پروژه Asp MVC خودتون اضافه کنید.
حالا فقط کافیه تنظیماتی رو توی RouteConfig پروژه انجام بدین تا پروژه Mvc بتواند کنترولر های پروژه دیگر را مدیریت کند.
کد آن در تصویر پست بعد میباشد
@IranAspMvc
#EntityFramework #CodeFirst #EFCore
این روزها با نزدیک شدن به زمان انتشار نسخه های نهایی ASP .NET Core 1.0 و EF Core 1.0 و نیز با توجه به تغییرات بنیادی که در ساختار آنها شکل گرفته، ترسی از بابت عدم پشتیبانی از برخی ویژگی های نسخ قبلی، همانند ویژگی Database First در EF Core، در بین توسعه دهندگان ایجاد شده است. در ادامه به تشریح معنای واقعی Code First بودن EF Core و نیز نگرانی بی مورد برخی توسعه دهندگان خواهیم پرداخت.
در ابتدا باید بدانیم مفهوم CodeFirst بودن در EF Core چیست؟ آیا با توجه به عدم پشتیبانی از مدل Database First دیگر نمیتوان از یک دیتابیس موجود و آماده استفاده کرد؟ در پاسخ باید بگوییم خیر این طور نیست. این نسخه، مدل Database First را به مفهموم استفاده از فایل EDMX که یک مدل designer-based است پشتبانی نمیکند و این روش از طرف مایکروسافت منسوخ شده است، اما به هیچ وجه به این مفهوم نیست که نمیشود Database First کار کرد! شما در EF Core 1.0 میتوانید از طریق reverse-engineer، کلاس های POCO و DbContext و Mapping ها را برای دیتابیس خودایجاد کنید و در ادامه Code First کار کنید. حتی برای این منظور و راحتی کار توسعه دهندگان، ابزارهای زیادی به صورت Extension برای ویژوال استودیو در نظر گرفته شده است که از معروف ترین آنها میتوان به EF Power Tools و EntityFramework Reverse POCO Code First Generator اشاره کرد. شاید هم به همین خاطر است که به جای اصلاح Code First که کمی گیج کننده است، اصطلاح Code base یا Code only را برای آن مناسب تر دانسته اند.
مطالب تکمیلی در این باره را میتوانید از طریق لینک زیر، که توسط خانم Julie Lerman و بسیار ساده و روان نوشته شده، مطالعه بفرمایید.

https://msdn.microsoft.com/en-us/magazine/dn890367.aspx
#EntityFramework , #ChangeTracking

وقتی از EF استفاده میکنید. مثلا چیزی Add یا Edit میکنید. EF برای اینکه این تغییرات رو در سمت دیتابیس ذخیره کنه. اول باید بفهمه که چه تغییراتی رخ داده؟! مثلا ایا چیزی Add شده ؟ یا فیلدی ویرایش شده؟ یا شاید شی ای حذف شده. و یا حتی ممکنه شما یه شی رو به کاربر جهت ویرایش نشون بدید ولی کاربر بدون اینکه فیلدی رو تغییر بده رو دکمه "ثبت ویرایش" کلیک کنه. در این حالت حتی EF میفهمه که هیچ تغییری روی این شی انجام نشده. در نتیجه تغییری در سمت دیتابیس هم اعمال نمیکنه.
حالا برای اینکه EF بفهمه این شی شما تغییر کرده یا نه؟ (change tracking یا مکانیزم ردیابی تغیرات) برای این کار از روش اصطلاحا snapshot tracking (تصویر برداری لحظه مثلا) استفاده میکنه.
یعنی وقتی یک شی به context اضافه میشه. میاد و یه نسخه ازش (تصویرش) رو ذخیره میکنه (با مقادیر original ) و به هنگام فراخوانی متد DetectChanges میاد و مقادیر جدید (new value) رو با مقادیر قبلی (original value) مقایسه میکنه و میفهمه که این شی تغییر کرده یا نه. و حتی اینکه کدام فیلد هاش تغییر کره. تا کوئری متناسب با همون تغییرات رو بسازه.
حالا لازم نیست این متد DetectChanges رو خودمون دستی فراخوانی کنیم بلکه با فراخوانی یک سری از متد هایی که در بالا عنوان شده این متد DetectChanges نیز فراخوانی میشه تا این تغییرات رو بفهمه
در EF به این مکانیزم ردیابی تغییرات ChangeTracking گویند. و دیگر هیچ ...

@IranAspMvc
#Utility
متد کمکی نام دهی فایل ها در سرور جهت ذخیره سازی

کلاس زیر که حاوی دو Extension Method هست بهتون در نام دهی فایل های اپلودی از کاربر به سمت سرور جهت ذخیره سازی کمک میکنه
مواردی که در نام گزاری باید رعایت شود.
1- تکراری نبودن نام ها جهت جلوگیری از overwrite شدن فایل ها
2- بهتره نام خود فایل استفاده بشه بجای اینکه از یک عدد یا متن random مثل GUID استفاده بشه (توی سئو تاثیر داره)
3- جهت نظم بیشتر فایل ها بهتره در پوشه های جداگانه سال/ماه/روز ذخیره بشه
متد کمکی کلاس زیر همه این موارد رو مدیریت میکنه و در صورت تکراری بود به سبک نام گذاری ویندوز یک (عدد) بهش اضافه میکنه
مثال:
/Images/1394/11/19/test.jpg
/Images/1394/11/19/test (2).jpg

طرز استفاده ازش هم به این صورته
GetFileName("yourFilename", "pathToSave", ["stringFormatOfDate"])
مثال —---------------—
GetFileName("test.jpg", "uploadfiles/post/images")
خروجی:
\uploadfiles\post\images\1394\11\19\test.jpg
پیشرفته تر —---------
GetFileName("test.jpg", "uploadfiles/post/images", "yy/MM")
خروجی:
\uploadfiles\post\images\94\11\test.jpg

خروجی هم که میده Absolute Path هست و مناسب و آماده ذخیره سازی فایل در این آدرس

@IranAspMvc
چه مقدار از امکانات #VisualStadio 2015 را می شناسید ؟
https://goo.gl/FKKfPK

Languages :
C# - VB NET - F#
C++
ASP NET
HTML
JavaScript - EcmaScript 6 support
CSS
LESS - SASS
JSON
Node.js
PHP
Python
CoffeeScript
TypeScript
Othere : YAML - Dart - Markdown - Windows PowerShell

Client Side Frameworks :
Apache Cordova
Angular js
React js
Bootstrap CSS
Aurelia
Knockout js
Othere : Backbone - Durandal - Ionic - Ember - Breeze

Package Managers :
NuGet - Bower - npm

Task runners :
Grant - Gulp

Testing :
Unit Test - UI Test
Performance Test - Load Test

====================
https://webtooling.visualstudio.com/languages/

@IranAspMvc
#ImageMagick
کار با تصاویر در دات نت (Convert, Compress, Resize, Crop Images)
https://goo.gl/68LgDx

چندی پیش در مورد بهینه و فشرده سازی تصاویر برای استفاده در وب صبحت کردیم.
یکی از بهترین و بزرگترین کتابخانه های کار با تصاویر Image Magick می باشد
https://www.imagemagick.org/
که لایبرری تحت دات نت آن Magick .Net نام دارد
https://magick.codeplex.com/
و که توسط این کتابخانه که بیش از 100 نوع فرمت تصویری را پشتیبانی میکند میتوان کار های زیر را با تصاویر انجام داد
Convert : تبدیل فرمت تصاویر,
Compress : فشرده و بهینه سازی تصاویر,
Resize : تغییر سایز تصاویر,
Crop : برش تصاویر
Flip, Mirror, Rotate, Distort, Shear and transform images, Adjust image colors, Apply various special effects, Draw text, Lines, polygons, Ellipses
فانکشن های این کتابخانه از طریق Command Line در درسترس و قابل استفاده بوده و علاوه بر آن برای بیش از 18 زبان برنامه نویسی از جمله دات نت، لایبرری منتشر کرده است
این کتابخانه سورس باز بوده و در آدرس مخزن کد زیر قرار دارد
https://github.com/ImageMagick/ImageMagick
آموزش استفاده در دات نت :
https://goo.gl/tWB2D1
آموزش تغییر سایز (resize) کردن تصاویر در دات نت
https://goo.gl/NKPYUg

@IranAspMvc
#EntityFramework, #CodeFirst, #Relation
رفع مشکل کلید خارجی در EntityFramework CodeFirst به هنگام ایجاد Relation

توی Entity Framework Code First وقتی از Navigation Property ها استفاده میکنین در واقع ef میفهمه که یک Relation بر قرار کردید. و خودش فیلدی برای Foreingkey با نام زیر در جدول اضافه میکنه
yourfield_ID
حال اگر خودتون به صورت دستی خصوصتی در کلاس مورد نظر به عنوان کلید خارجی تعریف کردید. حتما باید برای EF مخشص کنید که این Property همان Foreignkey مربوط به Relation شماست تا دیگر خود EF فیلدی را به عنوان Foriegnkey در جدول اضافه نکند
برای مشخص کردن کلید خارجی در EF 2 راه دارید.
1- استفاده از ForeignKey Attribute مثال :
public class Books
{
public int CategoryId { get; set; } //Foreign key
[ForeignKey("CategoryId")]
public Category Category { get; set; }
}
2- استفاده از Fluetn Api مثال :
modelBuilder.Entity<Book> ()
.HasRequired(p => p.Category)
.WithMany(p => p.Books)
.HasForeignKey(p => p.CategoryId);
نکته اینکه کد های fluent api باید در متد OnModelCreating نوشته شود.

@IranAspMvc