Скачать презентацию Курс NET Орг вопросы Включить Скачать презентацию Курс NET Орг вопросы Включить

all_2013_06_25.ppt

  • Количество слайдов: 50

Курс. NET Курс. NET

Орг. вопросы • • Включить камеру Отметить присутствующих След. Занятие – 28 июня После Орг. вопросы • • Включить камеру Отметить присутствующих След. Занятие – 28 июня После регистрации на гитхабе просьба сообщить ссылку на репозиторий (можно синуть сообщение мне в контакте или написать Юре письмо со сслыкой)

Хорошая книга • 97 этюдов для архитекторов программных систем • Нил Форд, Майкл Найгард, Хорошая книга • 97 этюдов для архитекторов программных систем • Нил Форд, Майкл Найгард, Билл де Ора

Хорошая книга • Савина Романа • Тестирование DOT COM или Пособие по жестокому обращению Хорошая книга • Савина Романа • Тестирование DOT COM или Пособие по жестокому обращению с багами в интернетстартапах

Задача • Поприкалываться с рефлексией. • Суть: надо написать универсальный (с небольшими ограничениями) «сохранятель» Задача • Поприкалываться с рефлексией. • Суть: надо написать универсальный (с небольшими ограничениями) «сохранятель» и загрузчик данных. • Задача: есть класс. Надо его сохранить в XML и восстановить из него, как при бинарное сериализации

Первый шаг • Сгенерировать XML. • Пусть именем элемента будет тип объекта, а дочерними Первый шаг • Сгенерировать XML. • Пусть именем элемента будет тип объекта, а дочерними узлами – его поля (название – название поля, значение – значение поля)

Второй шаг - восстановить • Обратить внимание на Type. Descriptor Второй шаг - восстановить • Обратить внимание на Type. Descriptor

Git. Супер краткое руководство Git. Супер краткое руководство

Системы контроля версий (централизованные) CVS, Subversion и Perforce. • есть центральный сервер. • централизованный Системы контроля версий (централизованные) CVS, Subversion и Perforce. • есть центральный сервер. • централизованный Много лет это было сервер является стандартом для систем уязвимым местом всей контроля версий системы. • все знают, кто и чем занимается в проекте. У администраторов есть чёткий контроль над тем, кто и что может делать. • администрировать ЦСКВ легко.

Распределенные системы контроля версий (Git, Mercurial, Bazaar или Darcs) • клиенты не просто выгружают Распределенные системы контроля версий (Git, Mercurial, Bazaar или Darcs) • клиенты не просто выгружают последние версии файлов, а полностью копируют весь репозиторий. Каждый раз, когда клиент забирает свежую версию файлов, он создаёт себе полную копию всех данных • можно работать с несколькими удалёнными репозиториями • Так, в одном проекте можно одновременно вести несколько типов рабочих процессов, что невозможно в централизованных системах.

Ставим программу Git Extentions Ставим программу Git Extentions

2. Заходим на https: //github. com/ • Регистрируемся. После регистрации 2. Заходим на https: //github. com/ • Регистрируемся. После регистрации

Выбираем Create Repository Выбираем Create Repository

 • Кликаем по созданию репозитория (под пунктом 1) • Вводим свободное имя репозитория • Кликаем по созданию репозитория (под пунктом 1) • Вводим свободное имя репозитория + описание

 • Нажимаем create repository • Нажимаем create repository

Переключаемся на http Переключаемся на http

 • Запускаем Git Extentions • Запускаем Git Extentions

 • Во время передачи изменений затребует ввести имя пользователя и пароль от гитхаба • Во время передачи изменений затребует ввести имя пользователя и пароль от гитхаба

ORM Object Relation Mapping ORM Object Relation Mapping

Плюс ORM • Абстракция над конкретным SQL – Минус – надо знать, поддерживает ли Плюс ORM • Абстракция над конкретным SQL – Минус – надо знать, поддерживает ли ORM данный SQL • LINQ to SQL без костылей работает только с MSSQL • Entity работает с многими СУБД – Минус – нельзя использовать «фичи» конкретного SQL – Плюс – снижается порог вхождения в проект – Минус – мало варианций

