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

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

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

متدولوژی 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، فرایندی است که در طی آن اهداف و نیازمندی های پروژه شناسایی می شود.

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

برخی مشکلات تکنولوژی Asp.Net Web Forms

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

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

برخی مشکلات تکنولوژی Asp.Net Web Forms

 

View State

 از View State برای نگه داری وضعیت صفحه در هنگام رد و بدل شدن درخواست و پاسخ بین کلاینت و سرور استفاده می شود. این فیلد به صورت مخفی است و گاهی به دلیل فضای زیادی که اشغال می کند مشکلاتی را به وجود می آورد کسانی که با این تکنولوژی کار کرده اند حتما مثال هایی در ذهن دارند، حجم زیاد این فیلد باعث از بین رفتن پهنای باند و طولانی شدن زمان بارگذاری صفحه می شود

 

Page Life Time

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

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

تاریخچه برنامه های مبتنی بر وب

 

 

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

تاریخچه برنامه های مبتنی بر وب

بازه انتشار

نام تکنولوژی

مزایا

معایب

وقتی به دنیا آمدم

Common Getway Interface

(CGI)

·        آسان

·        انعطاف پذیر

·        گزینه اول وآخر

برنامه خارج از وب سرور اجرا می شود و به ازای هر درخواست یک پروسه ایجاد می کند

زمانی که ما شرکتی هنوز نداشتیم (کودک بودیم)

Microsoft Internet Database Connector

در وب سرور اجرا می شود

فقط واسطه ای که اجابزه انجام دستورات متداول SQL  را می دهد

1996 (زمانی در حال فراگرفتن علوم کامپیوتر بودیم)

Active Server Page

(ASP)

چند منظوره

کامپایل وتفسیر دستورات در زمان اجرا

کدهای در هم آمیخته (مثل سالاد فصل)

 

2002-2003

(شروع کار به صورت مبتدی)

Asp.Net Web Form 1.0/1.1

·        کدهای کامپایل شده

·        کنترل هایی که وضعیت خود را نگه می دارند

·        امکانات زیاد و زیر ساخت قدرتمند

·        دیدگاه جدیدی از برنامه نویسی شی گرا

مصرف زیاد پهنای باند

کدهای HTML غیر بهینه

سخن بودن تست کد

2005(تاسیس اولین شرکت)

Asp.Net Web Form 2.0

 

 

2007 (فعالیت به صورت حرفه ای)

Asp.Net Ajax

 

 

2008 (تغییر حوزه کاری شرکت )

Asp.Net Web Form 3.5

 

 

2009 (فعالیت در حوزه و شرکت جدید)

Asp.Net MVC 1.0

 

 

2010 (فراهم کردن بستر و آموزش نیروها)

Asp.Net Web Form 4.0

Asp.Net MVC 2.0

 

 

2011 (به دنبال ایجاد زیرساخت )

Asp.Net MVC 3.0

 

 

 

2012 (فراهم کردن بستری حرفه ای)

Asp.Net MVC 4.0

Asp.Net Web Form 4.0

 

 

شد آنچه شد

کار با Ninject

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

آموزش dependency injection

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

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

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

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

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

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

Design Patterns و Dependency Injection

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

آموزش dependency injection

امروزه تمرکز بیشتری از گذشته بر روی استفاده مجدد از کامپوننت های موجود و ارتباط بین کامپوننت های مستقل به شکل یک معماری منسجم مطرح است.

اما این ارتباط در انجام وابستگی می تواند به دلیل اندازه نرم افزار و افزایش پیچیدگی باعث ایجاد ترس شود. یک راه برای کاهش تکثیر وابستگی استفاده از تزریق وابستگی یا به اصطلاح  Dependency Injection  که به صورت مختصر (DI) است که اجازه می دهد یک شی را به یک کلاس تزریق کنید بجای اینکه در کلاس خود شی ایجاد شود، تکثیر وابستگی با تزریق بسیار متفاوت است وقتی یک شی را می سازید تکثیر می کند اما تزریق اینطور نیست کمی اگر صبور باشید آن را نیز فرا خواهید گرفت.

استفاده از یک کلاس کارخانه یکی از راه حل های موجود است. هنگامی که یک جزء، (Component) یک نمونه خصوصی از کلاس دیگر را می سازد، آن مقدار دهی منطقی می شود درون آن جزء، این مقدار دهی منطقی بندرت خارج از ساخت جزء قابل استفاده است بنابراین   برای هر کلاسی که نیاز به این نمونه دارد باید فرایند ساخت تکرار گردد (اضافه کردن سربار به سیستم قابل توجه دوستان طراح وب).

برای مثال اگر کلاس Foo یک شی از کلاس Bar بسازد و نمونه ای از کلاس Bar  نیاز به چندین مقدار دهی داشته باشد و برای هر نمونه متفاوت باشد، کلاس های دیگر که نمونه ای از کلاس Bar را می سازند مجبورند نمونه ای  با مقداری یکسان دوباره بسازند! (توضیح دادن آن کمی پیچیده است انشالله در مثال ها بیشتر متوجه خواهید شد.)

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

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

ساخت یک پروژه 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 استفاده کنیم که باعث می شود صدور فرامین و کوئری ها آسان تر گردد.

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

بهینه سازی کوئری

 

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

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

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

برای اینکه بفهمید چطور می توانید یک کد اسکیوال با کارایی مناسب بنویسید نیاز است که درک کنید که کدهای بهینه چطور کار می کنند.

 

بهینه ساز های کوئری اسکیوال بهینه سازی را بر مبنای هزینه انجام می دهند.

 

این آنالیز ها یکی از روش های اجرایی انتخاب شده است برای کوئری مشخص، تخمین زدن هزینه هر کدام از این روش ها و انتخاب روشی که کمترین هزینه در بین گزینه های مورد نظر را داشته باشد

درواقع با توجه به اینکه بهینه ساز کوئری نمی تواند هر طرح ممکن را برای هر کوئری در نظر گیرد

این عملا انجام یک فعالیت متعادل بر پایه ی هزینه است که درنظر گرفتن دو هزینه یکی هزینه یافتن روش بالقوه و دیگری هزینه خود روش.

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

حذف کانکشن های یک دیتابیس

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

برای دوستان عزیز که در تیم طراحی پایگاه داده SQL فعالیت می کنند این کد بسیار کارا خواهد بود.

 

برای اینکه شما بتوانید یک پایگاه داده را Restore کنید می بایست ابتدا تمامی Connection های آن را حذف کنید برای این فرایند کافی است که دستور زیر را بر روی پایگاه داده خود اجرا نمایید (بجای MyDATABASE نام پایگاه داده خود را وارد نمایید). البته این مشکل مربوط به نسخه های قدیمی SQL می باشد.

اما به هر حال بسیاری از مواقع شما نیاز دارید تمامی Connnection های فعال اسکیوال سرور را حذف کنید. برای این کار کافی است تکه کد زیر را بروی دیتابیس مورد نظر خود اجرا کنید.

 

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