- •Лекція 1 Вступ. Огляд парадигм та платформ для Web-розробки. Платформа asp.Net. Інструменти та інтегроване середовище розробки Visual Web Developer 2010.
- •1.1 Вступ. Поняття Інтернет. Базові концепції Всесвітньої павутини www. Еволюція Web
- •1.1.1 Поняття Інтернет
- •1.1.2 Базові концепції Всесвітньої павутини www
- •1.1.3 Еволюція Web
- •1.2 Огляд парадигм та платформ для Web-розробки
- •1.2.2 Найбільш поширені мови та технології розробки
- •1.3 Платформа asp.Net
- •1.3.1 Розвиток asp.Net
- •1.3.2 Ключові переваги asp.Net mvc
- •1.4 Інструменти та інтегроване середовище розробки Visual Web Developer 2010
- •1.4.3 Додаткові компоненти
- •1.4.4 Отримання допоміжної інформації від розробників
- •1 Анатомія html-документа
- •2 Текст
- •3 Гіперпосилання
- •4 Форматовані списки
- •5 Таблиці
- •6 Каскадні таблиці стилів
- •Лекція 3 Синтаксичні конструкції мови c#.
- •3.1Зв’язок між c# I .Net. Особливості платформи .Net
- •3.1.1 Загальномовне виконуюче середовище
- •3.1.2 Класи .Net Framework
- •3.1.3 Простори імен .Net
- •3.2Синтаксичні особливості c#
- •3.2.2 Визначені типи даних
- •3.2.3 Керування потоком виконання
- •3.2.4 Перерахування
- •3.2.5 Простори імен
- •3.2.6 Метод Main (). Консольний ввід-вивід. Коментарі.
- •3.3Об’єкти і типи
- •3.3.1 Класи
- •3.3.2 Структури
- •3.4Наслідування
- •3.4.1 Типи наслідування
- •3.4.2 Модифікатори доступу
- •3.4.3 Інтерфейси
- •3.5Узагальнення
- •3.6Операції
- •1 Колекції
- •2 Делегати
- •Лекція №5 Елементи керування на сторінках asp.Net
- •1. Структура web-додатку на основі asp.Net
- •2. Керування станом в asp.Net
- •3. Серверні елементи керування на сторінках asp.Net
- •3.1 Серверні веб-елементи управління
- •4. Сценарії обробки запитів
- •5. Життєвий цикл сторінки asp.Net
Лекція 3 Синтаксичні конструкції мови c#.
3.1Зв’язок між c# I .Net. Особливості платформи .Net
С # - це відносно нова мова програмування, яка характеризується двома наступними перевагами.
С # спроектована і розроблена спеціально для застосування з Microsoft.NET Framework (розвиненою платформою розробки, розгортання і виконання розподілених додатків).
С # - мова, заснована на сучасній об'єктно-орієнтованої методології проектування, при розробці якої фахівці з Microsoft спиралися на досвід створення подібних мов, побудованих відповідно до запропонованих близько 20 років тому об'єктно-орієнтованих принципів.
С # - це повноцінна мова програмування. Хоча вона і призначена для генерації коду, виконуваного в середовищі. NET, сама по собі вона не є частиною .NET. Існує ряд засобів, які підтримуються .NET, але не підтримуються С#, і, також є засоби, підтримувані С # і не підтримувані .NET.
Нижче наведено основні особливості платформи .NET Framework.
3.1.1 Загальномовне виконуюче середовище
Центральною частиною каркасу .NET є його загальномовне виконуюче середовище, відоме як Common Language Runtime (CLR) або .NET runtime. Код, що виконується під управлінням CLR, часто називають керованим кодом. Однак перед тим як код зможе виконуватися CLR, будь-який вихідний текст (на С# або іншою мовою) повинен бути скомпільований. Компіляція в .NET складається з двох кроків.
Компіляція вихідного коду в Microsoft Intermediate Language (IL).
Компіляція IL в специфічний для платформи код за допомогою CLR.
Наявність коду IL з чітко визначеним універсальним синтаксисом дає ряд суттєвих переваг.
Незалежність від платформи
Компілюючи в IL, ви отримуєте платформену незалежність .NET. Під час виконання може бути легко проведена фінальна стадія компіляції, що дозволить виконати код на конкретній платформі.
Підвищення продуктивності
Код IL завжди компілюється оперативно (Just-In-Time, JIT-компіляція). Замість компіляції всього додатку за один прохід (що може призвести до затримок при запуску), JIT-компілятор просто компілює кожну порцію коду при її виклику (тобто оперативно). Якщо проміжний код одного разу скомпільований, то результуючий машинний виконуваний код зберігається до моменту завершення роботи програми, тому його перекомпілювання при повторних зверненнях до нього не потрібно.
Це пояснює, чому виконання керованого коду IL буде майже настільки ж швидким, як і виконання рідного машинного коду. Підвищення продуктивності полягає в тому, що оскільки фінальна стадія компіляції відбувається під час виконання, JIT-компілятор на цей момент вже знає, на якому типі процесора буде запущена програма. А це значить, що він може оптимізувати фінальний виконуваний код, використовуючи інструкції конкретного машинного коду, призначені для конкретного процесора.
Здатність до мовної взаємодії
Застосування IL не тільки забезпечує незалежність від платформи; воно також забезпечує здатність до мовної взаємодії. Ви можете скомпілювати програму на одній мові в код IL, і цей скомпільований код зможе вільно взаємодіяти з IL-кодом, скомпільованим з іншої мови.
Найважливіші властивості IL можуть бути сформульовані наступним чином:
об'єктна орієнтація та застосування інтерфейсів;
сувора відмінність між типами значень і типами посилань;
строга типізація даних;
обробка помилок через використання виключень;
застосування атрибутів.
Підтримка об'єктної орієнтації та інтерфейсів
Принцип, яким керувалися в Microsoft при створенні IL: класичне об'єктно-орієнтоване програмування з реалізацією одиночного наслідування класів. На додаток до класичної об'єктної орієнтації в мові IL також введено поняття інтерфейсів. Інтерфейси, побудовані з використанням .NET - це не те ж саме, що інтерфейси СОМ; їм не потрібна підтримка з боку інфраструктури СОМ. Однак вони поділяють з інтерфейсами СОМ ідею надання контракту, і класи, що реалізують заданий інтерфейс, повинні пропонувати реалізацію методів і властивостей, специфікованих цим інтерфейсом. В дійсності під здатністю мовної взаємодії мається на увазі можливість для класів, написаних на одній мові, безпосередньо звертатися до класів, написаних на іншій мові.
Різниця типів значень і типів посилань
Одна з особливостей IL полягає в тому, що вона робить чітку різницю між типами значень і типами посилань. Типи значень - це ті, змінні яких безпосередньо зберігають їх дані, в той час як типи посилань – це ті, змінні яких просто зберігають адресу, за якою можуть бути знайдені відповідні дані. У мові IL також встановлена своя специфікація щодо зберігання даних: екземпляри типів посилань завжди зберігаються в області пам'яті, відомої як керована купа (managed heap), в той час як типи значень зазвичай зберігаються в стеку (хоча, якщо типи значень оголошені як поля всередині типів посилань, то вони також будуть збережені в купі).
Строга типізація даних
Один з найбільш важливих аспектів мови IL полягає в тому, що вона заснована на виключно суворій типізації даних. Це означає, що всі змінні мають чітко визначений конкретний тип даних. Хоча забезпечення безпеки типів може спочатку принести шкоду продуктивності, все ж у більшості випадків переваги, отримані від покладання на безпеку типів, набагато перевищують втрати від деякого зниження продуктивності. Ці переваги включають наступні:
можливість міжмовної взаємодії;
збірка сміття;
безпека;
домени додатків.
Розглянемо їх детальніше.
Строга типізація даних як ключ до міжмовної взаємодії
Якщо певний клас успадкований від іншого або містить у собі екземпляри інших класів, то він повинен знати про всі типи даних, що використовуються іншими класами. Ось чому строга типізація даних так важлива. Проблема з типами даних вирішується в .NET за рахунок застосування загальної системи типів (Common Type System - CTS). Система CTS описує зумовлені типи даних, які доступні в IL, тому всі мови, орієнтовані на середовище .NET, генерують скомпільований код, який в кінцевому підсумку базується на цих типах. CTS описує не просто примітивні типи даних, а цілу розвинену ієрархію типів, що включає добре визначені місця, в яких код може визначати свої власні типи.
Загальна специфікація мови (Common Language Specification - CLS) працює разом з CTS для забезпечення мовної взаємодії. CLS - це набір мінімальних стандартів, яких повинні дотримуватися всі компілятори, орієнтовані на .NET. Оскільки IL - дуже багата мова, розробники більшості компіляторів воліють обмежувати можливості конкретного компілятора підтримкою тільки підмножини засобів IL і CTS. Це нормально до тих пір, поки компілятор підтримує все, що визначено в CTS.
Збірка сміття
Збирач сміття (garbage collector) - це відповідь .NET на питання управління пам'яттю, зокрема, на питання про те, що робити з відновленням пам'яті, яку запитує додаток. Збирач сміття - це програма, призначена для того, щоб очищати пам'ять. Ідея полягає в тому, що вся пам'ять, що динамічно виділяється, розподіляється в області купи. Кожного разу, коли .NET виявляє, що керована купа даного процесу заповнилася і потребує приведення у порядок, він викликає збирач сміття. Цей збирач сміття проходить по всім змінним, які знаходяться в контексті вашого коду, і перевіряє посилання на об'єкти, розташовані в області купи, щоб ідентифікувати, які з них доступні з коду, тобто, дізнатися, на які з об'єктів існують посилання. Будь-який об'єкт з відсутністю посилань розглядається як такий, до якого більше не буде здійснюватися доступ з коду, тому об'єкт може бути вилучений.
Безпека
Механізм безпеки .NET перевершує механізми безпеки, що надаються Windows, оскільки він забезпечує захист на рівні коду, у той час як Windows забезпечує тільки безпеку на рівні ролей.
Безпека, заснована на ролях (role-based security), базується на ідентифікації облікового запису, під яким працює процес (тобто, хто запускає процес і володіє ним). Безпека на рівні коду заснована на тому, що саме робить код, і наскільки йому можна довіряти. Важливість безпеки, заснованої на коді (code-based security), у тому, що вона знижує ризик, пов'язаний з кодом сумнівного походження.
Обробка помилок за допомогою виключень
Середовище .NET спроектоване для полегшення обробки помилкових ситуацій на основі механізму, що використовує виключення. Ідея полягає в тому, що деякі області коду можуть бути помічені як процедури обробки виключень, кожна з яких може обробити певну помилкову ситуацію (наприклад, відсутність файлу або відмова у доступі до якоїсь дії). Архітектура виключень гарантує, що при виникненні помилкових умов виконання негайно перейде до необхідної процедури-обробника, яка найбільшою мірою підходить для обробки даної умови виключення.
Застосування атрибутів
Ідея атрибуту полягає в тому, щоб надати додаткову інформацію щодо певного елемента програми, який може бути використаний компілятором.
Що є новим в застосуванні атрибутів .NET, так це та обставина, що можна визначати власні настроювані атрибути у вихідному коді. Ці користувацькі атрибути поміщаються в метадані, супроводжуючі типи даних і методи програми. Це може виявитися зручним для цілей документування, коли атрибути можуть застосовуватися спільно з технологією рефлексії для вирішення програмістських задач, заснованих на атрибутах.
