ably ably برای هدایت شدن به سایت جدید اینجا کلیک کنید

آموزش برنامه نویسی

آموزش برنامه نویسی وب، اندروید، ویندوز , اسکیوال و...
Tell: 0912 097 5516
| Email: Hello@EduOnline.ir

۱۱۹ مطلب با موضوع «Web Development Teams :: MVC» ثبت شده است

ارسال و دریافت اطلاعات به روش JSON

بّسم الله الرحمن الرحیم

آموزش json در mvc

چند نکته در این آموزش مهم است :

اولا یک صفحه HTML یا CSHTML ایجاد کتنید در بالای صفحه jquery را لود کنید

<script src="/Scripts/jquery-1.9.1.js"></script>

بعد کد زیر را در ابتدای body قرار دهید


$(document).ready(function () {
    $("#login").click(function () {
        $("#message").html("Logging in...");
        var data = { "userid": $("#userid").val(),
                     "password": $("#password").val(),
                     "rememberme":$("#rememberme").prop("checked") };
        $.ajax({
            url: "/account/validateuser",
            type: "POST",
           data: JSON.stringify(data),
            dataType: "json",
            contentType: "application/json",
            success: function (status) {
                $("#message").html(status.Message);
                if (status.Success)
                {
                    window.location.href = status.TargetURL;
                }
            },
            error: function () {
                $("#message").html("Error while authenticating
                                    user credentials!");
            }
        });
    });
});

این کد در واقع دارد اطلاعات دو TextBox با Id های userid و password را به همراه یک چک باکس برای یادآوری اطلاعات کاربری دریافت می کند و به یک اکشن ارسال می کند طبیعتا اکشن ما باید به شکل زیر باشد

ادامه مطلب...

طراحی فرم لاگین با استفاده از JSON

بسم الله الرحمن الرحیم

 

آموزش JSON در ASP.NET MVC

طراحی یک فرم لایگن با استفاده از روش JSON

مزیت این روش در این است که اگر شما بخواهید اطلاعات کاربر را چک کنید نیازی نیست تا ضفحه را رفرش کنید و کاربر در صورتی که کلمه عبور خود را فراموش کرده و می خواهد نام کاربری و کلمه عبور خود را تست کند مدت زیادی را برای لود شدن صفحه صرف کند

برای شروع کار ابتدا در webconfig کد زیر را اضافه کنید


<connectionStrings>
  <add name="connstr" connectionString="data source=.\sqlexpress;
initial catalog=Northwind;integrated security=true"/></connectionStrings>
<system.web>

  <authentication mode="Forms">   
<forms loginUrl="~/account/login" defaultUrl="~/home/index"></forms>
  </authentication>

  ...

</system.web>

و همچنین کد زیر را به webconfig اضافه کنید

 


<membership defaultProvider="p1">
  <providers>
    <add name="p1" connectionStringName="connstr"
                   type="System.Web.Security.SqlMembershipProvider" />
  </providers>
</membership>

 

 

 حال یک کنترلر برای چک کردن اطلاعات ایجاد می کنیم


public ActionResult Login()
{
    return View();
}


[HttpPost]
public JsonResult ValidateUser(string userid, string password,
                               bool rememberme)
{   
LoginStatus status = new LoginStatus();
    if (Membership.ValidateUser(userid, password))   
{
        FormsAuthentication.SetAuthCookie(userid, rememberme);
        status.Success = true;
status.TargetURL = FormsAuthentication.GetRedirectUrl(userid, rememberme);

        if (string.IsNullOrEmpty(status.TargetURL))
        {
            status.TargetURL = FormsAuthentication.DefaultUrl;
        }
        status.Message = "Login attempt successful!";
    }
    else
    {
        status.Success = false;
        status.Message = "Invalid UserID or Password!";
        status.TargetURL = FormsAuthentication.LoginUrl;
    }
    return Json(status);
}

یک کلاس هم برای تعیین وضعیت کاربر در همان کنترلر ایجاد می کنیم


public class LoginStatus
{
    public bool Success { get; set; }
    public string Message { get; set; }
    public string TargetURL { get; set; }
}

یک صفحه HTML   یا CSHTML  ایجاد می کنیم که به شکل زیر است

 


$(document).ready(function () {
    $("#login").click(function () {
        $("#message").html("Logging in...");
        var data = { "userid": $("#userid").val(),
                     "password": $("#password").val(),
                     "rememberme":$("#rememberme").prop("checked") };
        $.ajax({
            url: "/account/validateuser",
            type: "POST",
           data: JSON.stringify(data),
            dataType: "json",
            contentType: "application/json",
            success: function (status) {
                $("#message").html(status.Message);
                if (status.Success)
                {
                    window.location.href = status.TargetURL;
                }
            },
            error: function () {
                $("#message").html("Error while authenticating
                                    user credentials!");
            }
        });
    });
});

 

برای جلوگیری از دسترسی کاربر به یکی از کنترلر ها مثلا برای کنترلر Home کد زیر را اضافه کنید تا وقتی که کاربر بخواهد به این صفحه دسترسی پیدا کند احراز هویت انجام شود

 

 


[Authorize]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

برای اضافه کردن یک کاربر به membership باید به صورت زیر عمل کنیم. در فایل Global.asax کد زیر را اضافه کنید

 


protected void Application_Start()
{
...
 MembershipCreateStatus status;

  Membership.CreateUser("User1",   "some_password_here", "user1@somewebsite.com",
  "question", "answer", true, out status);
}

 

آموزش Migrations و EntityFramework

بسم الله الرحمن الرحیم

 آموزش Migrations و EntityFramework

برای استفاد از EF Code First بهتر است از نسخه Migrations استفاده کنید برای استفاده از این نسخه می بایست ابتدا EF را نصب نمایید


Install-Package EntityFramework

 

 و سپس دستور


Enable-Migrations

را اجرا کنید اگر پروژه را قبلا با  Migrations اجرا کردید و حال می خواهید نسخه EntityFramework تغییر دهید و مجدد Migrations را فعال کنید حتما دیتابیس را حذف کنید به این دلیل که مشکلات زیادی را خواهید داشت اگر داده ارزشمندی در دیتابیس دارید می توانید برای از بین نرفتن داده ها اطلاعات جدول Migrations_ که در دیتابیس شما وجود دارد را حذف کنید

نکته ای در ارتباط با EntityFramework 6 و MVC

بسم الله الرحمن الرحیم

نکته ای در ارتباط با EntityFramework 6 و MVC

نسخه 6 EntityFramework

نمی توانید از Scaffolding پشتیبانی کند البته این مربوط به این زمان است ممکن است این مشکل بر طرف شود پس بهتر است به جای


Install-Package EntityFramework -Version 6.1.0

یا نسخه های بالاتر از نسخه 5 استفاده کنید این نسخه آخرین نسخه ای است که ازScaffolding پشتیبانی می کند


 Install-Package EntityFramework -Version 5.0.0 

آموزش WebApi

بسم الله الرحمن الرحیم

 آموزش WebApi

  این دوره آموزشی مقدماتی می باشد، برای مطالعه سایر مقالات این دوره لطفا از طریق لینک زیر اقدام کنید.

 

 مشاهده تمامی آموزش های دوره آموزش Web API

 

آموزش  Web API– سطح مقدماتی

 

آموزش   Web API

 

در قالب پروژه های MVC قالب جدیدی در خصوص ارسال و دریافت به روش معماری سرویس گرا و برنامه نویسی سرویس بر بستر HTTP به نام Web API معرفی گردید.

توضیحات تئوری بسیاری در راستای این تکنولوژی وجود دارد، ولی مهمترین مبحث، این است که اولا هدف از ارائه این روش منسوخ کردن روش WCF نیست بلکه استفاده از این تکنولوژی در بستر و ارسال و دریافت درخواست های مبتنی بر HTTP است.

این روش پیچیدگی های WCFرا در استفاده نخواهد داشت و به سادگی می توانید یک سرویس ساده تعریف کنید.

برای شروع کار یک پروژه MVC ایجاد کنید و در قالب مربوطه  نوع web API را انتخاب کنید. حال در بخش مدل کلاس زیر را اضفه کنید


namespace MvcApplication1.Models
{
    public class Employe
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public decimal salary { get; set; }
    }
}

خوب هیچکار خاصی انجام ندادیم و تنها یک کلاس ساده برای کارمندان ایجاد کردیم، حال یک کنترلر را با نام Employe و نوع Empty Api controller  ایجاد می کنیم و دستورات زیر را به آن اضافه می کنیم.

 

ادامه مطلب...

آموزش Remote در asp.net mvc

بسم الله الرحمن الرحیم

 آموزش asp.net mvc

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

برای شروع کار یک پروژه جدید MVC ایجاد می کنیم و در بخش Model یک کلاس جدید با نام Account ایجاد و کد زیر را در آن می نویسیم:

namespace MvcApplication2.Models

{
    [Table("Account")]
    public class Account

    {

        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        [Required]
        [Display(Name = "User name")]
        [Remote("ValidateUserName", "Account")]
        public string UserName { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]

        [DataType(DataType.Password)]
        [Display(Name = "New password")]
        public string NewPassword { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm new password")]
        [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]

        public string ConfirmPassword { get; set; }

    }

}

ادامه مطلب...

طراحی یک مدل از روی EDMX

بسم الله الرحمن الرحیم

آموزش asp.net mvc

 بنده شخصا از روش  Code First در تولید وب سایت های MVC استفاده می کنم. ولی شروع فراگیریم در ارتباط با MVC به صورت روش معمولی یا همان روش طراحی پایگاه داده با SQL و سپس اضافه کردن مدل مربوطه به پروژه و... بود. برخی از دوستان از همین روش هنوز برای طراحی پروژه های MVC استفاده می کنند، به همین دلیل با مشکلاتی مواجه می شوند (البته هر روشی مزایا و معایب خود دارد در این بخش قصد ندارم در خصوص مزایا و معایب روش ها صحبت کنم بلکه مقصود ارائه راه حل در مورد مشکلات است). یکی از مشکلاتی که با آن مواجه خواهیم شد بحث DataAnnotations و Metadata هایی است که شما برای ساخت یک View سفارشی کد نویسی می کنید. خوب هر بار که شما پایگاه داده خود را تغییر دهید و بخواهید به هر دلیلی مجددا از پایگاه داده خود Model ها را مجددا ایجاد کنید تمامی کد نویسی شما از بین خواهد رفت.

برای حل این مشکل کافی است که یک کلاس Partial تعریف نمایید و در آن فیلدهای خود را در آن بنویسید و سپس یک کلاس برای نگهداری Metadata تعریف نمایید، به این کلاس ها Buddy می گویند.

ادامه مطلب...

موتورهای View در asp.net mvc

بسم الله الرحمن الرحیم

آموزش asp.net mvc

همانطورکه می دانید موتورهای زیادی برای طراحی view سایت، در تکنولوژی MVC وجود دارد که دو موتور پیشنهادی از سوی مایکروسافت ASPX  و موتور قدرمتند Razor می باشد. علاوه بر این دو موتور یا به اصطلاح view Engine، موتور های دیگری نیز توسط گروه های مختلف طراحی گردیده است که 4 موتور پیشرو در این عرصه موتورهای spark، NHalm، NVelocity و Brail می باشد. NVelocity بر پایه Java apache و NHalm برپایه Ruby on Rails است.

ادامه مطلب...

using کردن در view

بسم الله الرحمن الرحیم

آموزش asp.net mvc

هنگامی که با یک view کار می کنید شما بدون اینکه Namespaceهای مربوطه را اضافه کرده باشید (برخلاف سایر کلاس ها) می توانید با تعدادی از Namespace ها بدون استفاده از دستور using کار کنید؟

برخی از فضاهای نام که بیشتر مورد استفاده خواهند بود به صورت پیش فرض توسط مایکروسافت در کلاس پیاده ساز view اضافه شده است. اما این کلاس کجاست؟

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

برای این کار بنده یک view با محتوای خاصی ایجاد کردم که در مسیر مربوطه پس از بررسی فایل ها به فایل مورد نظرم دست پیدا کردم و این فایل شامل اطلاعات زیر بود:

 

 

همان طور که در این فایل مشخص است Namespaceهایی به صورت پیش فرض توسط مایکروسافت به viewشما اضافه شده است. شما نیز می توانید به view خود Namespaceهای مورد نظر خود را اضاه کنید. اگر به یک فضای نام، تنها در یک view نیاز دارید بهتر است به روش معمولی آن را به صفحه اضافه کنید مثل کد زیر:


  @{
           MvcApplication2.App_Code.Class1 c = new MvcApplication2.App_Code.Class1();
           c.rets();
}

 

اما اگر به یک فضای نام در تمامی viewها نیاز دارید کافی است آن را در فایل web configیی که در فولدر view ها قراردارد، به صورت زیر اضافه کنید:


<namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="MvcApplication2.App_Code"/>
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />
      </namespaces>

آموزش html Healper

بسم الله الرحمن الرحیم

آموزش asp.net mvc

در بیشتر مواقع شما نیاز دارید تا یک html Healper را ایجاد نمایید و از ان برای جلوگیری از تکرار دستورات و یا ایجاد یک خروجی مناسب استفاده کنید. برای این فرایند کافی است ابتدا یک کنترلر به صورت زیر با نوع empty ایجاد کنید:


namespace MvcApplication2.Controllers
{
   public class SampleController : Controller
    {
        // GET: /Sample/
        public ActionResult Index()
        {
            List List = new List();
            List.Add("Esmaeil");
            List.Add("Mojtaba");
            List.Add("Reza");
            List.Add("Hasan");
            List.Add("Ali");
            ViewBag.List = List;
            return View();
        }
    }
}

حال view ای ایجاد و کد زیر را به آن اضافه کنید:

ادامه مطلب...

آموزش TagBuillder

بسم الله الرحمن الرحیم

آموزش asp.net mvc

یکی از روش های تولید تگ های HTML  اسنفاده از کلاس TagBuilder  می باشد. این کلاس خصوصیات های زیادی را ارائه می دهد که پرکاربردترین آن ها را به همراه یک مثال ارائه داده شده است.

یک کنترلر جدید با نام Sample ایجاد کنید و سپس کد زیر را به آن اضافه نمایید:

namespace ExternalHtml.Controllers

{
    public class SampleController : Controller

    {
         public MvcHtmlString CreateTagBuilder()

        {
              TagBuilder tagBuilderSpan = new TagBuilder("div");

            tagBuilderSpan.SetInnerText("کلمه عبور");

            TagBuilder tagBuilder = new TagBuilder("input");

            tagBuilder.AddCssClass("inputTypeClass");

            tagBuilder.Attributes.Add("type", "password");

            tagBuilder.GenerateId("input~TagBuilder");

            tagBuilder.IdAttributeDotReplacement = "input_TagBuilder";//Replace ~ char with _

            tagBuilder.MergeAttribute("enable", "false");//set enable with false for understand below tag

            tagBuilder.MergeAttribute("enable", "true", true);//true means exist tag replace and false denial tag

            tagBuilderSpan.InnerHtml += tagBuilder.ToString();

            return new MvcHtmlString(tagBuilderSpan.ToString());}

        //

        // GET: /Sample/

        public ActionResult Index()

        {
            ViewBag.TagBuilder= CreateTagBuilder();

           return View();
        }
    }
} 



 

ادامه مطلب...

مرجع HTML Helper

بسم الله الرحمن الرحیم

آموزش ASP.NET MVC

در این مطلب قصد داریم کنترل های HTML Helper را معرفی نماییم. متناسب های با کنترل های HTML کنترلهایی را MVC ارائه می دهد که می توانید فرم های پویا برای ثبت اطلاعات طراحی نمایید:

از آن جا که تمامی دوستان با این کنترلها آشنا هستند فقط لیست این کنترلها با طرح یک مثال ارائه می شود:

برای شروع کار یک پروژه MVC ایجاد و سپس نوع آن را empty انتخاب کنید، حال یک کنترلر با نام Sample ایجاد و سپس view مربوطه را نیز ایجاد کنید و دستورات زیر را در view قرار دهید:

ادامه مطلب...

آموزش طراحی قالب Responsive

بسم الله الرحمن الرحیم

آموزش طراحی قالب Responsive

در این بخش قصد دارم به صورت مختصر آموزش ساخت یک قالب Responsive را آموزش دهم. بدون هیچ بحث اضافی سراغ مباحث مربوطه می رویم:

برای نمایش عناصر صفحه در مقایس های مختلف مثل کامپیوتر ها یا تبلت و در نهایت موبایل به نحوی که بتوان اطلاعات را به صورت صحیح نمایش داد نیاز است شما در مورد هر مقایس تصمیمی اخذ نمایید برای این فرایند کافی است از دستور media@ استفاده نمایید. ساختار این دستور بسیار ساده می باشد. در دستور زیر ما مشخص کردیم که اگر خروجی ما صفحه نمایش بود و سایز ما حداقل 1200 پیکسل بود تغییرات مورد نظر صورت گیرد. این کار را به صورت های زیر می توان انجام داد:

درون یک فایل StyleSheet


@media screen and (min-width : 1200px) {  
  /* let's do somethin' */
}

لینک دادن به یک StyleSheet


<link rel="stylesheet" media="screen and (min-width: 1200px)" href="small.css" /> 

در روش بالا اگر سایز ما حداقل 1200 پیکسل بود فایل مشخص شده به صفحه ما اضافه می گردد.

لینک دادن به یک فایل StyleSheet (در صورت موبایل بودن دستگاه یا هر دستگاهی با نهایت وضوح 480 پیکسل)


<link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="mobile.css" />  

لینک دادن به یک فایل StyleSheet درون دستورات CSS


@import urlsmall.css ) screen and ( min-width1200px );  

استفاده از عملگرهای منطقی

AND


@media (min-width: 600px) and (max-width: 800px) {
  html { background: red; }
}

OR


@media (max-width: 600px), (min-width: 800px) {
  html { background: red; }
}

NOT


@media not all and (max-width: 600px) {
  html { background: red; }
}

Exclusive


@media (max-width: 400px) {
  html { background: red; }
}
@media (min-width: 401px) and (max-width: 800px) {
  html { background: green; }
}
@media (min-width: 801px) {
  html { background: blue; }
}

Overriding

@media (min-width: 400px) {
  html { background: red; }
}
@media (min-width: 600px) {
  html { background: green; }
}
@media (min-width: 800px) {
  html { background: blue; }
}

در نهایت یک مثال کامل


@media 
  only screen and (min-width: 100px),
  not all and (min-width: 100px),
  not print and (min-height: 100px),
  (color),
  (min-height: 100px) and (max-height: 1000px),
  handheld and (orientation: landscape)
{
  html { background: red; }
}

مرورگرهایی که دستورات media@ را پشتیبانی می کنند:

  • Firefox 3.5+
  • Opera 9.5+
  • Safari 3+
  • Chrome
  • Internet Explorer 9+

یک قالب سایت ساده برای آموزش

یک مثال برای طراحی

آموزش Bundling

بسم الله الرحمن الرحیم

آموزش asp.net mvc

 در این بخش قصد دارم در خصوص بهینه سازی و افزایش سرعت لود صفحات وب مباحثی را بررسی نماییم.

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

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

ادامه مطلب...

قرارداد های MVC

بسم الله الرحمن الرحیم

آموزش ASP.NET MVC

ما در MVC  دو نوع قرارداد داریم در نوع اول قرارداد ها اختیاری هستند مثل قراردادن فایلهای تصاویر و.. در پوشه content، در صورتی که اینکار را انجام ندهید هیچ مشکل پیش نخواهد آمد. قرارداد های نوع دوم که به Convention Over Configuration معروف هستند، به این معنی که قرارداد بر پیکربندی ارجحیت دارد در این نوع قرارداد هاکه باعث راحتی کاربر می شود و این روش از Ruby and Rails گرفته شده است؛ شما نیازی ندارید که ارتباط بین کنترلر و View را مشخص نمایید.

کلاس کنترلر با کلمه Controller ختم می شود و route  ها یا HTML Helper ها فقط تا قبل از کلمه Controller اسم را می خوانند. Viewها و  partial viewها باید در پوشه ای با نام کنترلر خود قرار گیرند، البته باز هم نام کنترلر بدون قسمت Controller آن. نام اکشن ها باید همان نام View ها باشد.

نیاز به ذکر پسوند فایل های View  نیست خود موتور مورد استفاده می تواند تشخیص دهد که باید به دنبال چه پسوندی بگردد.(Razor بدنبال cshtml و aspx به دنبال aspx).  در زمان جستجو View ها ابتدا بدنبال view های قرار گرفته در پوشه هم نام با کنترلر و سپس در پوشه Shared، بدین معنا که باید viewهایی که چند جا فراخوانی می شوند را دراین پوشه قرار دهید.

برای نام گذاری قالب ها باید نام آن را با کاراکتر underline، "_"  شروع کنید و سپس در پوشه Shared قرار دهید. اگر viewایی قالب نداشته باشد به صورت پیش فرض قالب _Layout.cshtml به تمام view ها اعمال می شود این فرایند از طریق فراخوانی در فایل view/_viewStart.cshtml اعمال می شود. اگر می خواهید قالب خودتان را اعمال کنید کافی است دستور زیر را در فایل Layout.cshtml_ بنویسید:


@
{

            Layout = “~/Views/Shared/MyLayout.cshtml”;

}

 

قابلیت Edit and Continue

بسم الله الرحمن الرحیم

آموزش برنامه نویسی

یک قابلیت مناسب وجود دارد برای خطایابی برنامه ها در VS که شاید بعضی دوستان از این قابلیت استفاده نکنند به همین دلیل سعی کردم به صورت کوتاه آن را بیان کنم البته به همکاران انشالله بر نمی خورد شاید کسانی باشند خارج از مجموعه و بخواهند از مطالب استفاده کنند.

این قابلیت اجازه می دهد تا در صورت بر خورد با خطایی آن خطا در مرحله debug بررسی و برطرف و به اجرای برنامه ادامه دهید. برای فعال سازی این قابلیت کافی است از منوی tools گزینه option وسپس در بخش سمت چپ گزینه debugging  گزینه edit and continue enable را فعال کنید و سپس ok را بزنید. حال از منوی project گزینه properties را انتخاب نمایید سپس در پنجره باز شد در بخش سمت چپ گزینه web و در نهایت edit and continue enable را فعال کنید.

فقط این قابلیت در همه جا قابل استفاده نیست مثلا در مواردی که از متغییر های نوع dynamic مثل viewbag استفاده می کنید.

متدولوژی Domain Driven Design

بسم الله الرحمن الرحیم

این مطلب را برای دوستان طراح قرار دادم انشالله مفید واقع شود

 

متدولوژی Domain Driven Design

قبل از پرداختن به متدولوژی مربوطه می بایست با چند مبحث آشنا شویم.

Domain Model نمایی کلی از هر آنچه در سیستم می گذرد که قلب یک برنامه MVC است که قسمت های دیگر مثل View,Controller فقط وظیفه ایجاد ارتباط با این قسمت را دارند.

یک Domain Model شامل موارد زیر است:

اجزای سی شارپ مانند کلاس ها، Structها و همانند آنکه در مجموع به آن Domain type گفته می شود.

عملیاتی که در Domain Model انجام می شوند به وسیله متدهایی که در Domain Type تعریف شده اند انجام می پذیرند.

زمانی که نمونه ای از یک Domain Type را که نمایانگر موجودیتی است ایجاد می کنید، در حقیقت در حال ایجاد یک Domain Object هستید.

 

یک روش خوب برای ایجاد Domain Model ایجاد یک پروژه از نوع Class Library  تنها برای Domain Model است بدین ترتیب می توان از قسمت های دیگر پروژه به پروژه ی Domain Model ارجاع داشت.

در Asp.Net MVC  سه قابلیت برای کار با Domain Model وجود دارد:

Model Binding: همان ویژگی که در View از آن استفاده می کنید. (ارسال و دریافت پراپرتی ها به صورت یک مدل)

Model Metadata:روشهایی مانند [Display] که در مدل از آن استفاده می کنید.

Validation: اعتبارسنجی که در مدل انجام می دهید.

 

مدل کردن یک Domain

مدل کردن یک Domain یا Domain Modeling، فرایندی است که در طی آن اهداف و نیازمندی های پروژه شناسایی می شود.

ادامه مطلب...

کار با Ninject

بسم الله الرحمن الرحیم

آموزش dependency injection

این مطلب را برای تیم طراحی قرار دادم انشالله دوستان این تیم از آن استفاده نمایند.

چرا Ninject مفید است؟
بخش اعظمی از دست آوردهای به وجود آمده در حوزه نرم افزار از نسخه ابتدایی منتشر شده بدست می آید.
بیشتر زمان سرمایه گذاری شده در بخش تحلیل بعد از شروع به کار نرم افزار هزینه می شود.
باعث می شود تغییرات نرم افزار شما بسیار ساده تر انجام شود.

بعد از استفاده spring.net به مدت طولانی در asp.net به دنبال یک روش ساده تر و سریعتر و نه روشی بر پایه تریق وابستگی به صورت xml  بودم. برای برنامه های MVC4 در نهایت به Ninject رسیدم چون رویکرد آن XML ای نیست و ساده است و استفاده از آن راحت است.

چطور تزریق کننده وابستگی را انتخاب کنیم؟
هر تزریق کننده مزایا و معایب خود را دارد و یک سری ویژگی را با خود به همراه دارد.
انتخاب یک تزریق کننده بستگی به مواردی دارد که شما بیشتر نیاز دارید دارد و این موضوع کاملا قابل بررسی است.

Ninject یک تزریق کننده متن باز است که برای NET. به وسیله Nate Kohari تولید شده است و یک سری ابزار مناسب به همراه دارد که همچنین ابزارهایی نیز برای MVC3 در آن قرارداده شده است. به هرحال، اگر شما هم مثل من به دنبال راه جدید هستید Ninject را دوست خواهید داشت.

ادامه مطلب...

ساخت یک پروژه MVC

بسم الله الرحمن الرحیم

 

  این دوره آموزشی دارای پیش نیاز می باشد، برای مطالعه پیش نیاز این دوره لطفا مقاله "آموزش WebApi" مطالعه کنید.

 

 مشاهده تمامی آموزش های دوره آموزش Web API

 

آموزش  Web API– سطح پیشرفته

     بخش اول– آموزش Web API و ASP.NET MVC و RESTfull

 

آموزش   Web API

 

برای دوستان عزیز که در تیم های توسعه وب MVC فعالیت می کنند مطلبی را آماده کردم که انشالله مفید واقع شود البته این مطلب برای دوستانی مفید خواهد بود که تازه به جمع شرکت اضافه شده اند و هنوز به MVC مسلط نیستند.

البته دوستان لطفا قبل از شروع به خواندن این مطلب، مطلبی را که در همین بخش با عنوان معرفی Web Api قرار داده ام را مطالعه کنید.

 

خوب از آنجا که همه دوستان عزیز تیم های توسعه وب Net. با VS 2012 کار می کنند این مثال را با VS 2012 انجام می دهیم برای شروع یک پروژه جدید به صورت Internet Application ایجاد می کنیم.

new Projetc Internet Application

 

Entity Framework

ما از EF به صورت Code First برای Data Model استفاده خواهیم کرد. EF Code First اجازه می دهد تا جداول پایگاه داده را تولید کنیم با چیزی بیشتر از چند (Plain Old CLR Objects (POCO. به علاوه EF به ما اجازه می دهد تا از LINQ to Entities و Lambda expressions استفاده کنیم که باعث می شود صدور فرامین و کوئری ها آسان تر گردد.

ادامه مطلب...
up
ما را در گوگل محبوب کنید