Слайд 2Автор
SharePoint Engineer
Belarus SharePoint User Group Lead.
![Автор SharePoint Engineer Belarus SharePoint User Group Lead.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-1.jpg)
Слайд 4Сдвиг фокуса
«Лучше день потерять, а потом за пять минут долететь» © Гриф
![Сдвиг фокуса «Лучше день потерять, а потом за пять минут долететь» © Гриф](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-3.jpg)
Слайд 5План
Разработка архитектуры
Коммуникация
Внедрение
Контроль
Повторное использование
![План Разработка архитектуры Коммуникация Внедрение Контроль Повторное использование](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-4.jpg)
Слайд 6Да будет свет!
Разработка архитектуры
![Да будет свет! Разработка архитектуры](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-5.jpg)
Слайд 7Разработка архитектуры
Общие принципы
Separation of concerns
Single Responsibility principle
Principle of Least Knowledge
Don’t repeat yourself
![Разработка архитектуры Общие принципы Separation of concerns Single Responsibility principle Principle of](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-6.jpg)
(DRY)
Minimize upfront design
Слайд 8Разработка архитектуры
Положительные особенности SharePoint
Authentication
Authorization
Communication
Deployment
Performance
Data Access API
![Разработка архитектуры Положительные особенности SharePoint Authentication Authorization Communication Deployment Performance Data Access API](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-7.jpg)
Слайд 10Разработка архитектуры
Разделение на слои
Минимум 1 слой (SharePoint Layer)
Максимум N слоев
В среднем –
![Разработка архитектуры Разделение на слои Минимум 1 слой (SharePoint Layer) Максимум N](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-9.jpg)
5
Слайд 121 SharePoint Layer
Web Parts
Features
Receivers
Timer Jobs
Elements Definitions
Workflows*
![1 SharePoint Layer Web Parts Features Receivers Timer Jobs Elements Definitions Workflows*](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-11.jpg)
Слайд 131 SharePoint Layer
“Presentation Layer”
User Controls
Application Pages
Альтернатива – самостоятельный слой
![1 SharePoint Layer “Presentation Layer” User Controls Application Pages Альтернатива – самостоятельный слой](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-12.jpg)
Слайд 141 SharePoint Layer
Он есть всегда
Может состоять из нескольких независимых проектов
Создается c помощью
![1 SharePoint Layer Он есть всегда Может состоять из нескольких независимых проектов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-13.jpg)
VS templates
Содержит единицы развертывания WSP
Слайд 152 Domain Logic Layer
Бизнес-требования, переведенные в код
![2 Domain Logic Layer Бизнес-требования, переведенные в код](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-14.jpg)
Слайд 162 Domain Logic Layer
Создается по мере необходимости
Обычная .NET сборка
Главный субъект модульного тестирования
![2 Domain Logic Layer Создается по мере необходимости Обычная .NET сборка Главный субъект модульного тестирования](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-15.jpg)
Слайд 173 Data Access Layer
Repository
Row Data Gateway
Table Data Gateway
Active Record
Service Locator
![3 Data Access Layer Repository Row Data Gateway Table Data Gateway Active Record Service Locator](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-16.jpg)
Слайд 183 Data Access Layer
Создается по мере необходимости
Обычная .NET сборка
Особенно полезна при работе
![3 Data Access Layer Создается по мере необходимости Обычная .NET сборка Особенно](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-17.jpg)
с разнородными источниками данных
Может включать логику List Throttling
Слайд 194 Domain Entities
SPMetal как основа
Создается сразу
Определения и свойства
Нет методов
Расширена за счет Partial
![4 Domain Entities SPMetal как основа Создается сразу Определения и свойства Нет](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-18.jpg)
Class
Слайд 204 Domain Entities
Вынесена отдельно
Автогенерация
Нет логики
Но
Может стать ядром Domain Logic Layer
Расширить Partial Class
![4 Domain Entities Вынесена отдельно Автогенерация Нет логики Но Может стать ядром](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-19.jpg)
методами
Слайд 215 Common Services Layer
2 типа общих сервисов
Хелперы
Shared Services Applications
![5 Common Services Layer 2 типа общих сервисов Хелперы Shared Services Applications](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-20.jpg)
Слайд 225 Common Services Layer
2 типа общих сервисов
Хелперы
Shared Services Applications (DAL)
![5 Common Services Layer 2 типа общих сервисов Хелперы Shared Services Applications (DAL)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-21.jpg)
Слайд 235 Common Services Layer
Constants
GUIDs
Custom Exceptions
Extension Methods
![5 Common Services Layer Constants GUIDs Custom Exceptions Extension Methods](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-22.jpg)
Слайд 24Архитектуру – в массы
Коммуникация
![Архитектуру – в массы Коммуникация](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-23.jpg)
Слайд 25Коммуникация
Заказчик (business people)
Руководитель проекта (ПМ)
Аналитик
Команда разработчиков
![Коммуникация Заказчик (business people) Руководитель проекта (ПМ) Аналитик Команда разработчиков](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-24.jpg)
Слайд 26Коммуникация
Заказчик (business people)
«продажа» архитектурных решений
Совместно с Business Analyst
Обычно с высоты >10 км
![Коммуникация Заказчик (business people) «продажа» архитектурных решений Совместно с Business Analyst Обычно](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-25.jpg)
над уровнем моря
Диаграммы компонентов + слоев достаточно
Слайды
Слайд 27Коммуникация
Аналитик (business analyst)
Объяснение узких мест (риски)
Четкая постановка альтернатив (или/или)
Диаграмма компонентов
Диаграмма вариантов использования
Диаграмма
![Коммуникация Аналитик (business analyst) Объяснение узких мест (риски) Четкая постановка альтернатив (или/или)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-26.jpg)
активностей
Слайд 28Коммуникация
Команда разработчиков (+ ПМ)
Объяснение основных принципов
Reference Implementation
Architecture Guidance
![Коммуникация Команда разработчиков (+ ПМ) Объяснение основных принципов Reference Implementation Architecture Guidance](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-27.jpg)
Слайд 29Коммуникация
Команда разработчиков (+ ПМ)
Убедиться, что идеи поняты правильно
Убедиться, что идеи приняты и
![Коммуникация Команда разработчиков (+ ПМ) Убедиться, что идеи поняты правильно Убедиться, что](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-28.jpg)
будут исполняться
Учесть обратную связь в Architecture Guidance
Слайд 30Коммуникация
Команда разработчиков (+ ПМ)
Убедиться, что идеи поняты правильно
Убедиться, что идеи приняты и
![Коммуникация Команда разработчиков (+ ПМ) Убедиться, что идеи поняты правильно Убедиться, что](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-29.jpg)
будут исполняться
Учесть обратную связь в Architecture Guidance
Слайд 31Оживление франкенштейна.
Внедрение
![Оживление франкенштейна. Внедрение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-30.jpg)
Слайд 32Внедрение
Architecture Guidance Document
Допущения
Ограничения
Особенности платформы
Основные паттерны
![Внедрение Architecture Guidance Document Допущения Ограничения Особенности платформы Основные паттерны](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-31.jpg)
Слайд 33Внедрение
Deployment Guidance Document
Обычно – глава в Architecture Guidance
Развертывание
Резервное копирование
Восстановление
Upgrade
![Внедрение Deployment Guidance Document Обычно – глава в Architecture Guidance Развертывание Резервное копирование Восстановление Upgrade](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-32.jpg)
Слайд 34Внедрение
Общие рекомендации
Review + update
Reference Implementations
+
![Внедрение Общие рекомендации Review + update Reference Implementations +](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-33.jpg)
Слайд 35Кто не все – того накажем.
Контроль
![Кто не все – того накажем. Контроль](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-34.jpg)
Слайд 36Контроль
Peer Code Review
Architecture Review
![Контроль Peer Code Review Architecture Review](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-35.jpg)
Слайд 37Контроль
Сделать Reviews частью процесса
Проводить их XP-style
Используйте инструменты (MSVS2010U)
Обновляйте проектную документацию
Заводите «технические истории»
Проводите
![Контроль Сделать Reviews частью процесса Проводить их XP-style Используйте инструменты (MSVS2010U) Обновляйте](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-36.jpg)
разбор с командой
Слайд 38Берегите природу.
Повторное использование
![Берегите природу. Повторное использование](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-37.jpg)
Слайд 39Повторное использование
Общий код
Общий компонент
Managed Metadata Service Application
Workflow Activities
![Повторное использование Общий код Общий компонент Managed Metadata Service Application Workflow Activities](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-38.jpg)
Слайд 40Повторное использование
Reference Implementation
Guidance Documents
Patterns
![Повторное использование Reference Implementation Guidance Documents Patterns](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-39.jpg)
Слайд 41А что у вас есть против оборотней?
Заключение
![А что у вас есть против оборотней? Заключение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-40.jpg)
Слайд 42Заключение
Не бывает одинаковых проектов, но бывают очень похожие
![Заключение Не бывает одинаковых проектов, но бывают очень похожие](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-41.jpg)
Слайд 43Заключение
Архитектура – это здорово. Но лучше успешный проект с плохой архитектурой, чем
![Заключение Архитектура – это здорово. Но лучше успешный проект с плохой архитектурой,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388273/slide-42.jpg)
проваленный проект с хорошей.