Требуется закончить сложный проект на C# NET4 WPF
Проект состоит из 3-х главных составляющих, взаимодействующих друг с другом.
1) Сервер (Server)
Консольное приложение.
Занимается авторизацией (эмулирует запросы реального пользователя) на порталах.
Сервер является головой проекта, он отвечает за авторизированных пользователей и отдает их данные когда запрашивает приложение клиент.
На данный момент в системе уже выстроен алгоритм с минимальным количеством запросов и благоприятным для системы при котором не происходит блокирование аккаунтов, но могут возникать проблемы когда на порталах происходят изменения, это могут быть изменения в HTML структуре (что влекут за собой проблемы с фильтрацией на клиенте) эти изменения не столь страшны но требуют оперативного исправления. Глобальные изменения логики маловероятны но вероятность всегда есть, такие изменения требуют сверх оперативного вмешательства.
2) Клиент (Launcher)
Разработан на платформе WPF.
В зависимости от конфигурационного файла строит свой интерфейс.
Так же клиент получает информацию по запросам от сервера и уведомителя и в зависимости от полученных данных в браузерах IE или GeckoFx (Mozilla) отображает информацию, вообщем является просто средством выбора и отображения веб порталов. Так же при необходимости фильтрует данные HTML страницы.
3) Уведомитель (PushNotifier)
Web сервис на SignalR.
Большой функциональностью не обладает но является инструментом для оповещения о том что нужно обновить приложение клиент если присутствует обновление.
Оповещает всех подключенных клиентов и тех кто подключился позже.
В свою очередь приложение клиент принимает оповещение и в принудительном порядке начинает процесс обновления.
Требования:
Твердое знание платформы .NET и языка C#. Умение работать с программным фреймвором WCF и WPF, а так же перечисленными библиотеками. (HttpClient, Microsoft Async, SignalR, Json.NET).
ТЗ.
1) Просмотреть критические места. В потоки, события добавить try..catch.
Ошибки логировать в базу с максимально подробной информацией. (Message, StackTrace и другое)
(1 день*8 часов)
2) Проект надо разбать на 3 независимые "службы", запускаемые из под системных привелегий. Все они они должны запускаться как служба.
(5 дней*8 часов)
3) Система автообновления. - Предложите свою идею реализации пожалуйста!!!!!!!!!!!!!!!
Реализовать циклический таймер раз в N-минут и проверять версию на стороне сервера чтобы
знать необходимо ли обновлять лаунчер. (реализация есть в старом проекте)
(5 дней*8 часов)
4) При нажатии на кнопку закрыть необходимо сворачивать (реализация есть в старом проекте)
(Доработать)
5) Объединить RelayServer и RequestHandlers и удалить соотвественно RequestHandlers.
Слишком много проектов, надо от них избавляться.
Важно: С классом PartslinkPortal быть предельно аккуратно, алгоритм на текущей момент выстроен на минимум количество запросов на сайт и блокирования не происходит.
(5 дней*8 часов)
6) RelayServer. Нужен конкретный рефакторинг.
Там много методов которые принимают явные ссылки, хотя это можно распределить по константам либо еще куда-то в ConfigurationManager и сделать все динамичнее.
Вообщем, нужен грамотный рефакторинг.
(2 дня*8 часов)
7) Каждый каталог который использует логин и пароль для авторизации все данные необходимо хранить в базе и получать соответственно из. Проверить наследование параметров клиентами после изменения в конфигуратор-менеджере.
(2 дня*8 часов)
8) Сейчас генерация кнопок в интерфейсе происходит в ListBox на WrapPanel.
(3 дня*8 часов)
9) Сделать максимально быстрой скорость запуска лаунчера. Уменьшить использование оперативной памяти.
Тестирование и отладка недоработок всех моментов 8-9 дней максимум.
Итого 31 день.