1-blok


Легкие вопросы
Расскажите порядок действия при создании проекта по технологии ASP.NET MVC;
Какая архитектура приложений, созданных по технологии ASP.NET MVC?
Какие преимущества технологии ASP.NET MVC перед другими технологиями?
Какие составные части приложения ASP.NET MVC Вы знаете?
Какие папки содержат приложения, сосзданные по технологии ASP.NET MVC?
Какие файла могут находиться в папке Controllers?
Какие файла могут находиться в папке Models?
Какие файла могут находиться в папке App_Data?
Какие файла могут находиться в папке Views?
Что содержится в файле Global.asax?
Что содержится в файле Web.config?
Что содержится в файле Route.config?
Что содержится в файле _Layout?
Как осуществляется маршрутизация приложения, созданного по технологии ASP.NET MVC?
Расскажите о порядке работы веб-сайта, созданного по технологии ASP.NET MVC?
Для чего предназначен файл Global.asax?
Как осуществляется фильтрация данных в приложении, созданного по технологии ASP.NET MVC?
Как создается контроллер в приложении, созданного по технологии ASP.NET MVC?
Как создается представлении в прилдожении, созданного по технологии ASP.NET MVC?
Что определяется в файле, созданного в папке Models, когда необходимо работать с базой данных?
Для чего используется технология Entity Framework в приложении, созданного ASP.NET MVC?
Какие действия нужно предпринять, чтобы присоединить Базу данных по технологии ADO.NET в приложение, созданного по технологии ASP.NET MVC?
Чем отличается технология ADO.NET от технологии ASP.NET MVC? Какие создаются файлы при применении технологии Entity Framework?
Какие действия нужно предпринять, чтобы присоединить Базу данных по технологии Entity Framework в приложение, созданного по технологии ASP.NET MVC?
Расскажите вкратце о методах Entity Framework для создания модели Базы данных? В чем причина, для какой цели используется модель Базы данных вместо ее самой?
1-деңгей
1.1. АSP.NET MVC технологиясын пайдалана отырып, жобаны жасау кезінде әрекеттің тәртібін айтыңыз.
ASP.NET MVC 5 платформасында веб-қосымша құру үшін - Visual Studio 2013 немесе Visual Studio 2015 қажет .
Visual Studio 2015 орнатылғаннан кейін оны ашып, мәзірде File (Файл) New Project... (Құру жобасы) тармақты таңдаймыз. Алдымызда жобаны құру диалогтық терезесі ашылады, мұнда Visual c# шаблонының ішінде, веб бөлімінде ASP.NET Web Application (.NET Framework): шаблонын таңдап, төменде осы жобаға атау береміз.
Осыдан кейін жаңа қосымшалар үлгісін таңдау терезесі ашылады. Әдепкі бойынша, қазірдің өзінде MVC үлгі таңдалған.
Сонымен қатар, осы тілқатысу терезесі тестілеу қою опциясына мүмкіндік береді.
Сондай-ақ, терезесінің оң жақ бөлігінде бізге қосымшада аутентификация тетігін таңдау қол жетімді (Change Authentication тетігі). Әдепкі бойынша Individual User Accounts түрі орнатылған. Оны өзгертуге болады.
Егер біз Change Authentication батырмасын бассақ, онда бізге сәйкестендіру типтерін таңдау келесілері қол жетімді:
"Олар
• No Authentication: - қосымша аутентификация талап етпейді
• Individual User Accounts:жеке аутентификация талап етіледі, пайдаланушылардың есеп жазбалары деректер базасында сақталады, сонымен қатар, аутентификация әлеуметтік желілердің көмегімен қол жетімді.
• Organizational Accounts: негізінен Active Directory немесе Office 365 пайдаланатын корпоративтік қосымшаларға арналған
• Windows Authentication: шоттарды басқару үшін intranet-қосымшасы деп аталатын Windows аутентификациясы пайдаланылады.
OK түймесін басыңыз, және жаңа жоба құрылады. Оның құрамында тармақталған құрылым бар және біраз әдепкі толтыруларға ие. Жобасы орындауға іске қосамыз, және бізге біршама контент бейнеленеді.
MVC 5 Жобаның құрылымы
Барлық осы функционал мынадай құрылым жобасымен қамтамасыз етіледі:
• App_Data: құрамында қосымшаға пайдаланылатын файлдар, қорлар, деректер базасы бар.
• App_Start: қосымшаны іске қосу кезінде баптандыру логикасын қамтитын бірқатар статикалық файлдарды сақтайды.
• Content: құрамында c# немесе javascript кодын қамтымайтын көмекші файлдар болады, және олар қосымшасымен бірге өрістетіледі, мысалы, css стильдер файлдар
• Controllers: бақылау(контреллер) класстарын қамтитын файлдарды сақтайды. Әдепкі бойынша, бұл папкаға екі контроллер қосылады - HomeController және AccountController
• fonts: қосымшаға пайдаланылатын қаріптер файлдарды сақтайды
• Models: құрамында модельдер файлдары болады. Әдепкіде, Visual Studio есептік жазбаны сипаттау үшін және аутентификация қызметын сипаттауға бір-екі модельдерді қосады.
• Scripts: javascript тіліндегі скрипттар және кітапханалармен каталог.
• Views: мұнда ұсыныстар(представлениялар) сақталады. Барлық ұсыныстар әрқайсысы бір бақылаушыға сәйкес келетін папка бойынша топтастырылады. Сұрау салуды өңдегеннен кейін, контроллер осы ұсыныстардың бірін клиентке жібереді. Сондай-ақ, мұнда құрамында жалпыға ортақ ұсыныстар сақтайтын Shared каталогы бар.
• Global-ды.asax:, қосымша қосылған кезіндегі және бастапқы инициализацияны орындайтын файл. Әдетте, мұнда App_Start қалтадағы айқындалған класстар әдістері жүзеге асырылады.
• Startup.cs: MVC 5 қосымшада OWIN ерекшелікті қолданатын кітапхана пайдаланылатын болса, онда осы файл OWIN және қосымша арасындағы байланысты ұйымдастырады. (OWIN қосымша компоненттері арасындағы өзара іс-қимылды сипаттайтын ерекшелікті ұсынады)
• Web.config: қосымша конфигурациясың файлы
1.2.ASP.NET MVC технологиясы бойынша жасалған қосымшалардың (бағдарламаның) архитектурасы қандай?
ASP.NET үлкен коммерциялық жетістікке айналды, бірақ веб-дамудың қалған әлемі де дамып келеді және Microsoft Web Forms жақсы дамығанымен, оның негізгі дизайндары өте ескірген. 2007 жылдың қазанында Техас штатындағы Остин қаласындағы ALT.NET конференциясында Microsoft корпорациясының вице-президенті Скотт Гутри жаңа ASP.NET платформасына негізделген жаңа MVC дамыту платформасын жариялады және көрсетті, ол осындай технологиялардың дамуына тікелей жауап ретінде тұжырымдалды. Төмендегі бөлімдерде бұл жаңа платформа Web Forms шектеулерін қалай жеңіп шығып, ASP.NET-ді қайтадан асыра сипаттайды. MVC архитектурасы Архитектуралық MVC үлгісін және ASP.NET MVC Framework арасындағы айырмашылық маңызды. MVC үлгісі жаңа емес, оның тамыры 1978 жылы Xerox PARC кезіндегі Smalltalk жобасы, бірақ ол мынадай себептер бойынша веб қолданбалар үшін үлгі ретінде қәзіргі уақытта үлкен танымалдылыққа ие болды: MVC қолдану пайдаланушылық интерфейс табиғи цикл мынадай: Пайдаланушы орындайды бағдарламаға жауап іс-қимыл, оның деректер моделін өзгерткен және жаңартылған көрініспен пайдаланушыға береді. Содан кейін цикл қайталанады. Бұл HTTP сұраулары мен жауаптарының сериясы ретінде ұсынылған веб-бағдарламалар үшін өте пайдалы. Бірнеше технологияларды (мысалы, деректер қорлары, HTML және орындалатын код) біріктіру үшін веб-бағдарлама қажеттілігі әдетте бірнеше қабаттар немесе қабаттарға бөлінеді. Осы комбинациялардан шығатын модельдер MVC тұжырымдамасы үшін табиғи. ASP.NET MVC Framework MVC үлгісін орындайды және осылайша, тұжырымдамалардың әлдеқайда жетілдірілуін қамтамасыз етеді. Шын мәнінде, ASP.NET MVC MVC үлгісінің заманауи нұсқасын іске асырады, ол веб-қосымшалар үшін жарамды. Сіз осы архитектураны қолданудың теориясы мен тәжірибесі туралы көбірек білесіз. MVC үлгіні қолдану және бейімдеу, ASP.NET MVC Framework қатты Rails және ұқсас платформаларында Ruby бәсекелеседі, және негізгі .NET әлеміне MVC үлгісін әкеледі. Басқа платформаларды қолдана отырып, әзірлеушілердің тәжірибесі мен озық тәжірибелерін жинақтап, ASP.NET MVC Rails-дан көп ұсына алады деп айтуға болады. ASP.NET MVC дизайнерлері сізге MVC Framework компонентінің әрқайсысына үш нұсқаны беру үшін осылай жасады: 1.Компонентің ағымдық пішінде әдепкі орындалуын қолданыңыз (ол көптеген қосымшалар үшін жеткілікті болуы керек). Оның мінез-құлқын теңшеу үшін әдепкі орындалудың қосалқы сыныбын шығарыңыз. 2.Интерфейсті немесе абстрактілі базалық классты жаңа енгізу арқылы компонентті толығымен ауыстырыңыз. 3.Бұл әлі ASP.NET 2.0 үлгісіне ұқсайды, бірақ MVC Framework-дың орталығында тікелей әрі қарай қарайық. Сіз әртүрлі компоненттер туралы білесіз, олардың әрқайсысын қалай және неге орнатуға немесе ауыстыруға болады.
1.3.ASP.NET MVC технологиясының басқа технологиялардан артықшылығы қандай?
ASP.NET MVC негізгі артықышылықтары.
ASP.NET ұлкен коммерциялық жетістікке жетті, алайда, атап өткендей, веб құрылғының басқа әлемі де дамып келді, Microsoft Web Forms-қа шаң жуытпаса да,оның негізгі құраушылары ескірген болып көрінді. 2007 ж. қазан айында Microsoft-та ASP.NET негізінде құрылылған, MVC-дің жаңа веб-құрылымын(разработка) таныстырды. Ол Rails-қа ұқсас технологиялардың дамуына жауап ретінде және, Web Forms-қа қойылған сынға жауап ретінде құрылған. Келесі бөлімдерде бұл жаңа платформа Web Forms-тың шектеулерін жойып өтіп, ASP.NET –ті жаңа деңгейге қалай алып өткендігі жайлы көрсетілетін болады.
MVC-дің архитектуралық шаблоны.Важно различать архитектурный шаблон MVC-дің архитектуралық шаблоны мен ASP.NET MVC Framework инфрақұрылымының ара жігін ажырата білген жөн. MVC шаблоны айтарлықтай жаңа емес (1978 ж. пайда болып, ол Xerox PARC-тегі Smalltalk жобасымен байланысты), алайда, ол, бүгінгі таңда веб қосымшалар үшін шаблон ретінде келесідей себептер арқылы үлкен танымалдылыққа ие болыды:
Қолданушының MVC қосымшасымен өзара байланысуы табиғи циклге сәйкес жүзеге асырылады: қолданушы қимыл жасап, жауабы ретінде қосымша өзінің мәліметтер моделін өзгертеді де, жаңартылған түрін қолданушыға жеткізеді. Кейіннен цикл қайталады. Ол запростардың кезектілігі мен HTTP жауабы ретінде берілетін веб-қосымшалардың тізбегіне жақсы орналасады.
Бірнеше технологиялардың біріктірілуін қажет ететін веб-қосымшалар (мысалы, HTML-разметкалар мен орындалатын кодтың мәліметтер базасы),әдетте, бірнеше қатарлар мен деңгейлерге бөлінеді. Нәтижесінде алынған шаблондар табиғи жолмен MVC концепциясына кіреді.
ASP.NET MVC Framework инфрақұрылымы MVC құрылымын жүзеге асырады,және жауапкершіліктің сәтті бөлінуін қамтамасыз етеді. ASP.NET MVC-де MVC-дің заманауи нұсқасы енгізілді, ол веб қосымшалар үшін жақсы сәйкес келеді.
MVC шаблонын қабылдаудың және үйренудің арқасында MVC моделін .NET.өмірінің даму авангардына шығара отырып, ASP.NET MVC Framework инфрақұрылымы Ruby on Rails – қа және аналогиялық платформаларға күшті бәсекелестік құрайды.
MVC Framework-тің әр бөлігі үшін 3 мүмкіндік беріледі :
Бөлікті өз қалпында стандартты орындауды қолдану. (ол көп көлемдегі қосымшалар үшін жеткілікті болуы тиіс).
Қолданыстағы қимылдарды жөндеу мақсатымен стандартты орындаудан класс астын құру.
Бөлікті жаңа интерфейті немесе абстарктілі жаңа класты орындаумен толығымен ауыстыру.
Әр түрлі бөліктер, және олардың мүмкін болатын жөндеуі мен ауыстыруы келесі мақалаларда қарастырылатын болады.
Тестілеу.
MVC архитектурасымен қорғалатын, бағдарламалық қамтамасыз етудің бір бірінен қосымшаның тәуелсіз бөліктерінің әр түрлі жауапкершілігінен табиғи бөлу - жеңіл тестіленетін қосымшаны құруға мүмкіндік береді. Алайда, ASP.NET MVC –ді құрастырушылар мұнымен тоқтаған жоқ. Жобаның әр бөлігі үшін олар модульді тестілеу мен имитация құралдарының қажеттіліктерін қанағаттандыруға қажетті құрылыммен қамтамасыз етті.
Visual Studio ортасына модульді тестілеу жобаларын автоматты құру үшін арналған мастерлердің жиынтығы қосылды. Олар NUnit және xUnit секілді ашық коды бар модульді тестілеудің құралдарымен интеграцияланады.Сіз бұрын соңды модульді тестілеу құрмағанның өзінде, сізге сәтті бастау жасау үшін қажеттінің барлығы болады.
1.4.ASP.NET MVC бағдарламасының қандай компоненттерін (қосымша бөлімдерін) білесіз?
MVC тарихы
model-view-controller термині 1970-шы жылдардың соңында қолданылып, Xerox PARC –тағы Smalltalk жобасынан пайда болды. Ол ертеректегі GUI қосымшасын ұйымдастырудың бір тәсілі ретінде құрастырылды.
Алғашқы MVC-паттерннің шағын қызметтері Smalltalk-тың экран мен құралдар (screens и tools) секілді нақты түсініктеріне жақын орналасты. Алайда, кең түсіктер бұрынғыдай қосымшаларға қолданылатын еді және ол веб қосымшаларға жақсы сәйкес келеді.
Ол веб қосымшалардың негізінде жатқан HTTP запростарымен, жауаптарымен жақсы үйлеседі. Сонымен қатар, MVC мынадай түсініктерді ажыратып бөлуді көздейді: доменді (доменная) модель мен бақылаушы (контроллер) логикасы –қолданушылық интерфейстен бөлінеді. Ол веб қосымшаларда HTML- нің қосымшаның басқа бөліктерінен бөлек сақталатынын білдіреді; техникалық қолдау мен тестілеуді оңай әрі жеңіл етеді. Ruby on Rails MVC-ге деген қызығушылықтың жандануына алып келді, және ол MVC-дің «үлгілі» баласы болып қала береді. .
Сол уақыттан бері көптеген MVC фреймуоркерлер пайда болды, олар MVC-дің артықшылықтарын көрсетті, атап айтқанда, ASP.NET MVC.
MVC паттернді түсіну.
MVC паттерн MVC қосымшалардың, кем дегенде 3 бөлікке бөлінетінін білдіреді :
 Модельдер - қолданушылырдың жұмыс істейтін мәліметтерін сипаттайды.
