Ekstremal ASP.NET - ASP.NET MVC ilovalaringiz uchun ishlash tamoyillari
REJA: Oddiylik
Kontroller harakati
Oddiy ko'rinishlar
Ko'rish ustasini qo'shish
Ajratish orqali oddiylik muammosiz kontrollerlar Tekshirgichlar va xavfsizlik Oddiy ko'rinishlarHTML yordamchilariKuchli yozish Ko'zga tashlanmaydigan JavaScript Qisman ko'rinishlarKo'rinishlar va xavfsizlikKatta modellarBirlik testlari
Microsoft ASP.NET MVC 1.0 versiyasi nisbatan yaqinda chiqarilgan bo'lsa-da, ramka atrofidagi ko'plab naqsh va tamoyillar uzoq vaqtdan beri mavjud. Model View Controller (MVC) naqshining o'zi 1970-yillardan Smalltalk ishlab chiquvchilari tomonidan o'tkazilgan va u turli ramkalarda, keng tillarda va turli platformalarda qo'llaniladi. Shunday qilib, biz dasturiy ta'minot ekotizimimizni ko'rib chiqish orqali ramkadan qanday qilib eng yaxshi foydalanish haqida ko'p narsalarni bilib olamiz.
Ushbu maqolada men ASP.NET MVC ramkasi bilan ishlashda rioya qilishingiz kerak bo'lgan ba'zi printsiplarni bayon qilmoqchiman. Bu tamoyillar qoidalar emas, balki omon qolishi va bitta versiyadan tashqari rivojlanishi kerak bo'lgan ASP.NET MVC ilovalarini yaratishda siz qadrlashingiz va yodda tutishingiz kerak bo'lgan ideal va qadriyatlardir.
Ajratish orqali soddalik Yoshligimda boshqotirmalarni yaxshi ko‘rardim. Murakkab va tartibsiz shakldagi jumboq bo'laklari to'plamidan olma surati kabi oddiy sahnalarni yaratish ajoyib tuyg'u edi. Bu murakkablik muhabbati men dasturiy ta'minot ishlab chiqaruvchisi sifatida har kuni kurashadigan virusdir.
Ishlab chiquvchilar sifatida biz jumboqning teskari yo'nalishida ishlashni xohlaymiz. Oddiy narsalarni murakkablashtirish o'rniga, biz murakkab narsalarni oddiy qilishga harakat qilishimiz kerak. Atrofimizdagi ko'plab texnologiyalar bizga soddalik sari harakat qilishimizga yordam beradi; texnologiyalardan unumli foydalanishimiz kerak xolos.
Misol tariqasida CSS va HTMLni olaylik, chunki bu har bir veb-ishlab chiquvchi tanish bo'lishi kerak bo'lgan ikkita texnologiya. Agar foydalanuvchi e'tiborini veb-sahifalarimda javob bera olmagan savollarga qaratmoqchi bo'lsam, muvaffaqiyatsiz savollarning fon rangini qizil rangga o'zgartirishim mumkin. Men buni har bir muvaffaqiyatsiz savolda qizil rangni uslub sifatida belgilash orqali amalga oshirishim mumkin yoki qizil rangni ko'rsatuvchi CSS qoidasini yaratishim va har qanday muvaffaqiyatsiz savol elementlarini ushbu uslub qoidasiga yo'naltirishim mumkin edi.
CSS yechimi biroz ko'proq ishlashni talab qilishi mumkin bo'lsa-da, chunki men faqat HTML o'rniga CSS va HTMLni yozaman - oxir-oqibat u o'zini oddiyroq hal qiladi. CSS qoidasidan foydalanish mening ilovamdan takroriy uslub ma'lumotlarini olib tashlaydi va men bitta uslub qoidasini o'zgartirish orqali barcha muvaffaqiyatsiz savollarning rangini osongina o'zgartirishim mumkin. CSS yondashuvi, shuningdek, nomidan foydalanish maqsadini ko'rsatadigan qoida yaratishga imkon beradi, masalan, failedValidation menga #FF0000 ni o'qishdan ko'ra ko'proq ma'lumot beruvchi kod qismidir. CSS yondashuvining ushbu fazilatlari dasturni saqlash va o'zgartirishni osonlashtiradi, bu biz erishishga intilayotgan soddalikdir.
CSS-ni HTML bilan birgalikda ishlatish oddiylikning yana bir xususiyatini ko'rsatadi, ya'ni CSS va HTML alohida va aniq mas'uliyatga ega bo'lishi mumkin. HTML faqat veb-sahifaning tuzilishi uchun javobgar bo'ladi va CSS veb-sahifaning ko'rinishi uchun javobgar bo'ladi. Bu mas'uliyatni ajratish yoki "tashvishlarni ajratish" dasturiy ta'minotning murakkabligiga qarshi kurashda juda kuchli quroldir. Siz hech qachon veb-sahifani aks ettiruvchi ob'ektni faqat ma'lumotlarga kirish, ma'lumotlarni bog'lash, biznes qoidalarini tekshirish va noto'g'ri kiritish maydonining fonini qizil rangga bo'yash uchun javobgar ekanligini aniqlash uchun o'zgartirishga kirganmisiz? Ob'ektni o'zgartirish oson bo'ldimi? Ushbu murakkab mantiq jumbog'ida amalga oshirishingiz kerak bo'lgan bitta o'zgartirish so'roviga e'tibor qaratish osonmi?
MVC dizayn namunasi qisman vaqt o'tishi bilan o'zini muvaffaqiyatli isbotladi, chunki naqsh mas'uliyatni ajratishga majbur qiladi. Bu bizga aniq vazifalarga e'tibor qaratish, amalga oshirish tafsilotlarini yashirish va boshqa komponentlarga xalaqit bermaydigan o'zgartirishlar kiritish imkonini beradi. Masalan, MVC da ko'rish komponenti faqat ma'lumotlarni taqdim etish uchun javobgardir. Ko'rinishda bo'lganimizda, biz taqdimotga e'tibor qaratishimiz mumkin va ma'lumotlar qayerdan kelib chiqishi haqida tashvishlanmasligimiz mumkin. Ma'lumotlarga kirish kodi haqida qayg'urmasdan ko'rinishga o'zgartirishlar kiritishimiz mumkin.
Ajratish orqali soddalikni nazarda tutgan holda, keling, modelni ko'rish-nazorat qilish sxemasidagi uchta komponentning har biri bo'yicha aniq ko'rsatmalarni ko'rib chiqaylik.
Muammosiz boshqaruvchilar
MVC naqshida kontrollerlar harakatning o'rtasida joylashgan. Tekshirgichlar kiruvchi so'rovlarni boshqaradi, model bilan o'zaro ishlaydi va ko'rsatish uchun ko'rinishlarni tanlaydi. O'zlarining pozitsiyalari tufayli, nazoratchilar tashvishlarni ajratishni saqlab qolishda amalga oshirish qiyin bo'lishi mumkin. Siz tirishqoq bo'lishingiz va nazoratchilaringiz dastur mantig'ining markaziy qismiga aylanishiga yo'l qo'ymasligingiz kerak.
Misol tariqasida, men Oksitning ikki xil versiyasida kontrastni chaqirmoqchiman. Oxite ochiq kodli kontentni boshqarish tizimi va ASP.NET MVC ramkasi bilan yaratilgan va CodePlex-da codeplex.com/oxite/ saytida joylashtirilgan blog dvigatelidir . Oxite-ning dastlabki versiyasida (taxminan 2008 yil dekabr), blog postini saqlash uchun mas'ul bo'lgan nazoratchi 103 qator C# kodini tashkil etdi. Amal postni tasdiqlash, post va uning teglari o‘rtasidagi munosabatni boshqarish, post va uning ota-onasi o‘rtasidagi munosabatlarni boshqarish, post yangi yoki mavjud postning tahrirlangan versiyasi ekanligini aniqlash va postni omborga saqlash uchun javobgar edi.