Я планирую переписать существующую систему, над частью которой я ранее работал. Я делаю это в качестве обучающего упражнения. Ниже приводится описание старой системы, базовая архитектура новой системы, некоторые передовые методы, которым я хочу следовать, цели, которых я хочу достичь, и мои вопросы.
Позвольте мне объяснить старую систему:
1. База данных SQL Server (не нормализованная)
2. Приложение Palm (для ввода данных в базу данных)
3. Веб-служба 1 ( Приложение Palm отправляет данные для ввода в базу данных)
4. Веб-приложение (для ввода данных в базу данных) - я создал это
5. Веб-служба 2 (Веб-приложение 1 отправляет данные для ввода в базу данных) - Я создал этот
6. Веб-сайт (для прямого доступа к данным CRUD и печати отчетов)
Позвольте мне объяснить мою концепцию архитектуры для новой системы:
1. Решение для веб-приложений с пользовательским интерфейсом - заменяет старый веб-сайт.
2. b> Решение для веб-приложений с пользовательским интерфейсом - заменяет старое веб-приложение и приложение для Palm.
3. Решение для веб-службы (с использованием WCF) - заменяет старую веб-службу 1 и веб-службу 2.
4. Решение для бизнес-объектов - здесь будут размещены бизнес-объекты, вызовы кода в Решение для доступа к данным и вызовы кода в Решение Business Logic.
5. Решение Business Logic - Здесь будут размещены бизнес-правила.
6. Решение для доступа к данным - здесь будет размещен код для получения данных в / из базы данных.
7. Передача данных Объектное решение - используется для передачи информации следующим образом: 7.1. Решения пользовательского интерфейса в / из решения веб-службы.
7.2. Решение веб-службы в / из решения бизнес-объектов.
7.3. Решение бизнес-объекта в / из решения для доступа к данным.
Позвольте мне объяснить свои лучшие практические концепции для новой системы:
1. Модульные тесты для решения веб-службы.
2. Модульные тесты для Решения Business Object.
3. Модульные тесты для Business Logic.
4. Модульные тесты для Решения доступа к данным.
5. Принцип единой ответственности
6. Принцип открытия / закрытия
7. Принцип замещения Лискова
8 . Принцип разделения интерфейса
9. Принцип инверсии зависимостей
Новые цели системы
Я надеюсь, что я смогу сгенерировать чистый код, который будет включать в себя модульные тесты, обернутые вокруг него, с интеграционными тестами, обернутыми вокруг всей системы, при изучении шаблонов проектирования, WCF, TDD, Rhino Mocks , Expression Blend 3, Visual Studio 2010 и TFS 2010. Я также хотел бы использовать эту систему в качестве справочника для изучения новых языков в будущем, таких как Rails.
Вопросы
1. Судя по тому, что я изложил, есть ли у кого-нибудь проблемы с моей архитектурой? Есть ли лучшие идеи?
2. Есть ли определенные передовые методы, которым я должен следовать, но не перечисленные в списке?
3. Есть ли определенные передовые методы, которые я перечислил, которые не следует следить?
Спасибо за уделенное время!