بسم الله الرحمن الرحیم
این مطلب را برای دوستان طراح قرار دادم انشالله مفید واقع شود
متدولوژی 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، فرایندی است که در طی آن اهداف و نیازمندی های پروژه شناسایی می شود.
بسم الله الرحمن الرحیم
آموزش تزریق وابستگی
با توجه به اینکه چندین مطلب در مورد DI قرار دادم اما با توجه به مطلبی با عنوان معرفی متدولوژی DDD که برای دوستان قرار دادم و مثالی را در آن مطرح کردم و تصمیم گرفتم چند نکته جدید در بحث DI را در ادامه مثال مطلب DDD خدمتتان عرض کنم
همه با DI آشنا هستیم (در صورت عدم آشنایی لطفا مطالب قبلی را مطالعه نمایید) در مثال مطرح شده در مطلب DDD کدی به صورت زیر داشتید (پیشنهاد می کنم مطلب مربوطه را با عنوان معرفی متدولوژی Domain Driven Design برای درک هر چه بهتر این مطلب مطالعه فرمایید هر چند در صورت عدم مطالعه آن بحث زیر را متوجه خواهید شد) :
public class Account
{
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
}
public class People
{
public Account account { get; set; }
public int Id { get; set; }
public string FullName { get; set; }
public string NationalCode { get; set; }
}
public class Report
{
public People people { get; set; }
public int Id { get; set; }
public string Text { get; set; }
public DateTime RegisterDate{ get; set; }
آموزش برنامه نویسی
بسم الله الرحمن الرحیم
آموزش TDD - توسعه تست محور
این مطلب را برای دوستان تیم طراحی و تست قرار دادم انشالله مفید واقع شود.
توسعه تست محور
برای تست نرم افزار روش های متعددی وجود دارد، من شخصا در پروژه ها از روش Test Driven Development (TDD) یا به عبارتی توسعه تست محور استفاده می کنم این روش در واقع از تفکر Agile منشات می گیرد.
متاسفانه روش TDD و ابزار های موجود در این روش به خوبی با Asp.net Web Form سازگار نیست و ولی باز می توان از این روش استفاده کرد.
دو نوع از این ابزار ها را معرفی خواهم کرد:
بسم الله الرحمن الرحیم
آموزش ابزارهای ALT.Net
این مطلب را برای دوستان تیم طراحی و تست قرار دادم انشالله مفید واقع شود
معرفی برخی از ابزارهای ALT.Net
به ابزارهایی که جهت افزایش کیفیت و ابداع روش های جدید جهت افزایش بهره وری کار تولید می شوند را ALT.NET می گویند.
ابزارهایی که بسیار در تولید و توسعه نرم افزار کارا خواهند بود را معرفی کرده ام و البته در هر مورد چند نمونه ذکر کردم اما مطما تنها کافی است که بهترین را از دیدگاه خود و نیاز های خود انتخاب کنید و در طراحی خود از آن بهره ببرید من شخصا از هر مجموعه تنها یک ابزار را انتخاب و با آن کار می کنم اما بدلایلی چون شاید انتخاب من انتخاب مناسبی برای شما نباشد از مشخص نمودن ابزارهایی که از آنها استفاده می کنم خود داری کرده ام و انتخاب را به عهده خودتان قرار داده ام البته شاید با توجه کردن به مطالب آموزش داده شده در این وبلاگ به انتخاب من نیز پی ببرید:
برنامه های آزمایش واحد
NUnit
بسم الله الرحمن الرحیم
بررسی Unity, Castle Windsor, StructureMap و Ninject
یک مقایسه سریع بر روی چهار DI و IoC داشتم و ابزارهای Unity, Castle Windsor, StructureMap و Ninject را با دو سناریو متفاوت بررسی شدند.
در یکی از سناریوها ایجاد اشیا بدون سازنده و در سناریو دیگر اشیا با پارامترهای تزریق شده در سازنده شان بررسی شدند.در ابتدا قبل از هر چیزی سعی کردم مطئن شویم که در زمان فراخوانی متدها اشیا ایجاد شوند. نتیجه ایجاد اشیا به وسیله سازنده پیش فرض به صورت زیر است.
بسم الله الرحمن الرحیم
Action ها می تواننند مقادیر مختلفی را بر گردانند در این آموزش قصد داریم نحوه ایجاد یک ActionResult را برای بازگرداندن یک فایل بررسی کنیم.
برای این کار کافی است به صورت زیر عمل کنید
public ActionResult Index()
{
string path = Server.MapPath(@"~/Images/logo.png");
return (File(path, contentType: "ABLY", fileDownloadName: "logo.png"));
}
همانطور که مشاهده می کنید بسیار کار ساده ای را در اینجا انجام داده ایم.
پارامتر اول در واقع مسیر و نام و پسوند فایلی است که می خواهید دانلود شود.
پارامتر دوم contentType برای معرفی محتوای فایل به برنامه های دانلود و مرورگر می باشد.
پارامتر سوم که fileDownloadName می باشد در واقع همان نام فایلی است که میخواهید در هنگام دانلود برای کاربر نمایش داده شود.
بسم الله الرحمن الرحیم
ارزیابی رفتار کاربران و ثبت گزارشات
سئو سایت
امروزه با توجه گسترش حوزه نرم افزار و الخصوص وب سایت، بسیاری از تجارت ها، فناوری ها، روابط و فعالیت ها توسط وب سایت ها صورت می گیرد.
این گستردگی و پیشرفت تا حدی رسیده است که حتی کشوری مانند امریکا در حال تغییر پشتوانه خود به داده است!
این جمله بدین معنا است که با داشتن دانش و داده در هر زمینه ای می توان حاکمیت آن موضوع را در دست گرفت.
برای جمع آوری داده (Data) و تبدیل آن به دانش (information) می توان از روش های مختلفی استفاده کرد و این روش ها بسیار متنوع و گوناگون هستند و می توانند بر اساس نیاز در زمان و محیط های مختلف مورد استفاده قرار گیرند.
تا چندین سال پیش ارزیابی رفتار کاربران در ارتباط با یک وب سایت فرایند بسیار مشکلی تلقی می شد، زیرا این تکنولوژی فقط در اختیار شرکت های بزرگی همچون گوگل بود، و در صورتی که شما نیاز به اطلاعات خاصی همچون، میزان ماندن هر کاربر در وب سایت، مطالب جذاب برای کاربران، محتواهایی که بیشترین جذابیت را برای کاربران دارد و... داشتید می بایست از سرویس های این شرکت ها استفاده کنید، و طبیعتا هزینه این سرویس ها بسیار گزاف بود و در نهایت بزرگترین مشکل برای وب سایت های ایرانی قابل دسترسی نبود.
کاربر ABLY
دقیقا همینطور هست که در متن گفتید. باید تخته هوشمند ...
کاربر ABLY
با سلام عالی بود. لطفا مبحث فلاتر رو هم ادامه ...
مدیر سایت
سلام و درود ممنون از لطفتان بله حتما ...
کاربر ABLY
درود و سپاس از مطلبتون درمورد WHILE @@FETCH_STATUS = 0 ...
کاربر ABLY
ممنونم. استفاده بردم. ...