نکات پنهان در دات نت – نکته ۴ – دیباگ کنترل شده

به طور خلاصه در صورت استفاده از DebuggerStepThrough ( که یک attribute است) برای متد یا خواص کلاس، دیباگر در زمان دیباگ وارد آن نخواهد شد.
از این Attribute می تونید برای متدها، Property Accessor ها، کلاسها و structها استفاده کنید.
مثال:

[DebuggerStepThrough]
Private void Initialize()
{   
//Your Code;
}

نکات پنهان در دات نت – نکته ۳ – ناحیه کد

نکته شماره ۳ مربوط به مدیریت بهتر کدها در Visual Studio است. حتما مجبور به خواندن کدهای بسیاری شده اید که بسیار بی نظم و درهم ریخته نوشته شده اند و همین بی نظمی باعث صرف زمان بیشتر برای پیدا کردن و بررسی کدهای مورد نظر شده است. برای رفع این مشکل در Visual Studio می توانید از Region استفاده کنید.
با استفاده از #region شما می توانید ناحیه های مختلفی از کدها را تعریف کنید. فراموش نکنید که این یک تقسیم بندی تاثیری در نحوه اجرا و عملکرد کدهای شما ندارد. به مثال زیر توجه کنید:

#region RegionName
// this is your code
#endregion

 مثال:

#region properties
        public int PersonId { get; set; }
        public int FirstName { get; set; }
        public string LastName { get; set; }
#endregion

پس از استفاده از #region در Visual Studio در کنار آن یک علامت + نمایش داده میشود که با استفاده از آن می توانید ناحیه کد مورد نظر را بسته و یا باز کنید.
چند ناحیه پیشنهادی برای کدهای شما:

  • #region Properties
  • #region Private Methods
  • #region Public Methods
  • #region Constructors
  • #region Handlers

 

نکات پنهان در دات نت – نکته ۲ – انواع داده Nullable

Null یک مقدار کاربردی در برنامه نویسی است که همه برنامه نویس ها با آن آشنا هستند. همه میدانیم که وقتی یک متغیر تعریف می کنیم مقدار پیش فرض آن null است وقتی هم یک نمونه ای از یک کلاس تعریف می کنیم می توانیم آن را با مقدار null مقدار دهی کنیم. اما مشکل اصلی در مورد انواع داده عددی و struct هاست که نمی توانیم به آنها مقدار null بدهیم و یا مقدار آنها را با null مقایسه کنیم! این مسئله در کار با بانکهای اطلاعاتی که فیلدها قابلیت null بودن دارند بیشتر خودش را نشان میدهد.
Nullable ها انواع داده ای هستند که علاوه بر محدوده قابل قبول معمولی می توانند null را هم به عنوان مقدار بپذیرند و طبیعتا در شرطها با مقدار null مقایسه شوند. نحوه تعریف انواع داده Nullable بدین شکل است:

Nullable<T> variableName;

مثال ۱:

Nullable<int> iNull;

مثال ۲:

public struct MyStruct()
{
    public void foo()
    {
        //Do Anything
    }
}
static void Main(string[] args)
{
   Nullable<MyStruct> myStruct=null;
   if(myStruct==null)
    {
       //Do Anything
    }
}

راه ساده تر برای تعریف متغیرهایی Nullable استفاده از علامت ? است:

int? iContentType = null;

برای مطالعه بیشتر می توانید به این مقاله مراجعه کنید.

نکات پنهان در دات نت –نکته ۱ – متد ForEach

یک Extension Method است که عملیات تعیین شده action را برای هر آیتم موجود در List<T> انجام میدهد. حالت کلی به این شکل است:

List<T>.ForEach(Action<T> action);

قطعا شما در بسیاری از کدها از حلقه ها استفاده کردید بخصوص حلقه foreach که در پیمایش لیستها کاربرد زیادی دارد. به جای استفاده از حلقه foreach می توانید از متد ForEach استفاده کنید. به مثال زیر توجه کنید:

foreach(Foo foo in foos)
{
statement involving foo;
}

به جای کد فوق می توانید از این کد استفاده کنید:

 

foos.ForEach((Foo foo)=>{ statement involving foo; });

یا:

foos.ForEach(
    delegate(Foo foo)
{
    statement involving foo;
});

اما با توجه به تستهایی که انجام شده است سرعت اجرای کدهای IL تولید شده برای متد ForEach بالاتر از حلقه foreach است (البته بجز در آرایه ها). علاوه بر آن خوانایی ForEach بالاتر و نگهداری کدهای آن ساده تر است. برای مطالعه بیشتر می توانید به این منابع مراجعه کنید:

بیست نظریه برنامه نویسی جنجال برانگیز

دیشب قبل از خواب فیدهای جدیدو مطالعه می کردم به این پست برخوردم که خوندنش برای همه دست اندرکاران برنامه نویسی خالی از لطف نیست!
بسیاری از این نظرات (اگه نخوام بگم همه نظرات) در مورد اغلب برنامه نویسهای ایرانی هم صدق می کنه. از مطالعه اون واقعا لذت بردم. شما هم مطالعه کنید.

 

پی نوشت ۱: خیلی وسوسه شدم که این مقاله رو ترجمه کنم. اگه وقت داشته باشم حتما این کارو می کنم

پی نوشت ۲: تصمیم دارم یه سری پست در رابطه با نکاتی که کمتر در برنامه نویسی .NET استفاده می شود بنویسم به نام نکات پنهان در .NET که سعیم بر این است که بصورت پستهای مینیمالیستی باشند

آشنایی با LocalDB

مقدمه

LocalDB یکی از محصولات جدید مایکروسافت است که از طرفی جایگزین SQL Server Express شده است و بسیاری از مشکلات آن را حل نموده و از طرف دیگر نیاز بسیاری از توسعه دهندگان و کاربران را به نصب SQL Server مرتفع می کند.

مزایای LocalDB

  • کم حجم بودن فایل نصبی: حجم نسخه ۳۲ بیت ۲۸٫۲ مگابایت و نسخه ۶۴ بیت ۳۳٫۷ مگابایت است
  • سادگی در استفاده: نیاز به تنظیمات پیچیده یا مدیریت تخصصی ندارد
  • قابلیت اجرا توسط کاربران با دسترسی محدود
  • نصب آسان و ساده
  • پشتیبانی از همان TSQL استفاده شده در SQL Express همچنین پشتیبانی از Stored Procedure ها، تریگرها، Viewها و انواع داده geometry و geography
  • استفاده از همان Provider های مورد استفاده برای بقیه نسخه های SQL Server
  • هیچ سرویسی برای بانک اطلاعاتی ساخته نمی شود: پروسس های LocalDB هر زمان که مورد نیاز باشند شروع به اجرا می کنند و در زمان لازم خاتمه می یابند. به محض اینکه یک برنامه تصمیم به ارتباط با LocalDB نماید پروسس های آن به عنوان زیرمجموعه پروسس های آن برنامه اجرا شده و مدت زمان کوتاهی پس از بستن آخرین ارتباط، پروسس های آن بسته خواهند شد.
  • پشتیبانی از AttachDbFileName: این خاصیت به توسعه دهندگان اجازه می دهد که محل فایل بانک اطلاعاتی را مشخص کنند
  • یک نسخه از LocalDB نصب شده روی سیستم برای همه کاربران آن سیستم استفاده می شود
  • پشتیبانی از نصب خاموش*
  • از آن می توان در پروژه های ASP.NET هم استفاده کرد
  • پشتیبانی از XML (XQuery و XPath) و BLOB
  • پشتیبانی از ADO.NET Sync Framework
  • پشتیبانی از LINQ
  • پشتیبانی از تراکنش های توزیع یافته
  • تعداد نامحدود ارتباط محلی

 

پیش نیازها

  • نیاز به SQL Server Native Client دارد که بصورت پیش فرض به همراه خود LocalDB نصب نمی شود
  • دسترسی Admin برای نصب
  • ۱۴۰ مگابایت فضای هارد دیسک
  • بروزرسانی .NET Frameword 4.0 به .NET Frameword 4.0.2