Плюс ORM • Легкость генерации – В VS что бы сгенерировать модель надо сделать Плюс ORM • Легкость генерации – В VS что бы сгенерировать модель надо сделать два-десять кликов или автоматически по Pre Build Event • Минус Event – то, что возможно потребуется два построения – для генерации и для использования результатов генерации

Плюс ORM • Получение объектно-ориентированного кода – Минус – синтаксического контроля атрибутов, которые производят Плюс ORM • Получение объектно-ориентированного кода – Минус – синтаксического контроля атрибутов, которые производят сопоставление БД нет – Минус - Часто большой объем автогенерируемого кода, который понижает процент покрытия тестами – Плюс – нет строк, всплывающая подсказка

Плюс ORM • Как правило реализуется на ленивых вычислениях Плюс ORM • Как правило реализуется на ленивых вычислениях

Минус ORM • Не любое компилируемое выражение может быть переведено в SQL выражение Минус ORM • Не любое компилируемое выражение может быть переведено в SQL выражение

Минус ORM • Нельзя оптимизировать получаемый код Минус ORM • Нельзя оптимизировать получаемый код

Минусы ORM • Возможные задержки в команде из-за невозможности скомпилировать, пока другой человек меняет Минусы ORM • Возможные задержки в команде из-за невозможности скомпилировать, пока другой человек меняет свою часть

Минусы ORM • Неточность отображения – В MSSQL есть два типа даты – с Минусы ORM • Неточность отображения – В MSSQL есть два типа даты – с точностью до 3 х миллисекунд и с точностью до минуты. В. NET аналога нет – все преобразуется в Date. Time • Тип действия на обновление и удаление не отображается в код на C#

В любом случае • Тесты, тесты… В любом случае • Тесты, тесты…

Минус VS 2012 • Раньше редактор таблиц в БД и самой БД был проще, Минус VS 2012 • Раньше редактор таблиц в БД и самой БД был проще, сейчас придется пользоваться SQL Management Studio

А вы знаете английский? Insert and Update = Delete + update оказывается А вы знаете английский? Insert and Update = Delete + update оказывается

Добавление источника данных (БД) в проект • Указание в Management Studio значения по умолчанию Добавление источника данных (БД) в проект • Указание в Management Studio значения по умолчанию для идентификаторов

Генерация LINQ to SQL • Результат – куча автосгенерированного кода – – • • Генерация LINQ to SQL • Результат – куча автосгенерированного кода – – • • Сгенерированный код нацелен на расширение через Partial классы Имеет несколько конструкторов [global: : System. Data. Linq. Mapping. Database. Attribute(Name="ORM_Test. Table")] public System. Data. Linq. Table Child. Tables [global: : System. Data. Linq. Mapping. Table. Attribute(Name="dbo. Child. Table")] public partial class Child. Table : INotify. Property. Changing, INotify. Property. Changed [global: : System. Data. Linq. Mapping. Column. Attribute(Storage="_id", Db. Type="Unique. Identifier NOT NULL", Is. Primary. Key=true)] public System. Guid id [global: : System. Data. Linq. Mapping. Association. Attribute(Name="Child. Table_Main Table", Storage="_Child. Table", This. Key="child. Id", Other. Key="id", Is. Foreign. Key=true, Delete. Rule="CASCADE")] public Child. Table 2 таблицы – 350 строк кода

Логирование результатов запросов • Какая логическая гадость в примере? Логирование результатов запросов • Какая логическая гадость в примере?

 • Ответ – какого … делает логирование? Оно должно быть инкапсулировано • Ответ – какого … делает логирование? Оно должно быть инкапсулировано

Генерация Entity • Строка подключения содержит намного больше информации, чем LINQ. • Сравнить строку Генерация Entity • Строка подключения содержит намного больше информации, чем LINQ. • Сравнить строку подключения LINQ и Entity • Стратегия кодогенерации, удаление tt файлов

Генерация Entity (скриншот) Генерация Entity (скриншот)

CRUD для LINQ • Проблема со значением по умолчанию CRUD для LINQ • Проблема со значением по умолчанию