@random_user

Правильно ли я спланировал архитектуру своего проекта?

Доброго времени суток!
Есть проект (c#, visual studio 2010), который разбирает XML (>500Гб) и кладет его в базу (ms sql 2005).
Прошу Вас, уважаемое сообщество, высказать свое мнение об архитектуре:
Определены следующие классы(псевдокод):
1. Статический класс Storage;
Этот класс предназначен для хранения объектов класса Packet. По сути это очередь. Определены методы добавления и извлечения объектов.
2. Класс Reader;
Класс который производит последовательное чтение XML. Создает объект класса Packet и добавляет в пакет прочтенные элементы, до тех пор пока объект Packet не заполнится. Как только пакет закончился, он добавляется в очередь Storage для обработки.
3. Класс Writer;
Берет элемент из очереди Storage (напомню, в очередь добавляются полые пакеты) . Элемент- это пакет. Далее данные из пакета добавляются в БД.
4. Класс DataBase;
Класс для работы с базой данных(подключение, методы для для добавления и изменения данных)
5. Класс Packet.
Пакет- это коллекция элементов из XML. Есть методы добавления данных в пакет.
Как это все работает - при старте приложения открывается соединение с БД.
Создается объект класса Reader и в отдельном потоке начинается чтение xml файла, формирование пакетов и добавление их в очередь. В основном потоке создается класс Writer, в нем есть метод Write() который берет потоки из пула потоков, каждый поток из пула берет себе по одному пакету из очереди(Storage) и отправляет данные из пакет в БД. Все это работает пока не кончится xml и очередь не станет пустой.
Выскажите свое мнение и что стоит улучшить/переделать.
Спасибо за внимание!
  • Вопрос задан
  • 2966 просмотров
Пригласить эксперта
Ответы на вопрос 1
xakpc
@xakpc
full-stack .net developer, CEO Leecero.com
Мой вам совет, пишите через TDD. Тогда такие вопросы возникать не будут, оптимальную, минимальную и поддерживаемую архитектуру построите естественным образом
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы