سئو - آموزش SEO
بسم الله الرحمن الرحیم
آموزش SEO
دوره آموزشی سئو
سئو چیست
در دوره ایی که می توان صراحتا گفت کشور ما با تاخیر زیادی نسبت به سایر کشورها در آن قدم بر می دارد، داشتن یک وب سایت بسیار پر اهمیت است تا جایی که تمامی افراد فارق از داشتن دانش فنی IT تمایل به انجام آن دارند و همانطور که می بینیم روزانه افراد زیادی سایت های جدیدی را با موضوعات متفاوت طراحی می کنند که بعضا بسیاری از آن ها هیچ سررشته ای از دانش نرم افزار و IT ندارند و تنها به فکر ایجاد یک فضای وب برای معرفی خود هستند.
با وجود ابزارها، روش ها و تکنولوژی های متفاوتی که وجود دارد از زوایای مختلفی می توان صنعت تولید نرم افزار و بالخص صنعت وب را بررسی کرد، اما قصد داریم این فرایند را از ابتدا بررسی کنیم از جایی که یک ایده معرفی می شود.
هر فردی متناسب با نیازش، درخواست طراحی یک وب سایت را به شرکت های نرم افزاری می دهد و یا خودش شخصا این کار را انجام می دهد اگر از مرحله ی software life cycle عبور کنیم، به یک خروجی نهایی، که در مبحث ما یک وب سایت است می رسیم. این وب سایت با هر موضوعی که باشد نیازمند آن است تا دیده شود. یکی از بهترین روش های دیده شدن یک وب سایت موتورهای جستجو هستند که Google در ایران مانند تمامی کشورها پربازدیدترین وب سایت است و بعد از آن Yahoo در مکان دوم قرار گرفته است، شاید بیشترین استفاده Yahoo مربوط به اخبار و سرویس ایمیل آن است تا بخش جستجو آن، موتور جستجو Bing نیز در این میان در مکان 34 ام قرار گرفته است.
ادامه مطلب...آموزش Entity Framework (بخش سوم Tracking)
بسم الله الرحمن الرحیم
آموزش Entity Framework
بهینه سازی Entity Framework
قبل از مطالعه این دوره آموزشی بهتر است دوره های زیر را نیز مطالعه کنید.
آموزش Code first
آموزش migration و Entity Framework در Code First
بخش سوم
در بخش قبل با مفاهیم Local و Load آشنا شدیم، همچنین قابلیت Entity states را به صورت مختصر معرفی کردیم. در این بخش قصد داریم با ویژگی Entity states بیشتر آشنا شویم.
Entity states در Entity Framework
در مقاله قبل گفتیم که Entity states می تواند یکی از 5 حالت زیر را داشته باشد.
• Added
• Unchanged
• Modified
• Deleted
• Detached
Added
این وضعیت بدین معنا است که Entity شما به Context اضافه شده است اما به پایگاه داده هنوز اضافه نشده است.
Unchanged
این وضعیت بدین معنا است که Entity شما در Context با Record متناظر در پایگاه داده یکسان است و به نوعی در این اطلاعات تغییری ایجاد نشده است.
Modified
این وضعیت بدین معنا است که یکی و یا تمامی Property های Entity مورد نظر در Context تغییر داده شده است اما در پایگاه داده ثبت نشده است. این وضعیت برای Entity هایی است که در پایگاه داده قبلا اضافه شده اند.
Deleted
این وضعیت بدین معنا است که Entity مورد نظر از Context حذف شده است اما Record متناظر این Entity همچنان در پایگاه داده موجود است
Detached
این وضعیت بدین معنا است که Entity مورد نظر شما توسط Context بررسی و یا track نمی شود
همانطور که در مقاله قبل بررسی کردیم برای ثبت تغییرات انجام شده در Context بر روی سرور می بایست از دستور SaveChanges استفاده کنیم، این دستور باعث تغییر وضعیت Entity ها به صورت زیر می شود:
آموزش Entity Framework (بخش دوم)
بسم الله الرحمن الرحیم
آموزش Entity Framework
بهینه سازی Entity Framework
قبل از مطالعه این دوره آموزشی بهتر است دوره های زیر را نیز مطالعه کنید.
آموزش Code first
آموزش migration و Entity Framework در Code First
بخش دوم
Entity Framework & ChangeTracker
در بخش قبل با مفاهیم ابتدایی آشنا شدیم در این بخش قصد داریم مثال قبل را کامل نماییم و همچنین با خاصیت جدیدی با نام ChangeTracker آشنا شویم.
با استفاده از خاصیت ChangeTracker شما می توانید اطلاعات کاملی در خصوص Entity ها و عملیات های آنها و همچنین وضعیت ثبت شده برای آنها را بدست آورید.
برای تکمیل پروژه خود Model های زیر را به پروژه خود اضافه می کنیم.
public class Author : IPerson
{
public int AuthorId { get; set; }
public string Name { get; set; }
public string Biography { get; set; }
}
public class Reader : IPerson
{
public int ReaderId { get; set; }
public string Name { get; set; }
public string Username { get; set; }
}
public interface IPerson
{
string Name { get; }
}
حال دستورات زیر را به Controller اضافه می کنیم
ادامه مطلب...آموزش Entity Framework
بسم الله الرحمن الرحیم
آموزش Entity Framework
بهینه سازی Entity Framework
قبل از مطالعه این دوره آموزشی بهتر است دوره های زیر را نیز مطالعه کنید.
آموزش Code first
آموزش migration و Entity Framework در Code First
بخش اول
در ادامه سری مقالات مربوط به بهینه سازی SQL و بهینه سازی کوئری در این دوره قصد داریم در خصوص افزایش کارایی در Entity Framework صحبت کنیم. برای مطالعه مقالات بهینه سازی می توانید از طریق لینک های زیر اقدام فرمایید.
بهینه سازی کوئری
بهینه سازی SQL
در تمامی برنامه ها اکثر برنامه نویسان برای واکشی و بروزرسانی اطلاعات درون پایگاه داده خود از دستوراتی استفاده می کنند که مستقیما بر روی پایگاه داده اجرا می شود (مانند FirstOrDefault و یا ToList()) این روش، روش اشتباهی نیست اما طبیعتا هزینه ای برای ارسال اطلاعات به سمت سرور و دریافت نتیجه اجرای این دستور به برنامه شما تحمیل خواهد شد.
یکی از روش هایی که می توانید این مشکل را بر طرف نمایید استفاده از دستور Local می باشد. این دستور به جای فعالیت بر روی پایگاه داده بر روی Context شما کار خواهد کرد و هیچگاه دستوری را برای SQL Server ارسال نخواهد کرد و همین امر باعث افزایش سرعت اجرای دستورات شما خواهد شد.
برای آموزش نحوه کار کردن با این دستور، یک مثال را انجام خواهیم داد.
یک پروژه MVC ایجاد کنید و Model ایی با نام Ably به آن اضافه کنید. این مدل می بایست به صورت زیر باشد:
public class Ably
{
public int Id { get; set; }
public string PostName { get; set; }
}
سپس Controller خود را ایجاد می کنیم و در آن کد زیر را برای load اطلاعات می نویسیم.
ادامه مطلب...تغییر کلمه عبور در ASP Identity
بسم الله الرحمن الرحیم
تغییر کلمه عبور در ASP Identity
برای دریافت کد های این مقاله می توانید از طریق لینک زیر اقدام فرمایید.
دانلود کدهای پروژه
عنوان: آموزش asp.net Identity
در این آموزش قصد داریم تحوه انجام Reset Password را با استفاده از ASP Identity بررسی کنیم.
این فرایند طبیعتا دو مرحله خواهد داشت، ابتدا آدرسی را برای بازیابی کلمه عبور تولید می کنیم که این آدرس را باید برای کاربر ایمیل کنیم.
پس از ایجاد آدرس می بایست در صورتی که آدرس توسط کاربر درخواست داده شود، ادرس را (که Token نیز نامیده می شود) به همراه کلمه عبور جدید بررسی می کنیم و در صورت مورد تایید بودن اطلاعات خود را ویرایش می کنیم.
ForgetPassword در ASP Identity
ابتدا یک View با نام ForgetPassword برای این منظور ایجاد می کنیم و کد زیر را در آن قرار می دهیم.
@model AspnetIdentitySample.Models.BeforePasswordResetViewModelادامه مطلب...
@{
ViewBag.Title = "Forgot your password?";
}
<hgroup class="title">
<h1>@ViewBag.Title.</h1>
</hgroup>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset class="form-horizontal">
<legend>Forgot password</legend>
<div class="control-group">
@Html.LabelFor(model => model.Email, new { @class = "control-label" })
<div class="controls">
@Html.EditorFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email, null, new { @class = "help-inline" })
</div>
</div>
<div class="form-actions no-color">
<input type="submit" value="Submit" class="btn" />
</div>
</fieldset>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
بهینه سازی SQL
بسم الله الرحمن الرحیم
بهینه سازی SQL
AutoGrowth
سایر مطالب در خصوص بهینه سازی SQL را می توانید از این بخش مطالعه بفرمایید.
طبیعتا همه دوستان با تصویر بالا آشنا هستند. این پنجره وقتی باز می شود که شما می خواهید یک پایگاه داده جدید را طراحی کنید. متاسفانه اکثر افراد تنها در این پنجره نام پایگاه داده خود را مشخص می کنند و سپس کلید Ok را انتخاب می کنند.
یکی از بخش های این پنجره که در تصویر بالا مشخص شده است مربوط به نحوه Growth و یا همان رشد پایگاه داده شما است.
به صورت پیش فرض پایگاه داده شما می تواند 3 MB از فضای درایو مشخص شده را برای فایل MDF خود و همچنین 1 MB را به فایل LDF خود اختصاص دهد. در صورتی که حجم هر یک از فایل های MDF و LDF شما از مقدار مشخص شده بیشتر شود. پایگاه داده شما بر اساس تنظیمات مشخص شده در بخش Autogrowth / Maxsize رشد خواهد کرد.
همانطور که در تصویر مشخص است فایل MDF شما می تواند در صورت بزرگتر شدن از 3 MB به صورت نامحدود در هر مرحله 1 MB رشد کند.
فایل LDF نیز در صورت بزرگتر شدن از 1 مگابابیت 10 درصد رشد خواهد کرد. در صورتی که فایل LDF 100 مگابایت باشد با تنظیم رشد 10 درصدی، فایل مربوطه به 110 مگابایت افزایش خواهد یافت.
Stored Procedure
بسم الله الرحمن الرحیم
فراخوانی Stored Procedure
برای انجام هر کار طبیعتا روش های متفاوتی وجود دارد. در این مقاله قصد داریم نحوه یافتن یک Stored Procedure را در روش ها مختلف بررسی کنیم.
برای مثال در ابتدا یک Procedure به صورت زیر تعریف می کنیم.
CREATE PROCEDURE TESTING
(@OPTION INT)
AS
IF @OPTION=0
SELECT 1 AS NUMBER
ELSE
SELECT 100 AS NUMBER
GO
برای یافتن و مشاهده این Procedure می توانیم از روش های زیر کمک بگیریم.
ادامه مطلب...SQL Injection
بسم الله الرحمن الرحیم
SQL Injection
در این آموزش قصد داریم در خصوص امنیت در SQL Server به صورت مختصر صحبت کنیم.
معمولا بیشتر مشتریان نگران امنیت اطلاعاتشان هستند و از تدابیری برای جلوگیری از SQL Injection صحبت می کنند. بیشتر اتفاقاتی که در خصوص SQL Injection رخ می دهد به دلیل مشکلاتی است که در SQL Server توسط طراحان پایگاه داده و برنامه نویسان انجام می شود، زیرا بیشتر طراحان اطلاعات کافی در خصوص SQL Injection ندارند و تنها نام آن را شنیده اند.
منظور از طراحان، کسانی هستند که پایگاه داده را طراحی و مدیریت می کنند که به اصطلاح به آنها DBA و یا Database Administrator گفته می شود.
SQL Injection نتیجه یک کد نویسی اشتباه است. یکی از شایع ترین دلایل وقوع SQL Injection استفاده از dynamic SQL است، بدین معنا که شما Query خود را به صورت داینامیک با استفاده از پارارمترهای ارسال شده کاربر اجرا کنید.
در این جا یک مثال ساده را بیان کرده ایم که کاربر می تواند با استفاده از ارسال پارامترهای First Name وLast Name یک Query ساده را اجرا کند.
کد خود را در یک Procedure به صورت زیر تعریف می کنیم.
USE AdventureWorks2014ادامه مطلب...
GO
CREATE PROCEDURE search_first_or_last
@firstName NVARCHAR(50)
,@lastName NVARCHAR(50)
AS
BEGIN
DECLARE @sql NVARCHAR(4000)
SELECT @sql = ' SELECT FirstName ,MiddleName, LastName' +
' FROM Person.Person WHERE 1 = 1 '
IF @firstName IS NOT NULL
SELECT @sql = @sql + ' AND FirstName LIKE ''' + @firstName + ''''
IF @lastName IS NOT NULL
SELECT @sql = @sql + ' AND LastName LIKE ''' + @lastName + ''''
EXEC (@sql)
END
تاریخ در SQL
بسم الله الرحمن الرحیم
همانطور که می دانید ما در SQL Server نوع داده ای با نام DateTime داریم. این نوع داده ای برای ذخیره اطلاعات تاریخ و ساعت در SQL Server استفاده می شود. در اینجا قصد داریم برخی از توابع مفید برای کار بر روی DateTime را بررسی کنیم.
بدست آوردن تاریخ جاری در SQL Server
برای بدست آوردن تاریخ و ساعت جاری سیستم می توانید از تابع زیر استفاده کنید
select getdate()
DATEPART
بدست آوردن بخشی از یک تاریخ در SQL Server
اگر بخواهید بخشی از یک تاریخ و زمان را انتخاب کنید، (مثلا فقط روز یا فقط ساعت و....) می بایست از تابع DATEPART استفاده کنید این تابع دو پارامتر دریافت می کند.
پارامتر اول مشخص کننده بخشی از تاریخ و زمان که می بایست انتخاب شود و پارامتر دوم تاریخی است که شما می خواهید بر روی آن کار کنید.
DATEPART ( datepartEnum , yourDate )
به جای datepartEnum می توانید از مقادیر زیر استفاده کنید
datepart |
Abbreviations |
year |
yy , yyyy |
quarter |
qq , q |
month |
mm , m |
dayofyear |
dy , y |
day |
dd , d |
week |
wk , ww |
weekday |
dw |
hour |
hh |
minute |
mi, n |
second |
ss , s |
millisecond |
ms |
microsecond |
mcs |
nanosecond |
ns |
TZoffset |
tz |
ISO_WEEK |
isowk , isoww |
آموزش Team Foundation Server (بخش سوم)
بسم الله الرحمن الرحیم
آموزش Team Foundation
(بخش دوم) نصب و راه اندازی TFS
(بخش سوم) ایجاد یک پروژه بر روی TFS
در بخش های قبل در مورد Online Repository ها صحبت کردیم و نحوه ایجاد یک Team Foundation را بر روی TFS Cloud Repository را بررسی کردیم.
در این بخش قصد داریم تا یک پروژه را بر روی Team Foundation قرار دهیم، اما قبل از شروع بهتر است چند نکته را بررسی کنیم.
ابزارهایی که کد برنامه شما را نگه داری می کنند معمولا امکانات زیادی را ارائه می دهند که این امکانات باعث می شود شما یک ابزار انتخاب کنید. در این جا برخی از ویژگی های مشترک ابزارهای مختلف source control مانند Team Foundation که در حال آموزش آن هستیم را بررسی می کنیم.
توضیح ام را باید یک مثال بیان می کنم. فکر کنید قرار است شما یک برنامه را برای فردی بنویسید، مثلا وب سایت ساده که تعدادی افراد را ثبت نام می کند و به شما یک گزارش ساده می دهد. شما با مشتری خود توافق می کنید و کار را آغاز می کنید. در ابتدا یک Template برای مشتری طراحی می کنید و طبیعتا مشتری پس از مشاهده Template طراحی شده از شما می خواهد بخش هایی از آن را تغییر دهید.
این تغییرات به صورت مورد به مورد با مشتری بررسی و اعمال می شود تا در نهایت بخش طراحی Template به پایان می رسد.
تصور کنید نیاز پیدا می کنید تا کدها و اطلاعاتی را که در طراحی Template انجام داده اید مجددا استفاده کنید. مثلا صفحه لاگین شما ویژگی هایی داشته که بعد از تعامل با مشتری تغییر داده شده اما اکنون مجددا به هر دلیلی ( تغییر نظر مشتری، نیاز پروژه، استفاده برای پروژه دیگر و...) نیاز به کدهای قبلی خود دارید.
اگر خیلی با تجربه باشید هر چند ساعت یک بار مثل تصویر زیر از فایل های خود یک backup به صورت فایل ZIP ایجاد می کنید (روش زمان دایناسورها)!
ادامه مطلب...آموزش Team Fundation Server (بخش دوم)
بسم الله الرحمن الرحیم
آموزش Team Foundation
(بخش دوم) نصب و راه اندازی TFS
در این بخش قصد داریم یک حساب کاربری در Team Foundation Server ایجاد کنیم و اولین Repository و پروژه خود را در آن ایجاد کنیم.
مانند تمامی Online Repository های موجود مانند github در TFSنیز شما می توانید Repository خود را ایجاد کنید. در حال حاضر شما می توانید در TFS پروژه خود را ایجاد کنید و تیم خود را مدیریت نمایید. همچنین شما می توانید کد خود را به صورت مستقیم از داخل Visual Studio و یا Eclipse بر روی سرور TFS ارسال کنید. به ارسال اطلاعات بر روی سرور ها و Repository ها check-In می گویند. TFS به صورت Cloud کار می کند در نتیجه شما می توانید از طریق مرورگر خود اطلاعات مربوط به پروژه، باگ ها و... را مشاهده کنید.
TFS به شما اجازه می دهد تا پروژه خود را بر اساس platform های متفاوتی از C# تا Python و همچنین از Windows تا Android ایجاد کنید.
در حال حاضر TFS به شما اجازه می دهد تا یک تیم 5 نفره را به صورت رایگان ایجاد کنید.
ادامه مطلب...
آموزش Team Fundation Server
بسم الله الرحمن الرحیم
آموزش Team Foundation
بخش اول معرفی TFS
یکی از مواردی که باید به عنوان یک اصل در شرکت های نرم افزاری مورد نظر واقع شود، نحوه نگهداری کدها و اطلاعات پروژه ها است.
در سال های نه چندان دور شرکت ها برای نگه داری اطلاعات و بایگانی آنها از روش ساخت فایل های ZIP با تاریخ و زمان استفاده می کردند. طبیعتا در این روش انجام پروژه های تیمی و دست یابی به کد های گذشته و یا لغو یک تغییر کار بسیار مشکلی است.
همین مشکلات باعث شد تا روش های جدیدی برای نگه داری اطلاعات یک پروژه مطرح شود. این روش ها کم کم تکامل پیدا کردند و به عنوان نرم افزارهای مدیریت کد، که به نام های زیر معروف هستند، معرفی شدند:
source control
sourceforge
source code control
source code version control
source code version
و..
این نرم افزار ها به شما این امکان را می دهند که کدهای خود را در یک محل به نام Repository یا منبع نگه داری کنید. این امکان باعث می شود تا همه ی افراد از یک محل برای نگه داری کدها و اعمال تغییرات استفاده کنند، در نتیجه وقتی به صورت تیمی کار می کنید نیازی نیست نگران قراردادن کدهای همه ی افراد در یک پروژه باشید.
طبیعتا وقتی تمامی افراد بر روی یک پروژه کار می کنند باید Log و یا همان سوابق تغییرات صورت گرفته بر روی کدها را به همراه فرد تغییر دهنده ثبت کرد. این کار باعث می شود تا در صورت بروز خطا، مدیر پروژه بتواند سوابق تغییرات را بررسی و پروژه را به آخرین نسخه ی بدون مشکل Restore کند.
source control های زیادی در حال حاضر وجود دارند که هر یک مزایا و معایب خود را دارند که نام برخی را در زیر مشخص کرده ایم.
github
SVN
TFS
ادامه مطلب...خطای Multiple object sets per type are not supported
بسم الله الرحمن الرحیم
Multiple object sets per type are not supported
ASP.NET Identity
در خصوص ساخت و ایجاد جداول ASP.NET Identity مشکلی برای برخی از دوستان پیش آمده است، از همین رو قصد داریم در اینجا این مشکل را بررسی کنیم.
خطای مربوطه به صورت زیر از سوی Entity Framework در هنگام ساخت جداول ASP.NET Identity صادر می شود:
Multiple object sets per type are not supported
ادامه مطلب...ایجاد کلمه عبور در سی شارپ
بسم الله الرحمن الرحیم
ساخت کلمه عبور در سی شارپ
در پروژه ها ممکن است نیاز داشته باشیم یک Password به صورت Random برای کاربران ایجاد کنیم. کلاسی را برای شما قرار داده ایم که به سادگی می تواند این نیاز شما را بر آورده کند.
public class RandomPasswordادامه مطلب...
{
// Define default min and max password lengths.
private static int DEFAULT_MIN_PASSWORD_LENGTH = 8;
private static int DEFAULT_MAX_PASSWORD_LENGTH = 10;
// Define supported password characters divided into groups.
// You can add (or remove) characters to (from) these groups.
private static string PASSWORD_CHARS_LCASE = "abcdefgijkmnopqrstwxyz";
private static string PASSWORD_CHARS_UCASE = "ABCDEFGHJKLMNPQRSTWXYZ";
private static string PASSWORD_CHARS_NUMERIC= "23456789";
private static string PASSWORD_CHARS_SPECIAL= "*$-+?_&=!%{}/";
/// <summary>
/// Generates a random password.
/// </summary>
/// <returns>
/// Randomly generated password.
/// </returns>
/// <remarks>
/// The length of the generated password will be determined at
/// random. It will be no shorter than the minimum default and
/// no longer than maximum default.
/// </remarks>
public static string Generate()
{
return Generate(DEFAULT_MIN_PASSWORD_LENGTH,
DEFAULT_MAX_PASSWORD_LENGTH);
}
تبدیل enum به string و برعکس
بسم الله الرحمن الرحیم
تبدیل enum به string و برعکس
تبدیل enum به string
در برخی مواقع شما نیاز دارید تا یک String را به Enum تبدیل کنید. برای انجام این کار می بایست از متد Enum.ToString استفاده کنید.
مثال زیر را در نظر بگیرید
public enum Car
{
Benz,
BMW,
Peykan,
Pride,
}
//just kidding :)
Car myCar = Car.BMW;ادامه مطلب...
string stringMyCar = myCar.ToString(); // result "BMW"
String.Format & DateTime.ToString
بسم الله الرحمن الرحیم
آموزش String.Format & DateTime.ToString
String.Format & DateTime
در بسیاری از موارد شما می خواهید یک DateTime را به صورت های مختلف در برنامه خود نمایش دهید. بهترین روش انجام کار استفاده از String.Format می باشد.
در این آموزش قصد داریم فرمت ها و روش های مختلف نمایش تاریخ و زمان را در مثال های متفاوت نمایش دهیم تا از این پس در هر زمانی که نیاز به نمایش تاریخ و زمان در قالب خاصی داشتید بتوانید به سادگی با استفاده از این مثال ها کار خود را انجام دهید.
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);
String.Format("{0:y yy yyy yyyy}", dt); // "8 08 008 2008" year
String.Format("{0:M MM MMM MMMM}", dt); // "3 03 Mar March" month
String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}", dt); // "4 04 16 16" hour 12/24
String.Format("{0:m mm}", dt); // "5 05" minute
String.Format("{0:s ss}", dt); // "7 07" second
String.Format("{0:f ff fff ffff}", dt); // "1 12 123 1230" sec.fraction
String.Format("{0:F FF FFF FFFF}", dt); // "1 12 123 123" without zeroes
String.Format("{0:t tt}", dt); // "P PM" A.M. or P.M.
String.Format("{0:z zz zzz}", dt); // "-6 -06 -06:00" time zone
شما می توانید بین تاریخ و زمان از جدا کننده هایی مانند "/" و ":" استفاده نمایید.
ادامه مطلب...
آموزش SQL Server 2014
بسم الله الرحمن الرحیم
آموزش SQL Server 2014
انشالله سعی خواهیم کرد در این دوره آموزشی برخی از مفاهیم و امکانات جدید SQL Server 2014 را بررسی کنیم.
در ابتدا برخی از مفاهیم پایه را بررسی خواهیم کرد و سپس در خصوص تغییرات ایجاد شده در نسخه جدید SQL Server بحث خواهیم کرد.
delayed durability
SQL Server 2014 ویژگی های زیادی را معرفی کرده است یکی از این ویژگی ها Delayed Transaction Durability که در performance و یا همان عملکرد SQL Server تاثیر بسزایی دارد. برای درک بهتر این ویژگی باید ابتدا Full Transaction Durability را بررسی کنیم. به صورت پیش فرض در حال حاضر SQL Server به صورت Full Transaction Durability عمل می کند. سوالی که بسیار مطرح می شود این هست چه نیازی است که ما از حالت پیش فرض به سمت delayed durability حرکت کنیم. جواب این پرسش را می توان اینگونه بیان کرد که اولویت با کارایی است نه با اتمام انجام یک عملیات.
وقتی در حال نوشتن این مقاله بودم نیاز بود تا چند مبحث مقدماتی را مطرح کنم و از همین رو این مباحث را جستجو کردم اما هیچ منبع فارسی پیدا نشد! واقعا عجیب است که همه بر ادعای خود در خصوص DBA پا فشاری می کنیم اما هیچ یک به مباحث پایه اساس بانک های اطلاعاتی اشراف نداریم، انشالله که دوستان لطف کنند و اینگونه مباحث را برای دیگران نیز مکتوب کنند.
قبل از ادامه دادن باید چند مبحث را بررسی کنیم تا ابتدا بدانیم در گذشته در بانک های اطلاعاتی چه اتفاقی می افتاده و هم اکنون چه اتفاقی می افتد.
در علم رایانه (پارسی را پاس داشتم) چهار مفهوم اصلی Atomicity, Consistency, Isolation, Durability وجود دارد که به صورت اختصار آن را ACID معرفی می کنند.
آموزش migration و Entity Framework در Code First
بسم الله الرحمن الرحیم
در دوره های گذشته آموزش های Code First را ارائه داده ایم که می توانید از طریق لینک زیر مطالعه بفرمایید
آموزش migration و Entity Framework در Code First
روش Code First به شما اجازه می دهد تا از روی کلاس های خود Table های پایگاه داده را ایجاد کنید. مثلا شما یک کلاس برای ثبت نام افراد ایجاد می کنید و Property ها این کلاس را (نام، نام خانوادگی و...) تعریف می کنید، سپس به وسیله Migration شما می توانید از روی این کلاس Table مورد نظر خود را ایجاد کنید.
Migration کلاس شما را که Model خوانده می شود به وسیله ابزاری که درVisual Studio 2013 و Visual Studio 2012با نام Package Manager Console قرار داده شده است تبدیل به Table های پایگاه داده می کند. وقتی شما می خواهید پایگاه داده خود را به وسیله Migration ایجاد کنید، چند انتخاب پیش روی شما قرار خواهد گرفت.
CreateDatabaseIfNotExists
با انتخاب این گزینه تنها اگر پایگاه داده شما وجود نداشته باشد، پایگاه داده شما به وجود خواهد آمد، اینکار باعث می شود که اگر قبلا پایگاه داده خود را ایجاد کرده اید، پایگاه داده شما از تغییرات محافظت شود.
DropCreateDatabaseWhenModelChanges
انتخاب این گزینه باعث می شود که اگر شما تغییری بر روی Model (کلاس سی شارپ) خود ایجاد کنید پایگاه داده شما هم بر روز شود مثلا اگر Property ایی با نام Name را به FirstName تغییر دهید، این تغییر بر روی دیتابیس نیز اعمال می شود. این گزینه برای زمان توسعه و تست سیستم ها بسیار مناسب است زیرا تغییرات به صورت خودکار بر روی پایگاه داده اعمال می شود.
از دستور زیر نیز می توانید استفاده کنید این دستور معادل DropCreateDatabaseWhenModelChanges می باشد.
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<Context>());ادامه مطلب...
آموزش طراحی یک پروژه MVC با jQuery UI
بسم الله الرحمن الرحیم
آموزش Entitiy Framework و Jquery
Code First & EF
در این مقاله قصد داریم به صورت خیلی ساده و سریع عملیات های CRUD (Create, Read, Update, Delete) را با استفاده از jQuery و Entity Framework code firstانجام دهیم.
کد پروژه را می توانید در پایان مقاله دانلود کنید.
ابتدا باید table خود را به صورت Code First طراحی کنیم.
اگر با Entity Framework و Code First و یا Migration ها آشنایی ندارید می توانید از مقالات زیر استفاده کنید.
دوره آموزشی Entity Framework و Code First
public class Userادامه مطلب...
{
public int UserID { get; set; }
[Required(ErrorMessage = "Please Enter Your Name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please Enter Your Address")]
public string Address { get; set; }
[Required(ErrorMessage = "Please Enter Your Contact No")]
public string ContactNo { get; set; }
}
public class DataContext : DbContext
{
public DataContext()
: base("DefaultConnection")
{
}
public DbSet<User> Users { get; set; }
}
آموزش async و await
بسم الله الرحمن الرحیم
آموزش برنامه نویسی غیر همزمان - async و await
C# 5.0
هنگامی در August 15, 2012 نسخه جدید سی شارپ یعنی C# 5.0 و همچنین به همراه آن .NET 4.5 وVisual Studio 2012 ارائه شد، دو ویژگی اصلی Async Programming و Caller Information به C# 5.0 اضافه شد.
Async Feature (Asynchronous Methods)
ویژگی جدید Async در C# 5.0 دو کلمه کلیدی async و await را معرفی می کند، این دو ویژگی به شما اجازه می دهد تا کدهای غیرهمزمان (asynchronous) خود را به صورت ساده و مستقیم مانند کدهای همزمان (synchronous) که در گذشته می نوشتید، بنویسید.
در نسخه های قبل از C# 5.0، برای نوشتن برنامه های asynchronous، شما نیاز داشتید که callback ها را تعریف کنید (این کار همچنین به عنوان continuations شناخته می شود)، این کار در واقع باعث می شود که پس از اجرای دستورات غیرهمزمان شما، کنترل برنامه در اختیار پردازش تعیین شده قرار گیرد.
طبیعتا این کار باعث می شود فرایند کار شما مشکل شود و exception handling در این روش بسیار پیچیده خواهد بود.
هر دو کلمه کلیدی با یکدیگر مورد استفاده قرار می گیرند. از این رو یک عملگر await بر روی یک و یا بیش از یک expression از یک متد async عمل می کند.
یک متد async یک شی Task و یا Task<TResult> را بر می گرداند که این شی نشان دهنده کار در حال انجام بر روی یک متد است. شی Task شامل اطلاعاتی در مورد فراخوان کننده متد asynchronous است که می تواند برای نمایش وضعیت Task و ID منحصر به فرد آن و یا خروجی متد مورد استفاده قرار گیرد.