محدودیت ها

  • از ویندوز XP و Server 2000 و Server 2003 پشتیبانی نمی کند
  • نمی توان نسخه ۳۲ بیتی آن را روی سیستم های ۶۴ بیتی نصب کنید
  • فقط ارتباطات محلی مجاز است و نمی توان از سیستم های دیگر به آن وصل شد
  • فقط می توان از SQL Server  ۲۰۱۲ Management Studio برای مدیریت آن استفاده کرد. نسخه های قبلی را هم نمی توان بکار برد
  • Visual Studio RTM از LocalDB پشتیبانی نمی کند
  • نمی توان از آن در پروژه های موبایل ها استفاده نمود
  • حجم بانک اطلاعاتی محدود به ۱۰ گیگابایت می باشد
  • از FileStream پشتیبانی نمی کند
  • محدود به استفاده از یک CPU است
  • در زمان استفاده از LocalDB نمی توان از اشکال زدای SQL استفاده نمود

 

نصب LocalDB
برای نصب ابتدا باید فایل نصبی آن را از اینجا دریافت کنید. همانطور که در ادامه خواهید دید برای نصب فقط نیاز به تایید موافقتنامه آن را دارید. می توانید از نصب خاموش بصورت زیر استفاده کنید:
msiexec /I SqlLocalDB.msi /qn IACCEPTSQLLOCALDBLICENSETERMS=YES
نصب از طریق رابط کاربری بسیار آسان است و فقط نیاز به تایید موافقتنامه دارد.

نحوه ارتباط با LocalDB از طریق SQL Server Management Studio
شما به شرطی می توانید با استفاده از SQL Server Management Studio به LocalDB وصل شوید که .NET Framework خود را به نسخه ۴٫۰٫۲ ارتقا داده باشید. این بروز رسانی را می توانید از اینجا دریافت کنید. اطلاعات بیشتر مربوط به نسخه ۴٫۰٫۲ را می توانید اینجا مطالعه کنید.
از عبارت “(localdb)\v11.0” برای نام سرویس دهنده استفاده کنید.
از نسخه های قبلی Management Studio نمی توانید برای دسترسی به LocalDB استفاده کنید.

نحوه ارتباط با LocalDB از طریق Visual Studio 2010
با توجه به اینکه بطور پیش فرض از داخل VS2010 نمی توانید اشیا و داده های موجود در بانک اطلاعاتی خود را مدیریت کنید بدین منظور باید سری به این صفحه بزنید و ابزار Microsoft SQL Server Data Tools را دریافت کنید. پس از نصب آن شما می توانید از درون VS2010 بانک اطلاعاتی LocalDB خود را مدیریت کنید.

نحوه استفاده از LocalDB در برنامه ها
همانطور که قبلا هم گفته شد، بانک اطلاعاتی LocalDB را با استفاده از خاصیت AttachDbFileName می توان بصورت یک فایل استفاده کرد و برنامه نویسها از آن بصورت یک بانک اطلاعاتی استفاده می کنند نه یک سرویس دهنده بانک اطلاعاتی. وقتی برنامه نویس یک بانک اطلاعاتی LocalDB می سازد یک فایل با پسوند mdf (و یک فایل ldf منتاظر با آن) در مسیر مشخص شده ساخته خواهد شد که برای ارتباط با آن می توانید از ConnectionString بصورت زیر استفاده کنید (با فرض اینکه فایل شما در مسیر C:\MyData ذخیره شده است)
“Data Source=(localdb)\v11.0;Integrated Security=true;AttachDbFileName=C:\MyData\MyDatabase.mdf”
وقتی برنامه ای با استفاده از یک Provider سمت سرویس گیرنده  قصد اتصال به LocalDB را داشته باشد، provider ابتدا وضعیت نمونه LocalDB برای کاربر جاری را بررسی می کند، اگر در حال اجرا باشد، به آن متصل خواهد شد در غیر اینصورت ابتدا آن را برای کاربر جاری اجرا می کند و سپس به آن متصل خواهد شد.

*نصب خاموش (Silent Installation) اغلب برای اجرا در زمان نصب یک نرم افزار بکار می رود. در این صورت کاربر فایل نصبی برنامه را اجرا می کند و متوجه نصب LocalDB نخواهد شد.
منابع: