
- •Назначение и структура платформы .Net (NetFrameWork). Виды net-приложений и их базовые концепции (Console, WinForms, wpf, asp.Net).
- •2. Управляемый и неуправляемый код. Взаимодействие с унаследованным кодом. Структура сборки net - приложения.
- •Назначение, достоинства и недостатки msil. Процесс компиляции и исполнения net – приложения.
- •Назначение и состав общей системы типов cts. Основные используемые типы в Net-приложениях.
- •Отличительные особенности сборки, пространства имен и типов. Подключение библиотечных и дополнительных пространств имен.
- •Освобождение памяти и сборка мусора net–приложений. Стратегия поколений объектов.
- •Конфигурирование net - приложений. Назначение файлов Machine.Config, App.Config, App.Exe.Config
- •Понятие и назначение делегата. Пример использования делегата в ооп на c#.
- •Понятие и назначение события. Примеры использования событий в c#.
- •Основные элементы управления WinForms-приложений. Возможности управления поведением элементов при изменении размеров формы (элементы Anchor и Dock).
- •Виды окон, используемых для приложений WinForms. Состав файлов формы и их назначение.
- •12. Списки, очереди, стеки, словари, их применение и сравнение с массивами. Интерфейс iEnumerable и его назначение
- •13. Обработка и генерация исключений. Создание собственных исключений для приложения.
- •14. Локализация WinForms-приложений. Понятие ресурсов и подчиненной сборки.
- •15. Развертывание net-приложений. Развертывание xcopy и управление встроенными каталогами. Понятие строгого имени и развертывание общих сборок.
- •16. Понятие и назначение домена приложений. Достоинства и недостатки домена по сравнению с потоками и процессами.
- •17. Основные цели, достоинства и недостатки ооп.
- •18. Понятие объекта и задач построения ис с точки зрения объектов. Назначение и структура crc-карточек.
- •1 9. Понятия инкапсуляции и абстракции, их назначение в ооп.
- •20. Назначение и структура языка uml
- •21. Отношение зависимости, ассоциации, агрегации и композиции между классами.
- •24. Базовые принципы программирования dry, kiss, yagni.
- •25. Принцип единственности ответственности и шаблон проектирования Expert.
- •26. Шаблоны проектирования High Cohesion и Low Coupling.
- •27. Шаблон проектирования Creator
- •28. Назначение модульного тестирования. Понятие единицы автономного тестирования.
- •29. Тестирование методом черного и белого ящиков и их применение к модульному тестированию.
- •30. Назначение и целесообразность использования заглушек.
- •31. Назначение подставного объекта и его отличие от заглушки.
- •34. Понятие полиморфизма и его основные виды (классический полиморфизм, перегрузка, параметрический полиморфизм).
- •35. Классический полиморфизм на основе наследования и его применение в базовых принципах проектирования.
- •36. Обоснованность применения наследования или композиции классов. Отрицательное правило наследования.
- •37. Понятие и назначение интерфейса. Отличие реализации интерфейса от наследования. Выбор предпочтения между наследованием и реализацией интерфейса.
- •38. Состав и назначение solid-принципов.
- •39. Понятие шаблона проектирования и структура шаблонов grasp.
- •40. Принцип открытости/закрытости (ocp) и его соответствие шаблонам полиморфизм и защита от изменений.
- •41. Формулировка и назначение принципа подстановки Liskov (lsv).
- •42. Назначение и структура принципа разделения интерфейсов (isp).
- •43. Назначение и структура принципа инверсии зависимостей (dip).
- •44. Формулировка, назначение и примеры использования принципа наименьшего знания (plk).
- •45. Назначение и формулировка шаблона Controller. Основные виды контроллеров и управление сложностью функционирования ис.
- •46. Назначение, формулировка и примеры использования шаблона чистая синтетика.
- •49. Назначение правила разработки тестовых случаев (test case) и тестовых комплектов
- •50. Классификация видов тестирования
2. Управляемый и неуправляемый код. Взаимодействие с унаследованным кодом. Структура сборки net - приложения.
Управляемый код - данное приложение создано на основе платформы .NET и поэтому управляется общеязыковой средой CLR, которая загружает приложение и при необходимости очищает память.
Неуправляемые - приложения, например, созданные на языке С++, которые компилируются не в общий язык CIL, как C# или VB.NET, а в обычный машинный код.
Платформа .NET поддерживает следующие виды совместимости с унаследованным кодом:
вызовы из типов .NET напрямую к модулям DLL, созданным на С (то есть обращения к Win32 API или пользовательским модулям DLL);
взаимодействие .NET и СОМ;
применение элементов управления ActiveX в Windows Forms;
вызовы из типов СОМ к типам .NET;
Сборка (assembly)
В первом приближении - аналог EXE или DLL; более того, в случае приложения, состоящего из одного файла, сборка даже имеет расширение .exe или .dll. Несмотря на это сходство, сборка содержит существенно больше информации о приложении, чем традиционные исполняемые файлы.
Причина появления - трудности установки Windows-приложений. Наконец, многие приложения использовали разделяемые DLL, что зачастую приводило к проблемам при установке более новых версий этой DLL.
Понятие сборки было введено для того, чтобы решить эти проблемы.
C точки зрения структуры любая сборка .NET (*.dll или *.ехе) включает в себя следующие элементы:
заголовок файла Windows – указывает на то, что сборка может загружаться и использоваться в Windows + тип приложения.
заголовок файла CLR – блок данных, который поддерживает все сборки .NET, для обслуживания в CLR (флаги для исполняющей среды)
CIL-код – промежуточный язык, не зависящий от платформы, платформы и процессора. (работает посредством JIT- компилятора) Служит для работоспособности сборок в разных архитектурах устройствах и ОС.
метаданные типов – формат находящихся внутри сборки типов, внешних типов. Выяснение того, в каком месте двоичного файла находятся типы и размещение типов в памяти.
манифест сборки – входящие в состав сборки модули + версия сборки + внешние сборки (на которые есть ссылки).
дополнительные встроенные ресурсы – значки приложения, графические файлы,звуковые фрагменты и таблицы строк.
Все эти компоненты могут находиться в одном файле, и тогда сборка представляет один единственный файл в формате exe или dll.
Но также может быть, есть основной файл exe, который имеет метаданные сборки и типов и который использует дополнительные файлы ресурсов.
Назначение, достоинства и недостатки msil. Процесс компиляции и исполнения net – приложения.
.NET-приложения компилируются фактически в два этапа.
На первом этапе исходный код компилируется во время построения проекта и вместо исполняемого файла с машинными кодами получается сборка (assembly), содержащая команды промежуточного языка MSIL (Microsoft Intermediate Language — промежуточный язык Microsoft). Код IL сохраняется в файле на диске. При этом файлы MSIL (сокращенно IL), генерируемые компилятором, например, С#, идентичны IL-файлам, генерируемым компиляторами с других языков .NET. В этом смысле платформа остается в неведении относительно языка. Самой важной характеристикой среды CLR является то, что она общая ; одна среда выполняет как программы, написанные на С#, так и программы на языке VB.NET.
Особенности MSIL:
Высокоуровневый ассемблер некоторой виртуальной машины;
Переносимость между разными аппаратными платформами;
Можно получить при компиляции из нескольких языков программирования;
Сохранение имен классов, методов и исключительных ситуаций;
Возможность обратного ассемблирования – является в большей степени минусом, т.к. очень легко получить исходный код программы, хоть и не в самом красивом виде;
Происходит значительное уменьшение производительности кода;
Излишняя универсальность из-за того, что используется несколько языков программирования;
MSIL можно рассматривать как ассемблер некоторой виртуальной машины. Это нетипичный ассемблер, так как он обладает многими конструкциями, характерными для языков более высокого уровня: например, в нем есть инструкции для описания пространств имен, классов, вызовов методов, свойств, событий и исключительных ситуаций. Кроме того, MSILявляется стековой машиной со статической проверкой типов; это позволяет отслеживать некоторые типичные ошибки.
MSIL представляет собой дополнительный уровень абстракции, позволяющий легко справляться с переносом кода с одной платформы на другую, в том числе, и с изменением разрядности платформы.
Отметим, что MSIL сохраняет много информации об именах, использованных в исходной программе: имена классов, методов и исключительных ситуаций сохраняются и могут быть извлечены при обратном ассемблировании.
Второй этап компиляции наступает непосредственно перед фактическим выполнением страницы. На этом этапе CLR транслирует промежуточный код IL в низкоуровневый собственный машинный код, выполняемый процессором. Процесс происходит следующим образом: при выполнении .NET-программы системы CLR активизирует JIT-компилятор, который затем превращает MSIL во внутренний код процессора. Этот этап известен как оперативная компиляция "на лету" (Just-In-Time) или JIT-компиляция (JIT'ing), и он проходит одинаково для всех приложений .NET (включая, например, приложения Windows). При исполнении программы CLR берет на себя управление памятью, контроль типов и решает за приложение ряд других задач.
Преимущества JIT:
Работает по запросу
Интеллектуален, распознаёт был ли код скомпилирован
По мере выполнения, программа выполняется всё быстрее-быстрее, т.к. выполняется скомпилированный код
Благодаря двум этапам компиляции можно создать скомпилированную сборку с кодом .NET и распределить ее более чем на одну платформу.