Это могут быть простые модели представления, которые только представляют данные, передаваемые от контроллера представлению, или они могут быть доменными моделями, которые содержат данные домена, а также операции, преобразования и правила работы с этими данными.
 Ұсыныстар (Представления)- қолданушылық интерфейс ретіндегі модельдің бірқатар бөліктерін өңдеу үшін қолданылады.
 Бақылаушылар(Контроллеры)- ,келіп түскен запростарды өңдейді, модельдер үшін операциялар жасайды және қолданушыға көрсетуге арналған ұсыныстарды (представления) таңдайды.
Модельдер- сіздің қосымшаңыз жұмыс істейтін ғалам болып табылады. Банктік қосымшада, мысалы, модельдер, қосымша түсіндіретін банк ретінде ойнайды: яғни, шоттар, клиенттерге арналған бас кітап пен кредиттік лимиттер, сонымен қатар, модельдегі мәліметтерді манипуляциялауға арналған операциялар (мысалы, құралдардың депондалуы(депонирование) және шоттардан құралдардың алынуы. Модель, сонымен қатар, мәліметтердің жалпы жағдайының сақталуына да жауапты. Мысалы, ол барлық келісім шарттардың кітапқа жазылатынына, және клиенттің өзі ала алатын сомасының барлығын және банктегі барлық соманы шеше алмайтынына кепілдік етеді.
Модельдер, сондай-ақ, не үшін жауап бермейтіндігімен де анықталады: модельдер UI –мен және тапсырыстарды өңдеумен айналыспайды – это ұсыныстар ( представления) мен бақылаушылардың (контроллер) жұмысы.
Ұсыныстар (Представления) қолданушыға қажет модельдер элементін сипаттайтын логиканы біріктіреді. Олар модельді тікелей түсінбей, модельмен ешқандай жолмен тікелей хабарласпайды.
Контроллерлер - өкілдер мен модельдер арасында көпір рөлін атқарады: клиенттерден тапсырыстар келіп, бақылаушымен (контроллермен) тексеріледі. Ол қолданушыға көрсетуге сәйкес ұсыныстарды (представление) таңдап, қажет болғанда, модельмен бірге жасау қерек сәйкес іс-қимылдарды да таңдайды.
MVC-дің әр элементі нақты анықталған әрі автономды болып келеді – ол түсініктердің ажыратылуы немесе бөлінуі деп аталады. Бұл модельдерге манипуляция жасайтын логика тек модельдерде ғана кездеседі; мәліметтерді сипаттайтын логика тек ойларда кездеседі, ал, қолданушылардың тапсырыстарын және келетін мәліметтерді өңдейтін код- тек бақылаушыда (контроллерде) кездеседі. Әр бөліктің арасындағы міндеттерді нақты бөлу арқылы сіздің қосымшаңыз, қаншалықты үлкейетініне қарамастан, жеңіл қолдап,кеңейіп отырады.
1.5.Қандай папкаларда ASP.NET MVC технологиясы арқылы жасалған бағдарламалар бар?
Controllers папкасы
Контроллер MVC сәулетінің негізгі компоненті болып табылады. Контроллер пайдаланушы кірісін алады, өңдейді және өңдеудің нәтижесін, мысалы, көрініс ретінде жібереді.
Контроллерлерді пайдаланған кезде кейбір конвенциялар бар. Сонымен атау конвенцияларына сәйкес контроллерлердің атаулары «контроллер» жұрнағымен аяқталуы керек, қалған бөлігі осы жұрнақтың алдында контроллер атауына жатады.
Веб-браузерден контроллерге қол жеткізу үшін мекенжай жолына site_name / controller_name / түрін енгізу керек. Сонымен, сұраныс бойынша site_name / Home / әдепкі бағыттау жүйесі кіріс сұрауды өңдеу үшін HomeController индексінің әдісін шақырады. Егер белгілі бір контроллер әдісіне сұрау жібергіміз келсе, біз бұл әдісті айқын көрсетуіміз керек: Site_address / Controller_name / Controller_ Әдіс, мысалы, Site_Address / Home / Buy - HomeController сатып алу әдісіне қол жеткізеді.
Контроллер базалық класс жүйесінен мұраланған тұрақты класс болып табылады. Web.Mvc.Controller. Өз кезегінде, контроллер класы дерексіз базалық сыныпты ControllerBase және оның көмегімен IController интерфейсін жүзеге асырады. осылайша, ресми түрде, өзіңіздің контроллер классыңызды жасау үшін, IController интерфейсін іске асыратын және атаудағы контроллер жұрнағын қолданатын сынып құру жеткілікті.
Models папкасы
Модель нақты клас немесе интерфейс емес. Клас модельге сілтеме жасайды, өйткені ол интерфейсті жүзеге асырады немесе белгілі бір базалық кластың мұрагері болып табылады. Сынып MVC ASP.NET қосымшасында ойнайтын ролмен және бағдарлама қалталарының құрылымындағы орналасуымен модель бөлігі болып табылады. ASP.NET MVC бағдарламасындағы үлгі класы браузерден кіріс енгізуді тікелей емес, сондай-ақ, HTML шығарылымын браузерге шығармайды.
Модельді анықтау
Модельдік нысандар домен логикасын іске асыратын, сонымен қатар іскери логика деп аталатын бағдарламаның бөлігі болып табылады. Домен логикасы дерекқор мен пайдаланушы интерфейсі арасында өткізілген деректерді өңдейді. Мысалы, қойма жүйесінде модель тауарлардың түгендеу қорларын бақылайды және қоймадағы тауардың болуын анықтау логикасын жүзеге асырады. Бұдан басқа, мұндай модель тауарларды қоймадан сату және тасымалдау кезінде дерекқордағы деректерді өзгертетін қосымша бөлігі болуы мүмкін. Жиі модель дерекқордан модельді күйді сақтау және алу үшін жауап береді.
Модель класстарын Visual Studio бағдарламасының ASP.NET MVC бағдарламасының үлгісінің бөлігі ретінде ұсынылған Үлгілер қалтасына орналастыру ұсынылады. Алайда, көбінесе модельдік сыныптар бірнеше қондырғыларда қайта пайдалану үшін бөлек жинаққа орналастырылады.
Views:Көрулер мұнда сақталады. Барлық көріністер әрқайсысы бір контроллерге сәйкес келетін папкалар бойынша топтастырылған. Сұрауды өңдегеннен кейін контролер осы көріністердің бірін клиентке жібереді. Сондай-ақ, барлық көріністер үшін жалпы болып табылатын Shared каталог бар.MVC қолданбасының жұмысы негізінен контроллерлермен бақыланады, бірақ тікелей пайдаланушыға қолданба қосымшаның көрінісін қалыптастыратын көрініс түрінде қол жетімді болады. ASP.NET MVC 5-дегі көріністер - бұл пайдаланушы тілдесу кодын қамтитын cshtml кеңейтімі бар файлдар, негізінен html тілінде.Көріністе негізінен html коды болса да, бұл html беті емес. Талап етілген көрініске негізделген бағдарламаны құрастырған кезде, алдымен C # -те класты жасап, оны құрастырасыз.

1.6.Controllers папкасында қандай файлдар болуы мүмкін?
Контроллер MVC сәулетінің негізгі компоненті болып табылады. Контроллер пайдаланушы кірісін алады, өңдейді және өңдеудің нәтижесін, мысалы, көрініс ретінде жібереді.
Контроллерлерді пайдаланған кезде кейбір конвенциялар бар. Сонымен атау конвенцияларына сәйкес контроллерлердің атаулары «контроллер» жұрнағымен аяқталуы керек, қалған бөлігі осы жұрнақтың алдында контроллер атауына жатады.
Веб-браузерден контроллерге қол жеткізу үшін мекенжай жолына site_name / controller_name / түрін енгізу керек. Сонымен, сұраныс бойынша site_name / Home / әдепкі бағыттау жүйесі кіріс сұрауды өңдеу үшін HomeController индексінің әдісін шақырады. Егер белгілі бір контроллер әдісіне сұрау жібергіміз келсе, біз бұл әдісті айқын көрсетуіміз керек: Site_address / Controller_name / Controller_ Әдіс, мысалы, Site_Address / Home / Buy - HomeController сатып алу әдісіне қол жеткізеді.
Контроллер базалық класс жүйесінен мұраланған тұрақты класс болып табылады. Web.Mvc.Controller. Өз кезегінде, контроллер класы дерексіз базалық сыныпты ControllerBase және оның көмегімен IController интерфейсін жүзеге асырады. осылайша, ресми түрде, өзіңіздің контроллер классыңызды жасау үшін, IController интерфейсін іске асыратын және атаудағы контроллер жұрнағын қолданатын сынып құру жеткілікті.
IController интерфейсі сұраудың мәтінмәнін өңдеуге жауап беретін жалғыз Орындау әдісін анықтайды:
public interface IController
{
void Execute(RequestContext requestContext);
}
Енді осы интерфейсті іске асыратын қарапайым контроллерді жасаңыз. Жоба ретінде біз алдыңғы тараудан жобаны аламыз. Сонымен, төмендегі мазмұнмен жобаның контроллерлер қалтасына жаңа сыныпты (класс емес, контроллер) қосыңыз:
using System.Web.Mvc;
using System.Web.Routing;
namespace BookStore.Controllers
{
public class MyController : IController
{
public void Execute(RequestContext requestContext)
{
string ip = requestContext.HttpContext.Request.UserHostAddress;
var response = requestContext.HttpContext.Response;
response.Write("<h2>Ваш IP-адрес: " + ip + "</h2>");
}
}
}
Кез келген контроллерге қол жеткізгенде, жүйе сұрау мәтінмәнін оған жібереді. Бұл сұрау контекстінде барлығы: cookie файлдары, пішін деректері, сұрау жолдары, пайдаланушының тіркелгі деректері және т.б. қамтылады.
IController интерфейсін іске асыру сұраудың контекстін RequestContext параметрі арқылы Execute әдісімен алуға мүмкіндік береді. Біздің жағдайда requestContext.HttpContext.Request.UserHostAddress сипаты арқылы пайдаланушының IP мекенжайын аламыз.
Сонымен қатар, пайдаланушыға Response нысанын және оның жазу әдісін пайдаланып жауап жібере аламыз.
Осылайша, My / мекен-жайына бару арқылы пайдаланушы IP-мекен-жайын көреді.
Стандартты контроллер жасау үшін контроллерлерге қарапайым класс қосып, контроллер класынан мұра аламыз, мысалы:
using System.Web.Mvc;
namespace BookStore.Controllers
{
public class BookShopController : Controller
{
public ActionResult Index()
{
return View();
}}}
Алайда, Visual Studio бізге контроллер жасау үшін ыңғайлы құралдарды ұсынып, олардың икемді конфигурациясын ұсынады. Оларды пайдалану үшін Controllers (Тізім) папкасында тінтуірдің оң жақ түймешігімен нұқыңыз және Add -> Controller тармағын таңдаңыз. Бұл терезеде біз жаңа контроллер жасау терезесін көреміз:
1.7.Models папкасында қандай файлдар болуы мүмкін?
Модель нақты клас немесе интерфейс емес. Клас модельге сілтеме жасайды, өйткені ол интерфейсті жүзеге асырады немесе белгілі бір базалық кластың мұрагері болып табылады. Сынып MVC ASP.NET қосымшасында ойнайтын ролмен және бағдарлама қалталарының құрылымындағы орналасуымен модель бөлігі болып табылады. ASP.NET MVC бағдарламасындағы үлгі класы браузерден кіріс енгізуді тікелей емес, сондай-ақ, HTML шығарылымын браузерге шығармайды.
Модельді анықтау
Модельдік нысандар домен логикасын іске асыратын, сонымен қатар іскери логика деп аталатын бағдарламаның бөлігі болып табылады. Домен логикасы дерекқор мен пайдаланушы интерфейсі арасында өткізілген деректерді өңдейді. Мысалы, қойма жүйесінде модель тауарлардың түгендеу қорларын бақылайды және қоймадағы тауардың болуын анықтау логикасын жүзеге асырады. Бұдан басқа, мұндай модель тауарларды қоймадан сату және тасымалдау кезінде дерекқордағы деректерді өзгертетін қосымша бөлігі болуы мүмкін. Жиі модель дерекқордан модельді күйді сақтау және алу үшін жауап береді.
Модель класстарын Visual Studio бағдарламасының ASP.NET MVC бағдарламасының үлгісінің бөлігі ретінде ұсынылған Үлгілер қалтасына орналастыру ұсынылады. Алайда, көбінесе модельдік сыныптар бірнеше қондырғыларда қайта пайдалану үшін бөлек жинаққа орналастырылады.
Контроллерде модельдік сыныптарды пайдалану, әдетте, контроллер әрекеттеріндегі өздерінің даналарын жасау, үлгі нысандарында әдістерді шақыру және олардың көріністерінде көрсету үшін дұрыс деректерді алу үшін төмендейді. Бұл әрекеттерді орындаудың ұсынылған жолы. Ол сондай-ақ қолданушы интерфейсіне қажеттіліксіз қолданба логикасын тестілеуді жеңілдететін қолданбалы элементтердің логикалық бөлінуін қолдайды.
Төмендегі мысалда адамның қарапайым үлгісі көрсетілген.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcSimpleModelBinding.Models
{
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public int Zipcode { get; set; }
}
}
Модель байланыстары
MVC моделі Binding - бұл .NET Framework түрімен ұсынылған нысанда мәндерді салыстыру және параметр ретінде іс-қимыл әдісі осы түрін өтуге оңай жолы. Байланыстар әрекеттер әдістеріне жіберілген түрлердің десерленуін бақылауға мүмкіндік береді. Үлгі байланыстары түрлендіргіштерге ұқсас, себебі олар HTTP сұрауларын әрекеттер әдістеріне жіберілген нысандарға түрлендіре алады. Бұдан басқа, олар сонымен қатар ағымдағы контроллердің контексті туралы ақпаратты қамтиды.
моделін түптеу сіз іс-қимыл әдісі немесе түрдегі параметрімен, интерфейс IModelBinder сынып, іске байланыстыру мүмкіндік береді. Интерфейс IModelBinder нақты параметр немесе түрдегі мәнді шығарып алу үшін тұғырнама деп аталатын GetValue әдісі қамтиды. Сынып DefaultModelBinder торларда IList, ICollection және IDictionary қоса алғанда, .NET Framework ең түрлері, жұмыс істейді.
Модельді байланыстың үлгісі
Келесі мысал қарапайым модельді байланыстыру әдісін көрсетеді. Осы мысалда, алдыңғы мысалда анықталған Жеке класс үлгі ретінде пайдаланылады. Мысал PersonController сыныбын, сондай-ақ Индекс, Жасау және Мәліметтер көріністерін пайдаланады. PersonController сыныбы Person нысандарын сақтауға арналған тізімді жасайды. Индекс көрінісі тізімдегі әрбір адам нысанына Id және атау сипаттарын көрсетеді. Жасау көрінісі пайдаланушыға адам туралы ақпаратты енгізуге мүмкіндік береді. Толық көрініс таңдалған адам туралы барлық ақпаратты көрсетеді.
1.8.App_Data папкасында қандай файлдар болуы мүмкін?
App_Data Папка Папка App_Data для хранения данных приложения. Содержимое папки используется для статических файлов , таких как таблицы стилей (CSS - файлы), иконки и изображения. Visual Web Developer автоматически добавляет папку Темы для содержимого папки. Папка темы заполняется со стилями и картинками JQuery. В этом проекте вы можете удалить папку тем. Visual Web Developer также добавляет стандартный файл стилей для проекта: файл site.css в папке содержимого. Файл стилей представляет собой файл для редактирования, если вы хотите изменить стиль приложения. Мы будем редактировать файл таблицы стилей (Site.css) файл в следующей главе данного руководства. В эту папку помещаются закрытые данные, такие как XML-файлы или базы данных, если используется SQL Server Express, SQLite или другие хранилища на основе файлов. Папка APP_DATA Папка APP_DATA используется для хранения баз данных, XML-файлов или любых других данных, необходимых для вашего приложения. Рабочая среда ASP.NET распознает эту папку, и не будет давать пользователю возможность напрямую обращаться к файлам данной папки. Только созданное вами приложение может читать и записывать файлы в эту папку.
Для хранения данных приложению нужна база данных. Мы можем использовать различные СУБД, но, как правило, в качестве базы данных в связке с ASP.NET MVC используется база данных MS SQL Server, на примере которого мы и посмотрим весь процесс создания БД и подключения к ней.
Мы можем создать базу данных прямо в проекте, либо же создать ее на сервере MS SQL. Для хранения баз данных проекте предназначена папка App_Data. Итак, нажмем на папку App_Data правой кнопкой мыши и в появившемся контекстном меню выберем Add-> New Item.... В появившемся окне добавления нового элемента выберем SQL Server Database и назовем новую базу данных Bookstore.mdf:
После этого в папку папку App_Data будет добавлена база данных, и мы можем начинать с ней работать - добавлять таблицы и данные. Но перед этим посмотрим, что у нас будет хранится в БД. Для работы с БД возьмем модели из предыдущих глав - модель Book:
1
2
3
4
5
6
7 public class Book
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Author { get; set; }
    public int Price { get; set; }
}
И модель Purchase:
1
2
3
4
5
6
7
8 public class Purchase
{
    public int PurchaseId { get; set; }
    public string Person { get; set; }
    public string Address { get; set; }
    public int BookId { get; set; }
    public DateTime Date { get; set; }
}
Пусть для работы с ними определен следующий контекст данных:
1
2
3
4
5 public class BookContext : DbContext
{
    public DbSet<Book> Books { get; set; }
    public DbSet<Purchase> Purchases { get; set; }
}
Чтобы связать приложение, контекст данных и БД, добавим в файл web.config строку подключения к этой базе данных. Для этого после секции configSections вставим следующую секцию:
1
2
3
4 <connectionStrings>
    <add name="BookContext" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename='|DataDirectory|\Bookstore.mdf';Integrated Security=True"
 providerName="System.Data.SqlClient"/>
  </connectionStrings>
1.9.Views папкасында қандай файлдар болуы мүмкін?
Views:Көрулер мұнда сақталады. Барлық көріністер әрқайсысы бір контроллерге сәйкес келетін папкалар бойынша топтастырылған. Сұрауды өңдегеннен кейін контролер осы көріністердің бірін клиентке жібереді. Сондай-ақ, барлық көріністер үшін жалпы болып табылатын Shared каталог бар.MVC қолданбасының жұмысы негізінен контроллерлермен бақыланады, бірақ тікелей пайдаланушыға қолданба қосымшаның көрінісін қалыптастыратын көрініс түрінде қол жетімді болады. ASP.NET MVC 5-дегі көріністер - бұл пайдаланушы тілдесу кодын қамтитын cshtml кеңейтімі бар файлдар, негізінен html тілінде.Көріністе негізінен html коды болса да, бұл html беті емес. Талап етілген көрініске негізделген бағдарламаны құрастырған кезде, алдымен C # -те класты жасап, оны құрастырасыз.
Жаңа көріністі жасау
Жаңа көріністі жасау үшін жобадағы Views қалтасын таңдаңыз және ондағы Home ішкі каталогты тінтуірдің оң жақ түймешігімен нұқыңыз және пайда болған тізімде Add - > View... пәрменін таңдаңыз. Жаңа көрініс қосу терезесінде бірнеше нұсқауларды баптай аласыз:Барлық осы параметрлерді талдайық:
• View Name: жаңа көріністің атауы. Жасалғаннан кейін, cshtml кеңейтімі оған автоматты түрде тағайындалады.
• Template: жаңа көрініс үшін үлгі. Келесі үлгілер тізімінен таңдай аламыз:Көру үлгілерінің түрлері:
Empty (without model): бастапқы таңбамен бос көріністі жасайды.
Empty: бос көрініс де жасалады, бірақ қазір біз @model директивасын қолданып, көріністе қосылатын үлгіні таңдай аламыз
Create: Жаңа үлгі нысандарды жасау үшін пішінмен көріністі жасайды. Бұл пішінде әр үлгі сипаты үшін жеке өріс жасалады.
Delete: модель нысандарын жою үшін пішінмен көріністі жасайды. Бұл пішінде әр үлгі сипаты үшін жеке өріс жасалады
Details: модельдің барлық қасиеттерінің мәндерін көрсететін көрініс пайда болады
Edit: бар үлгі нысандарын өңдеуге арналған пішінмен көріністі жасайды. Бұл пішінде әр үлгі сипаты үшін жеке өріс жасалады
List: модельдер тізімінен барлық нысандарды кесте ретінде көрсететін көріністі жасайды. Осы көріністегі нысандардың тізімін жасау үшін контроллер әдісінен IEnumerable<Тип_модели> түрінің мәнін өтуіңіз керек. Көрініс құрамында жасау / өңдеу / жою әрекеттерін орындау әдістеріне сілтемелер бар.
Model class: Егер сіз Empty (without model) нұсқасын қоспағанда, алдыңғы нұсқалардың біреуін таңдасаңыз, бұл өріс бізге көріністі үлгілеу үшін үлгі көрсете аламыз. Бұл ұсыныс қатаң жазылған деп саналады, яғни модельдің бір класына байланады.
Data context class: Empty (without model) параметрінен басқа, алдыңғы нұсқалардың біреуін таңдағанда, бұл өріс бізге қол жетімді, онда біз деректер контекстінің класын таңдаймыз.
Create as a partial view ішінара көріністі жасауға мүмкіндік береді.
Reference Script Libraries: Бұл нұсқа көріністің jQuery кітапханаларының стандартты жиынтығын және басқа JavaScript файлдарын автоматты түрде қосатынын көрсетеді.
Use a layout page: бұл параметр негізгі беттің пайдаланылатынын немесе көріністің өзі жеткілікті екендігін көрсетеді. Бұл опцияны орнатқаннан кейін негізгі бетті таңдауға болатын төменгі өріс қол жетімді болады. Razor қозғалтқышы үшін, _ViewStart.cshtml файлында әдепкі бойынша анықталған басты бетті пайдаланатын болсаңыз, негізгі бетті көрсетіп міндетті емес. Дегенмен, негізгі бетті елемеу керек болса, осы параметрді пайдалануға болады.
Файлдарды қарау жолдары:
Барлық қосылған көріністер, әдетте, Views каталогындағы сәйкес папкаларда контроллерлермен топтастырылады. Home контроллерінің әдістеріне қатысты көріністер жобада Views/Home папкасында орналасады. Алайда, қажет болған жағдайда, біз өзімізді Views директориясында өздігінен аты бар папканы жасай аламыз, мұнда контроллердің кейбір әдістерімен міндетті түрде байланысты емес қосымша көріністер сақталатын болады. Көріністі шығыс ағынына шығару үшін View () әдісін қолданамыз. Егер осы әдіске ешқандай өкілдік аты берілмесе, әдепкі бойынша, бағдарлама аты әрекет әдісінің атымен сәйкес келетін көрініспен жұмыс істейді.
1.10.Global.asax файлында не бар?
Global.asax файлы жаһандық оқиғаларға жауап беретін оқиғалар өңдегіштерін жазуға мүмкіндік береді. Пайдаланушылар global.asax файлын тікелей сұрау мүмкін емес. Global.asax файлы белгілі бір бағдарлама оқиғаларына жауап ретінде өз кодын автоматты түрде орындайды.
Global.asax файлындағы код веб-пішінге дәл сол сияқты жазылған. Айырмашылық, global.asax файлында HTML немесе ASP.NET дескрипторлары болмайды. Оның орнына, алдын-ала анықталған атаулары бар әдістер бар.
<%@ Application Language="C#" %>
<script runat="server">
protected void Application_OnEndRequest()
{ Response.Write("<hr />Эта страница была загружена " + DateTime.Now.ToString()); }
</script>
Бұл көрсетілген кодта көрсетілмегенімен, әрбір әдіс бір класс үшін қолданылатын жаһандық әдістерді анықтайды. Қолданба класы HttpApplication бағдарламасынан мұраланған, ол барлық ашық және қорғалған мүшелерімен кодта жұмыс істеуге мүмкіндік береді. Бұл мысалда, Respect нысаны пайдаланылады, ол HttpApplication сыныбының кіріктірілген сипаты, Бет сыныпының кірістірілген сипаты сияқты, пайдаланылады.
Веб-пішіндер сияқты, global.asax файлының мазмұны екі файлға бөлінуі мүмкін: біреуі декларациямен, екіншісі кодпен тікелей. Дегенмен, global.asax файлдарының дизайны беті қамтамасыз етілмегендіктен, бұл қажет емес, сондықтан Visual Studio бөлінген код сыныбы бар global.asax файлын жасау параметрін ұсынбайды.
Егер веб-қосымшаны веб-жоба ретінде жасасаңыз, Visual Studio бөлінген кодты қолданады және екі файлды жасайды: global.asax (ол дерлік бос болады) және байланысқан global.asax.cs (барлық оқиғалар өңдегіштері бар қолданбалы класс бар) ). Нәтиже дәл осындай болады.
Global.asax файлы міндетті емес, бірақ әрбір веб-бағдарламаға оның бір ішкі каталогында емес, бағдарламаның түбірлік каталогында болуы керек бірден көп global.asax файлы болмауы керек. Global.asax файлын жобаға қосу үшін Веб-сайт мәзірінен Жаңа элементті қосу пәрменін таңдаңыз (немесе веб-жобаның үлгісін қолданып жатсаңыз, Project мәзірінде) және Global Application Class үлгісін көрсетіңіз ( Global қосымшалар класы). (Егер жобада global.asax файлы бар болса, бұл үлгі көрсетілмейді.)
Оқиғалар
Оқиғалардың келесі екі түрі global.asax файлында өңделуі мүмкін:
әр сұрау үшін әрдайым болған оқиғалар. Мұндай іс-шараларға сұрау салумен байланысты оқиғалар және жауапқа қатысты оқиғалар жатады;
белгілі бір жағдайларда ғана болатын оқиғалар.
Қажетті оқиғалар келесі тәртіпте жүргізіледі:
Application_BeginRequest (). Бұл әдіс әр сұраудың басында шақырылады.
Application_AuthenticateRequest (). Бұл әдіс түпнұсқаландыру жүргізілгенге дейін аталады. Бұл өзіңіздің аутентификация логикасын жасаудың бастапқы нүктесі.
Application_AuthorizeRequest (). Пайдаланушы түпнұсқаландыру рәсімінен өткеннен кейін (анықталатын болады), пайдаланушының құқықтарын анықтау қажет болады. Арнайы артықшылықтарды тағайындау үшін осы әдісті қолдануға болады.
Application_ResolveRequestCache (). Бұл әдіс әдетте шығу кэштеуімен бірге қолданылады. Шығарылған деректер кэштелгенде, веб-пішіннің жасалған HTML коды сіздің кодыңыздың біреуін орындаусыз қайта пайдаланылады. Дегенмен, бұл оқиға өңдеуші жұмысын жалғастыруда.
1.11.Web.config файлында не бар?
Web.config - ASP.NET веб-бағдарламасының параметрлерін анықтайтын файл. Шындығында, web.config файлы XML құжаты болып табылады. Ол сеанстық мемлекеттер провайдерлерінің параметрлері туралы ақпаратты сақтайды, мүшелік, қате беттеріне сілтемелер анықталған. Сондай-ақ, web.config деректер қорлары бар байланыс желісін, бақылауды басқару құралдарын қамтиды.
Әрбір веб-бағдарламада root каталогында web.config файлы болуы керек. Дегенмен, еншілес каталогтарда өздерінің ASP.NET конфигурациялық параметрлері болуы мүмкін (кейбір конфигурациялар болмаған жағдайда негізгі конфигурация файлынан ерекшеленеді).
ASP.NET конфигурация файлдары үшін мұра тетігі болып табылады
1) алдымен machine.config ішіндегі параметрлерді қолданыңыз
2) Содан кейін қосымшаның түбірінде орналасқан web.config файлынан параметрлер қолданылады.
3) Сонымен қатар, егер кейбір қосымшалар каталогтарында web.config файлы болса, одан параметрлер қолданылады.
4) конфигурация файлдары табылғанша 3-қадамды қайталаңыз.
Сондай-ақ, кейбір ішкі каталогтарда орналасқан web.config файлының параметрлерінен қайшылықтар туындаған жағдайда, ішкі каталогтан параметрлер ата-аналық каталогтың теңшелім файлынан параметрлерді қайта анықтайды. Дегенмен, кейбір параметрлік бөлімдердің бұғатталуына себепші болатын ерекше жағдай бар: бұл бір конфигурация файлындағы параметрлердің бірнеше топтарын анықтайтын <location> элементі.
Мысал:
<configuration>
<!--...-->
<system.web>
<!--...-->
</system.web>
<location path="/ExampleDirectory">
<system.web>
<!--Здесь идут параметры для подкаталога ExampleDirectory-->
</system.web>
</location>
<!--...-->
</configuration>
Мұндай файл web.config конфигурация файлдарының рөлін атқарады. Осылайша, сіз кез-келген сандық каталогты және олардың параметрлерін көрсете аласыз.
1.12.Route.config файлында не бар?
Жай жолды жасау және тіркеу URL үлгісіне ие болсаңыз, оны бағыттауды анықтау үшін пайдалануға болады. Бағыттар App_Start жоба қалтасында орналасқан RouteConfig.cs файлында орналасқан. Visual Studio осы файл үшін анықтаған бастапқы мазмұнды 13-5 листингте көре аласыз.
Листинг 13-5: RouteConfig.cs файлының әдепкі мазмұны
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace UrlsAndRoutes
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
} ); } }
}
RouteConfig.cs файлында анықталған Static әдісі RegisterRoutes шақырылады Global.asax.cs файлына, кейбір негізгі функционалды орнатады Бағдарлама басталған кезде MVC мүмкіндіктері. Global.asax.cs файлының әдепкі мазмұнын 13-6 листингте көруге болады және біз RouteConfig.RegisterRoutes әдісіне қоңырауды бөлектейік, ол Application_Start әдісінен жасалады.
RouteConfig.cs файлында анықталған Static әдісі RegisterRoutes шақырылады Global.asax.cs файлына, кейбір негізгі функционалды орнатады Бағдарлама басталған кезде MVC мүмкіндіктері. Global.asax.cs файлының әдепкі мазмұнын 13-6 листингте көруге болады және біз RouteConfig.RegisterRoutes әдісіне қоңырауды бөлектейік, ол Application_Start әдісінен жасалады.
1.13. Что содержится в файле _Layout?
Негізгі бетті көріністе пайдалану үшін, Layout бөліміндегі талап етілетін басты бетке өту жолын көрсету керек. Мысалы, Index.cshtml көрінісінде негізгі бетті келесідей анықтай аласыз:
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
Егер басты бетті пайдаланбасаңыз, біз Layout = null;
Сондай-ақ, барлық көріністерге сол бір басты бетті пайдалану қажет емес. Бірнеше негізгі бетті анықтай аласыз, мысалы, біреуі форум үшін, біреуі блог үшін және т.c.c. және сайт бөлімдеріне байланысты қалағаныңызды қосыңыз. Олар жобаға, сондай-ақ кәдімгі көзқарастарға қосылады.
Басты беттe мазмұнын қоюға болатын бірнеше бөлімдер болуы мүмкін. Мысалы, негізгі бетке төменгі деректеме бөлігін қосыңыз:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
</head>
 
<body>
    <nav>
        <ul class="menu">
            <li>@Html.ActionLink("Главная", "Index", "Home")</li>
        </ul>
    </nav>
    @RenderBody()
    <footer>@RenderSection("Footer")</footer>
</body>
</html>
Алдыңғы Index көрсеткішін іске қосқан кезде, қате пайда болады, себебі Footer анықталмады. Әдепкіде, көрініс басты беттің әрбір бөліміне арналған мазмұнды тасымалдау керек. Сондықтан Индекс бөлімін төменгі деректеме бөлігіне қосыңыз. Мұны @section өрнегін қолданып жасай аламыз:
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<!-- здесь остальное содержание -->
@section Footer {
    Все права защищены. Syte Corp. 2012.
}
1.14.ASP.NET MVC технологиясы бойынша жасалған маршрутизация бағдарлама қалай жүзеге асады?
URL адрестердің қолданушымен анықталатын шаблондары маршруттар деп аталады. Маршруттарда URL сұраныстарының процесіне талдау кезінде алынатын, мәндерге сәйкес келетін толтыру орындары көрсетіледі. Толтыру орындарының маршруты({}) жүйелі жақшада қорытынды түрінде анықталады. Маршрутта анықталатын ақпараттар бірыңғай мәндер түрінде түсіндіріледі. Келесі кестеде маршруттардың мүмкін шаблондары және сол шаблонға сәйкес келетін URL сұраныстарының мысалдары көрсетілген:
Маршрутизацияға ерекше маршрутқа сәйкес келетін браузер сұраныстарының шектеулерін қоса аламыз. Мысалы, біздің жағдайда сандық болуы тиіс:
Маршрутты анықтау URL-адрестің сәйкестік мысалы
{controller}/{action}/{id} /Products/show/beverages
{table}/Details.aspx /Products/Details.aspx
blog/{action}/{entry} /blog/show/123
{reporttype}/{year}/{month}/{day} /sales/2008/1/5
{locale}/{action} /en-US/show
{language}-{country}/{action} /en-US/show
routes.MapRoute(
name: "Role",
url: "roli/{action}/{id}",
defaults: new { controller = "Role", action = "Index", id = UrlParameter.Optional },
constraints : new {id = @"\d+"} );
"roli/{action}/{id}" жолы defaults бөлігіне контроллератын береді. Ал action параметр болып табылады
Қайта бағыттау бағдарламасы дегеніміз web парақшаны бір URL бойынша басқа бір URL-ға ауыстыру.Қайта бағыттауды белгілі бір жаңа парақшаны жаңа орынға ауыстыруды,сайттық URL адрестік www бөлігін алып тастауда немесе қолданушыны толығымен басқа сайтқа бағыттауда қолданған тиімді.Мысалы, біз өзіміздің web сайтымызды ауыстырдық немесе оны жапқымыз келеді,бірақ та бұрынғы сайттың барлық парақшалары 404 NOT FOUND деген қателікті шығармауын қалаймыз.Бұл үшін өзге бұрынғы сайттын мазмұнын, оның ішіндегі сілтемелерін жаңа сайтқа қайта бағыттау қажет.Әр уақытта біз URL бойынша бір парақшадан екінші парақшаға ауысамыз немесе браузерде сұранысты орындау арқылы орындаймыз. Браузерден сұранысты орындау үшін гипертексті жіберу хаттамасын қолданамыз. Сұраныстарды жібергеннен кейін http жауабын аламыз.http жауаптың бірнеше кодтары бар,ең танымалы 404 NOT FOUND.Әр бір http жауап 3 санмен белгіленеді.200 қателігін 2xx категориясына жатады немесе ол сәтті сұранысты білдіреді.3хх категориясы,оның ішінде 301multpermanintly.302 found қайта бағыттаудың мысалы.Response.Redirect(“/http/:kaznu.kz”) сайт адресі.
Басқа парақшаларға қайта бағыттаудың көптеген әдістері бар:
1)Парақшаны конфигурациялау көмегімен басқа парақшаға жіберу
2)Шолушыны динамикалық қолдану арқылы.Бұл сенарида сервер контексті басқа парақшаға жібереді кемшілігі шолушы туралы білмейді немесе шолушы журналы жаңартылмайды. Қасиеттері:Көрсету күйі,элеметті басқару күйі,жасырын өрістер,кіші файлдар сұраныс жолдары,қосымша күйі,сеаныс күйі,профиль қасиеттері. ASP.NET күйі арқылы мәліметтерді сақтауға мүмкіндік береді.Сеаныс күйі,бұл күйлерді басқарудың ең қиын технологиясы,ол мәліметтерді бір бетте сақтап,одан кейін оны басқа парақшадан алуға мүмкіндік береді,сонымен қатар объектінің кез келген типін қолдайды.Сеаныс күйі арқылы келесідей есепті шешуге болады.
-шолушының уникальды сұраныстарын анықтауда;
-клиенттік құралдарды анықтауда;
-серверде мәліметтерді сеанысқа тейістісін шолушының біренеше сұраныстарын орындауда сақтау.
1.15.ASP.NET MVC технологиясын қолданып жасалған веб-сайттың реті туралы айтып беріңіз?
MVC - біздің қолдану саламызды, осы құрылымдағы әрбір бөліктің жауапкершілігі мен өзара әрекеттесуін сипаттайды. Алғаш рет 1979 жылы басқа ортада сипатталған.
Ол уақытта веб-қосымшаның тұжырымдамасы болмады. Тим Бернерс Ли 90-шы жылдардың басында World Wide Web (WWW)-тің негізін салды. Бүгінгі қолданатын үлгі бастапқы веб-әзірлеудің үлгісіне бейімдеу болып табылады Веб-қосымшалардағы бұл құрылым оның екі дамыған ортада болуына байланысты танымал болы: Struts және Ruby on Rails. Бұл екі даму ортасы кейінірек құрылған жүздеген жұмыс ортасы үшін дамыту жолдарын белгіледі.
Web қосымшалар үшін MVC:
MVC дизайн үлгісінің идеясы өте қарапайым:
біздің қосымшаларымызда әр түрлі жұмыс істеу үшін жауапкершілікті нақты ажырата білу қажет. Қосымша үш негізгі компонентке бөлінеді, олардың әрқайсысы түрлі тапсырмалар үшін жауапты. Компоненттерді егжей-тегжейлі қарастырайық.
Контроллер пайдаланушы сұрауларын басқарады (HTTP GET немесе POST сұраулары ретінде қабылданады, егер пайдаланушы әртүрлі әрекеттерді орындау үшін интерфейс элементтерін басқанда). Оның басты функциясы - пайдаланушы көрсеткен әрекеттерді орындау үшін қажетті ресурстар мен объектілердің әрекетін шақырту және үйлестіру. Әдетте, контроллер тапсырманы орындау үшін сәйкес модельді шақырады және тиісті көріністі таңдайды.
Модель - бұл деректерді өңдеу және басқарудың тұжырымдамасын білдіретін деректермен жұмыс істеу үшін қолданылатын ережелер. Кез келген қолданбада барлық құрылым белгілі бір түрде өңделетін деректер ретінде модельденеді. Қолданбаға арналған пайдаланушы қандай - хабар немесе кітап? Ережелерге сәйкес өңдеу қажет деректер ғана (күн болашаққа нұсқау бере алмайды, электрондық пошта белгілі бір пішімде болуы керек, аты X таңбаларынан ұзын болмауы және т.б.).
Модель контроллерге пайдаланушы сұраған мәліметтердің (хабар, бет кітап, фотоальбом және т.б.) ұсынылуын береді. Деректер үлгілері пайдаланушыға қалай ұсынғымыз келетініне қарамастан, бірдей болады. Сондықтан, деректерді көрсету үшін қол жетімді көріністі таңдаймыз.
Модельде біздің өтініміміздің қисыны маңызды бөлігі, логика, біз айналысатын мәселені шешеді (форум, дүкен, банк және т.б.). Контроллер, негізінен, қосымшаның өзіндік ұйымдастыру логикасын (үй шаруашылығына өте ұқсас) қамтиды.
Көрініс модельден алынған деректерді ұсынудың әр түрлі жолдарын ұсынады. Бұл деректермен толтырылған үлгі болуы мүмкін. Бірнеше түрлі болуы мүмкін, және контроллер ағымдағы жағдайға қайсысы қолайлы екенін таңдайды.
Веб-бағдарлама әдетте контроллерлердің, модельдердің және көріністердің жиынтығынан тұрады. Контроллер барлық сұрауларды қабылдайтын және жағдайға байланысты әрекеттерді орындау үшін басқа контроллерлерді шақыратын негізгі контроллер ретінде конфигурациялануы мүмкін.Қандай артықшылықтар бар? MVC тұжырымдамасын қолданудан туындайтын айқын артықшылығы - презентация логикасын (пайдаланушы интерфейсі) және бағдарлама логикасын айқындау. Әртүрлі құрылғыларды қолданатын әр түрлі пайдаланушыларға қолдау көрсету біздің күндеріміздің ортақ мәселесі болып табылады. Егер сұрау дербес компьютерден немесе ұялы телефоннан алынса, берілген интерфейс әр түрлі болуы керек. Модель бірдей деректерді қайтарады, тек айырмашылығы, контроллер деректерді шығару үшін түрлі көріністерді таңдайды. Қолданба логикасынан оқшауланған көзқараспен қатар, MVC концепциясы үлкен қосымшалардың күрделілігін айтарлықтай азайтады. Кодекс әлдеқайда құрылымдалған болып шығады және, демек, шешімдерді қолдау, тестілеу және қайта пайдалану жеңілдетіледі.
1.16. Global.asax файлы неге арналған?
Global.asax файлы жаһандық оқиғаларға жауап беретін оқиғалар өңдегіштерін жазуға мүмкіндік береді. Пайдаланушылар global.asax файлын тікелей сұрау мүмкін емес. Global.asax файлы белгілі бір бағдарлама оқиғаларына жауап ретінде өз кодын автоматты түрде орындайды.
Global.asax файлындағы код веб-пішінге дәл сол сияқты жазылған. Айырмашылық, global.asax файлында HTML немесе ASP.NET дескрипторлары болмайды. Оның орнына, алдын-ала анықталған атаулары бар әдістер бар.
<%@ Application Language="C#" %>
<script runat="server">
protected void Application_OnEndRequest()
{ Response.Write("<hr />Эта страница была загружена " + DateTime.Now.ToString()); }
</script>
Бұл көрсетілген кодта көрсетілмегенімен, әрбір әдіс бір класс үшін қолданылатын жаһандық әдістерді анықтайды. Қолданба класы HttpApplication бағдарламасынан мұраланған, ол барлық ашық және қорғалған мүшелерімен кодта жұмыс істеуге мүмкіндік береді. Бұл мысалда, Respect нысаны пайдаланылады, ол HttpApplication сыныбының кіріктірілген сипаты, Бет сыныпының кірістірілген сипаты сияқты, пайдаланылады.
Веб-пішіндер сияқты, global.asax файлының мазмұны екі файлға бөлінуі мүмкін: біреуі декларациямен, екіншісі кодпен тікелей. Дегенмен, global.asax файлдарының дизайны беті қамтамасыз етілмегендіктен, бұл қажет емес, сондықтан Visual Studio бөлінген код сыныбы бар global.asax файлын жасау параметрін ұсынбайды.
Егер веб-қосымшаны веб-жоба ретінде жасасаңыз, Visual Studio бөлінген кодты қолданады және екі файлды жасайды: global.asax (ол дерлік бос болады) және байланысқан global.asax.cs (барлық оқиғалар өңдегіштері бар қолданбалы класс бар) ). Нәтиже дәл осындай болады.
Global.asax файлы міндетті емес, бірақ әрбір веб-бағдарламаға оның бір ішкі каталогында емес, бағдарламаның түбірлік каталогында болуы керек бірден көп global.asax файлы болмауы керек. Global.asax файлын жобаға қосу үшін Веб-сайт мәзірінен Жаңа элементті қосу пәрменін таңдаңыз (немесе веб-жобаның үлгісін қолданып жатсаңыз, Project мәзірінде) және Global Application Class үлгісін көрсетіңіз ( Global қосымшалар класы). (Егер жобада global.asax файлы бар болса, бұл үлгі көрсетілмейді.)
Оқиғалар
Оқиғалардың келесі екі түрі global.asax файлында өңделуі мүмкін:
әр сұрау үшін әрдайым болған оқиғалар. Мұндай іс-шараларға сұрау салумен байланысты оқиғалар және жауапқа қатысты оқиғалар жатады;
белгілі бір жағдайларда ғана болатын оқиғалар.
Қажетті оқиғалар келесі тәртіпте жүргізіледі:
Application_BeginRequest (). Бұл әдіс әр сұраудың басында шақырылады.
Application_AuthenticateRequest (). Бұл әдіс түпнұсқаландыру жүргізілгенге дейін аталады. Бұл өзіңіздің аутентификация логикасын жасаудың бастапқы нүктесі.
Application_AuthorizeRequest (). Пайдаланушы түпнұсқаландыру рәсімінен өткеннен кейін (анықталатын болады), пайдаланушының құқықтарын анықтау қажет болады. Арнайы артықшылықтарды тағайындау үшін осы әдісті қолдануға болады.
Application_ResolveRequestCache (). Бұл әдіс әдетте шығу кэштеуімен бірге қолданылады. Шығарылған деректер кэштелгенде, веб-пішіннің жасалған HTML коды сіздің кодыңыздың біреуін орындаусыз қайта пайдаланылады. Дегенмен, бұл оқиға өңдеуші жұмысын жалғастыруда.
1.17.ASP.NET MVC технологиясы арқылы жасалған бағдарламада деректер қалай сүзіледі(фильтрацияланады)?
Кейде бағдарламаға кейбір логиканы енгізуге тура келеді, ол контроллердің әрекеттеріне дейін шақырылуы керек. Атап айтқанда, мысалы, пайдаланушы белгілі бір контроллердің белгілі бір әрекетін шақырады және біз пайдаланушыға рұқсат беріле ме, соны тексеріп, нақты әрекеттерді орындауға тиіспіз. Ол үшін сүзгілерді қолданыңыз.
Сүзгілер атрибут ретінде іске асырылады, осылайша контроллердегі кодтың мөлшерін азайтады. Бұл атрибуттар бүкіл классқа, сондай-ақ жеке әдістеріне, сипаттарына және өрістеріне қолданылуы мүмкін. Мысалы, егер бізде HomeController болса, біз тек рұқсаты бар пайдаланушыларға кіруге рұқсат етеміз. Бұл жағдайда келесі атрибутты қолдануға болады:
[Authorize]
public class HomeController : Controller
{
    //................................
}
Бұл жағдайда [Authorize] атрибуты авторлау сүзгісін пайдаланады. Егер біз осы сүзгіні қолданбаған болсақ, онда пайдаланушыға авторизацияланған немесе жоқ екенін растау логикасын қолмен жазу керек.
Сүзгілерді қолдану
Жоғарыдағы мысалдан көргеніңіздей, сүзгіні қолдану үшін атрибутты контроллер класының үстінен қою қажет - бұл жағдайда бұл сүзгі осы контроллердің барлық әдістеріне қолданылады.
Бірақ, жоғарыда айтылғандай, сүзгіні бір әдіс деңгейінде қолдануға болады:
public class HomeController : Controller
{  
    [Authorize]
    public ActionResult Index()
    {
        ViewBag.Message = "Привет мир!";
 
        return View();
    }
}
Сүзгілердің негізгі түрлері
MVC 5-де сүзгілердің бірнеше түрі бар:
Аутентификация-IauthenticationFilter-Клиенттің аутентификацияланғаның немесе аутентификацияланбағаның анықтайтын сүзгі. Бұл сүзгі кез келген басқа сүзгі немесе әрекет әдісі орындалмастан бұрын іске қосылады.
Авторизация-IauthenticationFilter-Пайдаланушының осы ресурсқа қатынасы бар-жоғын анықтайтын сүзгі. Бұл сүзгі түпнұсқалықты растау сүзгісінен кейін іске қосылады, бірақ кез келген басқа сүзгіден немесе әрекет ету әдісінен бұрын орындалады.
Әрекет сүзгілері-IactionFilter-Әрекеттерге қолданылған сүзгі. Оны əрекет əдісін орындау алдында да, кейін де іске қосуға болады
Әрекет нәтижесі сүзгілері- әрекеттердің нәтижелеріне қолданылады. Бұл әрекеттің алдында және одан кейін іске қосылуы мүмкін
Ерекшелік сүзгілері-IexceptionFilter-Әрекет әдісі мен әрекеттердің нәтижесі арқылы шығарылған ерекше жағдайларды өңдейтін төлсипат.
Әр фильтрді анықтау үшін , сәйкес интерфейстерін орындау керек.
Әрекет әдісін шақырғанда, MVC құрылымы алдымен осы әрекетке қандай да бір атрибуттар қолданылатындығын және егер ол қолданылса, онда олар осы атрибуттарды өңдей бастайды.
1.18.ASP.NET MVC технологиясы арқылы жасалған бағдарламада контроллер қалай құрылады?
Контроллер фабрикасы іздеу салуды орындау үшін контроллер экземплярын құруға жауап береді.
Контроллер фабрикасы сұрауды қамтамасыз ету үшін контроллерлердің даналарын жасауға жауапты. Әрекетті белсендіруші контроллер сыныбында әрекет әдісін іздейді және шақырады. MVC Framework осы компоненттердің екеуінің де стандартты іске асырылуын қамтиды және біз олардың мінез-құлқын теңшеуді көрсетеміз. Біз сондай-ақ осы компоненттерді өзіміздің арнайы логикамен толығымен алмастыруды түсіндіреміз.
Қолданба үлгісі
Осы және кейінгі мақалалар үшін біз Бос үлгісін қолданып, MVC құсбелгісін қойып, ControllerExtensibility деп аталатын жаңа MVC жобасын жасадық. Бөлім үшін қалталарды қосу және негізгі сілтемелер. Мұнда инфрақұрылымда қол жетімді кеңейту мүмкіндіктерінің әртүрлі түрлерін көрсету үшін бірқатар қарапайым контроллерлермен жұмыс істейміз.
Бастау үшін, Модельдер қалтасында төмендегі мысалда көрсетілгендей Нәтиже класының анықтамасын қамтитын Result.cs файлын жасау керек:
namespace ControllerExtensibility.Models
{
public class Result
{
public string ControllerName { get; set; }
public string ActionName { get; set; }
}
}
Келесі қадам - / Views / Shared қалтасын жасау және оған Result.cshtml атты жаңа қарау файлын қосу. Бұл көрініс контроллердегі барлық әрекет әдістерін бейнелейді. Келесі мысал Result.cshtml файлының мазмұнын көрсетеді:
@model [email protected]{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Result</title>
</head>
<body>
<div>Контроллер: @Model.ControllerName</div>
<div>Метод действия: @Model.ActionName</div>
</body>
</html>
Бұл көрініс оның Нәтиже класын үлгі ретінде пайдаланады және ControllerName және ActionName сипаттарының мәндерін жай көрсетеді. Соңында, сіз бірнеше негізгі контроллер жасауыңыз керек. Төмендегі мысалда Өнімді басқару коды көрсетіледі:
using System.Web.Mvc;
using ControllerExtensibility.Models;
namespace ControllerExtensibility.Controllers
{
public class ProductController : Controller
{
public ViewResult Index()
{
return View("Result", new Result
{
ControllerName = "Product",
ActionName = "Index" });}
public ViewResult List()
{
return View("Result", new Result
{
ControllerName = "Product",
ActionName = "List" }); } }}
1.19.Как создается представлении в приложении, созданного по технологии ASP.NET MVC?
Жаңа ASP.NET MVC жобасын жасаған кезде, Visual Studio жобаға қажетті бірнеше түпнұсқа мазмұнды болу үшін опцияларды ұсынады. Бұл идея жаңа бастаған әзірлеушілердің оқу үрдісін жеңілдету және жалпы құралдар мен тапсырмалар үшін уақыт үнемдейтін ұсынылған әдістерді қолдану болып табылады. Мұндай қолдану деректері нысандардың тізімін шығарады, үлгі сипаттарын өңдейді және т.б. үшін үлгі кодын пайдалану арқылы жасалған контроллерлер мен көріністерді жасауға арналған үлгілер арқылы жүзеге асырылады.
Visual Studio 2013 және MVC 5 нұсқаларында Microsoft корпорациясының әзірлеушілері үлгілерді жаңартты және ASP.NET жобаларының әртүрлі түрлері арасындағы шекараны бұзып, жоба үлгілері мен код конфигурацияларының кең ауқымын қамтамасыз ету үшін үлгі жасау ретінде белгілі болды.
Жаңа MVC Framework жобасын алғаш рет жасаған кезде, сізде екі негізгі бастау нүктесі бар:Empty ( бос үлгі) және MVC үлгісі. Бұл атаулар біраз алдамшы, себебі MVC Framework үшін талап етілетін Add folders and core references for(ссылканы қосу) New ASP.NET проектісіне қосылады.
Нақты айырмашылық MVC үлгісі жаңа жобаларға қосылатын қосымша мазмұнмен байланысты болып келеді. Стандартты контроллерлер мен көріністерді, қауіпсіздік конфигурациясын, көптеген танымал JavaScript және CSS бумаларын (jQuery және Bootstrap сияқты) және қолданбаның пайдаланушылық интерфейсінің тақырыпты құру үшін Bootstrap кітапханасын пайдаланатын орналасуды қамтитын дайын бастапқы нүкте ұсынады.
“ Empty ”тек MVC Framework үшін қажетті негізгі сілтемелерді және негізгі қалта құрылымын қамтиды. MVC үлгісі өте көп мазмұнды қосады және айырмашылықты екі жасалған жобалардың мазмұнын көрсетеді.
Сол жақта жоба MVC тексерілген кезде бос үлгісін қолдану арқылы жасалады. Оң жағындағы жоба MVC үлгісін қолданып жасалған және барлық файлдарды көрсету үшін Solution Explorer терезесінде әр түрлі папкаларды ашуым керек болады, себебі файлдар тізімі тым ұзақ.
Көріністер мен ішінара көріністер мынадай түрде болады :
/Views/ИмяКонтроллера
Мысалы, ProductController классына байланысты көрініс
/ Views / Product папкасында орналасқан. Қарастырулар ішіндегі класс атауының бақылау бөлімі көрсетілмегенін ескеріңіз; / Views / ProductController орнына / views / product папкасы пайдаланылады. Бастапқыда бұл көзқарас логикалық емес көрінуі мүмкін, бірақ ол жақында әдетке айналады.
MVC Framework әрекеттер әдісінің стандартты көрінісі. Мысалы, List () әдісімен және көрініс List.cshtml деп аталуы керек. Осылайша, ProductController классының List () әдісі үшін стандартты көрініс /Views/Product/List.cshtml болады.
C#:
return View();
1.20.Деректер қорымен жұмыс істеу қажет болған кезде Models папкасында жасалған файлда не анықталады?
Диаграммада Entity Framework деректерімен жұмыс істеудің үш тәсілі бар: Database First, Model First, и Code First.

Қолданыстағы деректер базасы болған жағдайда, Entity Framework дерекқор нысандарына (кестелер мен бағандар сияқты) сәйкес келетін сыныптар мен сипаттардан тұратын деректер үлгісін автоматты түрде жасай алады. Дерекқор құрылымын (дүкен схемасын), деректер үлгісін (тұжырымдамалық үлгі) және оларды бір-біріне салыстыру туралы ақпарат .edmx файлында XMLде бар. Visual Studio графикалық дизайнер Entity Framework ұсынады, ол арқылы сіз .edmx файлын көре және өңдей аласыз. Веб-пішіндерде Entity Framework және Entity Framework құралымен жұмыс істеуді бастау үшін деректер базасының алғашқы әдісі пайдаланылады.
Егер дерекқор болмаса, Entity Framework жобалаушы Visual Studio арқылы деректер үлгісін жасау арқылы бастауға болады. Үлгіде жұмыс жасағаннан кейін, дизайнер дерекқорды жасау үшін DDL (деректерді анықтау тілі) -кодты жасайды. Бұл тәсілде .edmx-ақ модель және картаға қатысты ақпаратты сақтау үшін қолданылады. Entity Framework 4-дегі жаңа әдістер осы тәсілмен дамудың шағын үлгісін қамтиды.
Дерекқордың болуына қарамастан, сіз дерекқордағы нысандарға сәйкес келетін сыныптар мен сипаттарға арналған кодты қолмен жаза аласыз және .edmx файлын пайдаланбастан осы кодты Entity Framework көмегімен қолдана аласыз. Міне, кейде кейде сіз кодты деп аталады, ал ресми атауы - Code First. Дүкен схемасы мен сіздің кодыңызбен ұсынылған тұжырымдамалық үлгі арасындағы салыстыру конвенцияға және арнайы картаға ұқсас API арқылы өңделеді. Егер дерекқор бұрыннан жоқ болса, Entity Framework моделі өзгерген жағдайда оны жасайды, жояды немесе қайта жасайды.
Database Context құруАғымдағы деректер үлгісі үшін Entity Framework функционалын үйлестіретін негізгі сынып Database Context деп аталады. Бұл сынып System.Data.Entity.DbContext-тен алынған. Кодта, деректер үлгісіне қандай нысандарды қосатындығын анықтайсыз және сіз Entity Framework әрекетін де анықтай аласыз
1.21.ASP.NET MVC жасаған бағдарламада Entity Framework технологиясы не үшін пайдаланылады?
http://dotnet.today/ru/aspnet5-mvc6/tutorials/mvc-with-entity-framework.htmlӘрбір интернет приложениесі үшін, әрқашанда қандай да бір шешім сақтауымыз керек,ереже бойынша сақтау үшін база данных қолданылады. Ал .NET технологиясында база данных кіру үшін, ADO.NET. секілді технологияның мүмкіндіктері бар. Соның ішінде (object-relational mapping) ORM құралдың бірі болып Entity Framework қолданылады,
EF көмегімен приложение құру кезінде данныймен жұмыс істеудің 3 тәсілі бар, DatabaseFirst, ModelFirst және CodeFirst. Қазіргі кезде EF разработчиктерінің және Microsoft компаниясы CodeFirst –ке аса мән беруде. Сондықтан іазыр осы CodeFirst-ке мысал қарастыратын боламыз.
Database First
Қолданыстағы деректер базасы болған жағдайда, Entity Framework дерекқор нысандарына (кестелер мен бағандар сияқты) сәйкес келетін класстар мен сипаттардан тұратын деректер үлгісін автоматты түрде жасай алады.
Model First
Егер дерекқор болмаса, Entity Framework жобалаушы Visual Studio арқылы деректер үлгісін жасау арқылы бастауға болады. Үлгіде жұмыс жасағаннан кейін, дизайнер дерекқорды жасау үшін DDL (деректерді анықтау тілі) -кодты жасайды.
Code First
Дерек қордың болуына қарамастан, сіз дерек қордағы нысандарға сәйкес келетін класстар мен сипаттарға арналған кодты қолмен жаза аласыз және кодты Entity Framework көмегімен қолдана аласыз. Міне, кейде сіз кодты code only деп аталса, ал ресми атауы - Code First.
Алдымен база данных орнатылып және қосылып тұруы қажет. Егер де қосылмаған жағдайда Connection string файлды web.config приложениені тексереміз. Мысалда Microsoft SQL –ге қосуды қарастырайық:
<add name="приложениеде коннекте қолданылатын аты " connectionString="Data Source=(local); Initial Catalog=Базы данных аты; User Id=қолданушы СУБД; Password=қолданушы үшін пароль СУБД;" providerName="System.Data.SqlClient" />
Entity Framework-1.0-дің алғашқы нұсқасы 2008 жылы пайда болды және ORM-ге негізделген қолдауды (object-relational mapping - деректерді нақты нысандарға салыстыру) және деректер базасымен өзара іс-қимылға бірыңғай көзқарасты - Database First-ді ұсынды. Entity Framework деректермен жұмыс істеу үшін .NET негізіне негізделген арнайы нысанға бағытталған технологияны білдіреді.
Егер Entity Framework-та Designer мен жұмыс істесеңіз, код сізге өзі құрылады, ал Code First-пен болса сіз өзіңіз құрасыз.
public class ProductContext : DbContext
{
public DbSet<Category> Categories { get; set; }
public DbSet<Product> Products { get; set; }
}
Контекст бар болғанда, контекстте объектілерді «Қосу» немесе «Тіркеу» әдістерін қолданып немесе «Жою» әдісін пайдалануды
сұрауға болады.
1.22.ADO.NET дерекқорын ASP.NET MVC технологиясы арқылы жасалған бағдарламаға бекіту үшін қандай әрекеттерді жасау керек?
ADO - Microsoft (MS Access, MS SQL Server) әзірлеген және ActiveX компоненттік технологиясына негізделген деректерге қол жеткізу үшін қолданылатын бағдарламалау интерфейсі. ADO түрлі көздерден (реляциялық дерекқорлар, мәтіндік файлдар және т.б.) деректерді нысанға бағытталған түрде ұсыну мүмкіндігін береді.
• ADO.NET - бұл Microsoft .NET негізіндегі қосымшаларға арналған деректерге қол жеткізуді қамтамасыз ететін технология. Бұл бұрынғы технологиялар ADO-ның дамуы емес, бірақ тәуелсіз технология, NET Framework бөлігі.
ADO.NET үш жағы
ADO.NET кітапханаларын үш тұжырымдамалық түрде қолдануға болады:
• қосылған режимде,
• желіден тыс режимде,
• Entity Framework технологиясын пайдалану.
Қосылған режим
Бұл деңгейде дерекқорлар қосылыс объектілері, деректерді оқу объектілері және талап етілетін ДҚБЖ үшін әзірленген деректер провайдері арқылы жүзеге асырылады. Деректерді алу үшін келесі қадамдар орындалады.
• Байланыс объектісін жасаңыз, конфигурациялаңыз және ашыңыз.
• Конструктор аргументінде немесе Connection сипаты арқылы қосылым нысанын анықтайтын пәрмен нысанын жасаңыз және теңшеңіз.
• Конфигурацияланған командалық нысанның ExecuteReader () әдісіне қоңырау шалу.
• Деректерді оқу объектісінің Read () әдісімен әрбір жазбаны өңдеңіз.
• Деректерді оқу нысандары алға қарай бағдарлау үшін деректер ағынын қамтамасыз етеді. Оқу бір уақытта бір рет өткізіледі. Сондықтан, нысандарды оқу тек сұрауларды анықтайды. Дерекқорға қосылуды жабу және жабу бағдарламашы үшін толығымен жауап береді.
• ADO.NET үш дерекқор клиенттік атауларымен бірге келеді: біреуі - SQL Server, екіншісі - ашық дерекқордың қосылымы (ODBC) деректер көздері, ал үшінші - OLE DB арқылы қол жетімді кез келген дерекқор үшін.
Entity Framework
• Entity Framework абстракцияны жаңа деңгейге - объект үлгісіне көрсетеді. Енді картаға қарапайым тілдік нысандардағы деректермен жұмыс істеуге мүмкіндік беретін қолданбаның бизнес нысандарында орын алады. Субъектілер - бұл тақырыптық аймаққа салыстырылатын физикалық дерекқордың тұжырымдамалық үлгісі. Ресми түрде, бұл модель «Интегралдық деректер моделі» (EDM) деп аталады. EDM моделі жеке деректер базасына салыстырылатын клиенттік сыныптардың жиынтығы болып табылады. Дегенмен, субъектілердің дерекқор схемасында тікелей көрсетілуін қажет етпейтінін түсіну керек, себебі ол атау негізінде көрінуі мүмкін. Маңызды сыныптар бұрыннан бар қажеттіліктерге сәйкес қайта құрылымдалуы мүмкін және EF жұмыс уақыты осы бірегей аттарды дұрыс дерекқор схемасына салыстырады.
ADO .NET (ActiveX Data .NET объектілері) қарамастан нақты деректер базасын басқару жүйесін іске асыру ерекшеліктерін, және деректер базасын өте құрылымы, және қарамастан деректер базасын өзі орналасқан бағдарламадан дерекқорға қосылу жеңілдету үшін бағдарламалық іске интерфейстер сынып жиынтығы болып табылады - атап айтқанда, сервер тарапынан бөлінген ортада (клиент-сервер бағдарламасында).
ADO .NET кеңінен клиент жағында сервер бағдарламалық деректер базасына қол жеткізу ASP .NET объектілерімен веб-бағдарламалау технологиясы ұштастыра отырып пайдаланылады.
өте күрделі қарым-қатынаста өзара байланысты ADO.NET сынып өкілдері, - деректерге байланысты тіпті ең қарапайым міндеттерді шешу түрлі объектілерді әр түрлі пайдалануды көздейді. қатаң бірізді сипаттамасы ADO .NET элементтері, өйткені осы қарым-қатынастардың өте проблемалы болып табылады.
NET бағдарлама деңгейінде деректер базасымен жұмыс істеу:
• дерекқордан ақпаратты алу міндетін шешуге арналған мұраланған әдістер мен сипаттамалардың декларациялары бар сыныптық декларациялар жиынтығымен;
• көптеген объектілер - деректер базасымен жұмыс істейтін сынып өкілдері;
• нақты дерекқордың нақты құрылымын көрсететін нақты нысандардың көптеген құндылықтары мен қасиеттері.
1.23. HYPERLINK "https://vk.com/away.php?to=http%3A%2F%2FADO.NET&cc_key=" \t "_blank" ADO.NET технолгиясы ASP.NET MVC технологиясынан немен ерекшеленеді? Entity Framework технологиясын қолдануда қандай қандай файлдар құрылады? ASP.NET MVC-Model-view-controller шаблонын іске асыратын веб-прилодениелерді құруға арналған фреймворк. HYPERLINK "https://vk.com/away.php?to=http%3A%2F%2FASP.NET&cc_key=" \t "_blank" ASP.NET MVC негізгі үш компоненттің өзара әрекетімен сипатталады: модель,көрініс,контроллер. Контроллер сұраныстарды қабылдайды,қолданушы енгізген мәліметті өңдейді,модель және көрініспен байланысып,қолданушыға сұраныс нәтижесін қайтарады.
ADO.NET (ActiveX Data Object .NET үшін)-Microsoft .NET негізіндегі бағдарламалар үшін деректерге қол жеткізуді қамтамасыз ететін технология. Бұл бұрынғы технологиялар ADO-ның дамуы емес, бірақ тәуелсіз технология, NET Framework бөлігі. HYPERLINK "https://vk.com/away.php?to=http%3A%2F%2FADO.NET&cc_key=" \t "_blank" ADO.NET негізінен тығыз байланыстағы клиенттік-серверлік жүйе үшін жасалған ADO классикасынан айырмашылығы DataSet нысандарымен автономды жұмысқа көбірек назар аударады. Бұл типтер әрқайсысында жолдар мен бағандар жиынтығын қамтитын өзара байланысты деректер кестелерінің кез келген санының жергілікті көшірмесін білдіреді. DataSet нысандары DataSet мазмұнымен жұмыс істеуге, деректер көзіне қосылуды қажет етпей өзгертіп, тиісті деректер адаптерімен өңдеуге арналған өзгертілген деректердің блоктарын жіберуге мүмкіндік береді (веб-бет немесе жұмыс үстеліндегі компьютерде жұмыс істейтін бағдарлама сияқты). ADO.NET бұрынғы деңгейлері деректердің физикалық құрылымына байланысты болатын. Деректермен өзара әрекеттесу кезінде кестелер мен қарым-қатынас схемаларын есте сақтау керек еді. Дерекқормен байланыс SQL тілінде жүзеге асырылады, бұл үлкен коды әкеледі, себебі C # тілі SQL-тен өте ерекшеленеді. Entity Framework абстракцияны жаңа деңгейге - объект үлгісіне көрсетеді. Субъектілер (еntities)- бұл тақырыптық аймаққа салыстырылатын физикалық дерекқордың тұжырымдамалық үлгісі. Ресми түрде, бұл модель «Интегралдық деректер моделі» (Entity Data Model —EDM) деп аталады. EDM моделі жеке деректер базасына салыстырылатын клиенттік сыныптардың жиынтығы болып табылады. Дегенмен, субъектілердің дерекқор схемасында тікелей көрсетілуін қажет етпейтінін түсіну керек, себебі ол атау негізінде көрінуі мүмкін. Маңызды сыныптар бұрыннан бар қажеттіліктерге сәйкес қайта құрылымдалуы мүмкін және EF жұмыс уақыты осы бірегей аттарды дұрыс дерекқор схемасына салыстырады. MVC жоба құрғанда үндеместік бойынша жобадағы Entity Framework кітапханалары жоқ және оларды қосу қажет. Бұл Nuget арқылы, Package Manager консолі арқылы немесе жай ғана project.json ішіне керекті тәуелділікті теру арқылы жасалуы мүмкін. MS SQL серверімен Entity Framework арқылы өзара әрекеттесу үшін, Microsoft.EntityFrameworkCore.SqlServer бумасы қажет. Ол үшін модельдер құруымыз қажет. Бұл үшін Microsoft.EntityFrameworkCore.Tools пакеті қажет. HYPERLINK "https://vk.com/away.php?to=http%3A%2F%2FASP.NET&cc_key=" \t "_blank" ASP.NET Core 2.0 және одан кейінгі нұсқасында жобада үндеместік бойынша бұл бумалар бар.
1.24.ASP.NET MVC технологиясы арқылы жасалынған қосымшаға Entity Framework дерекқорын тіркеу үшін қандай әрекеттерді жасау керек?
Entity Framework Microsoft ActiveX Data технологиясын жалғастырады және C # негізіндегі объективті-бағытталған код арқылы деректермен жұмыс істеуге мүмкіндік береді. Бұл сізге қолайлы жағдайды ұсынады: Сізге мәліметтерге рұқсат кодын білудің қажеті жоқ, сондықтан сіз SQL-сервер және синтаксиса T-SQL сұранысы бойынша толық жұмысын білуіңіз қажет емес,оның орнына C # тілінің класстары сияқты деректер базасының кестелерімен жұмыс жасайсыз. с осы элементтермен кесте - сыныптармен бірдей, сондай-ақ SQL-сұранымдардың синтаксисі сияқты ADO.NET-де бұрынғыдай C # -те видео командалар енгізілу керек, бұл LINQ-ға қолайлы әдіске ауыстырылды. Entity Framework SQL-инструкциясында C # кодын енгізу бойынша міндетті өзі алады.
Entity Framework жұмысында сізге интегралданған ортаны дамыту (IDE) Visual Studio арқылы шығарылатын деректер базасын құрудың үлкен мүмкіндіктерін ұсынады. Entity Framework 4.1 нұсқасы сізде үш базалық деректерді жобалауға мүмкіндік береді, оның ішінде сіз өзіңіздің қолыңыздан таңдауға болады:
Database-First
Жобалаушылар үшін базалық деректерді алу - сіз түрлі құралдармен (мысалы, SQL Server Management Studio) базаны құрып, EDMX-модель базасының деректерін генерациялайтын базаны жасайсыз (ол графикалық интерфейсті бейне диаграммасында және объективтік модельдегі базалық деректермен өзара байланысты қолайлы графикалық интерфейс ұсынады сынып C #). Сізге SQL Server жұмыс істеу керек және жақсы T-SQL синтаксисін білу қажет, бірақ бұл C # -де қажет болмайды.
Model-First
Архитекторларға сай келеді - сіз EDMX графикалық моделін Visual Studio-да (фондағы режимде C # моделі жасайды) графикалық EDMX базасында деректер базасына негізделген генерлейсіз. Т-SQL және C # синтаксисінің бөлшектері қажет емес.
Code-First
Программистерге сай келеді - EDMX моделі әдетте пайдаланылмайды және қолдана отырып, C # нысаналы модельді қолданады (оның ішінде қолдаушы әдістерді генерациялау әдісімен жасалатын базалық деректерді генерациялау, сонымен қатар, C # нысандарын жасаудың базалық типтерін жасау). Әлбетте, бұл программистерге жетеді, жақсы таныс C # синтаксисі.
1.25.Деректер базасы үлгісін жасаудың Entity Framework әдістерін қысқаша айтып беріңіз? Деректер қорыныың моделі қандай мақсатта, не себепті пайдаланылған?
Database FirstҚолданыстағы деректер базасы болған жағдайда, Entity Framework дерекқор нысандарына (кестелер мен бағандар сияқты) сәйкес келетін сыныптар мен сипаттардан тұратын деректер үлгісін автоматты түрде жасай алады. Дерекқор құрылымын (дүкен схемасын), деректер үлгісін (тұжырымдамалық үлгі) және оларды бір-біріне салыстыру туралы ақпарат .edmx файлында XMLде бар. Visual Studio графикалық дизайнері Entity Framework ұсынады, ол арқылы сіз .edmx файлын көре және өңдей аласыз. Веб-пішіндерде Entity Framework және Entity Framework құралымен жұмыс істеуді бастау үшін деректер базасының алғашқы әдісі пайдаланылады.
Model FirstЕгер дерекқор болмаса, Entity Framework жобалаушы Visual Studio арқылы деректер үлгісін жасау арқылы бастауға болады. Үлгіде жұмыс жасағаннан кейін, дизайнер дерекқорды жасау үшін DDL (деректерді анықтау тілі) -кодты жасайды. Бұл тәсілде .edmx-ақ модель және картаға қатысты ақпаратты сақтау үшін қолданылады. Entity Framework 4-дегі жаңа әдістер осы тәсілмен дамудың шағын үлгісін қамтиды.
Code FirstДерекқордың болуына қарамастан, сіз дерекқордағы нысандарға сәйкес келетін сыныптар мен сипаттарға арналған кодты қолмен жаза аласыз және .edmx файлын пайдаланбастан осы кодты Entity Framework көмегімен қолдана аласыз. Міне, кейде кейде сіз кодты деп аталады, ал ресми атауы - Code First. Дүкен схемасы мен сіздің кодыңызбен ұсынылған тұжырымдамалық үлгі арасындағы салыстыру конвенцияға және арнайы картаға ұқсас API арқылы өңделеді. Егер дерекқор бұрыннан жоқ болса, Entity Framework моделі өзгерген жағдайда оны жасайды, жояды немесе қайта жасайды.Code First үшін әзірленген деректерге қолжетімділік API DbContext класына негізделген. API сондай-ақ, деректер базасы бірінші және Үлгі өзгерістерге алғашқы үлгідегі модельдерді әзірлеу процесінде қолданылуы мүмкін.
[HttpGet]
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Book book)
{
db.Books.Add(book);
db.SaveChanges();
return RedirectToAction("Index");
}
Бұл әдісте мәліметтер базасына жаңа мәлімет қосып жатырмыз.
Create әдісіне Book типті book береміз.
db.Books.Add(book) әдісі Entity Framework арқылы орындалады. Бұл әдіс мәліметтер базасына book-ты қосады.
Ал Entity Framework тың db.SaveChanges() әдісі осы орындалған өзгерістерді мәліметтер базасына сақтайды.
public ActionResult Edit(int? id)
{
if(id==null)
{
return HttpNotFound();
}
Book book = db.Books.Find(id);
if(book!=null)
{
return View(book);
}
return HttpNotFound();
}
[HttpPost]
public ActionResult Edit(Book book)
{
db.Entry(book).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}

Приложенные файлы

  • docx 18146063
    Размер файла: 143 kB Загрузок: 0

Добавить комментарий