Чтобы добавить новую поисковую систему необходимо создать в проекте MultiSearch.Domain
класс с имплементацией интерфейса ISearchEngine
. А затем создать экземпляр этого класса в массиве searches
в классе SearchService
.
ISearchEngine.GetDataAsync
осуществляет получение данных из поисковой системы в формате html.ISearchEngine.ParseData
осуществляет преобразование сырых данных в доменные модели.
Для запуска приложения должен быть установлен LocalDB. Либо, если установлен SQL Server, необходимо изменить
connection string в appsettings.json
.
После получения запроса приложение создаёт потоки в количестве имеющихся поисковых систем и запускает их. Для одноврменной отправки запросов используется барьерная синхронизация. После получения ответа самый быстрый поток сообщает об этом главному потоку. Главный поток преобразует html-данные в доменные модели, сохраняет их в базу данных и отправляет клиенту.
Поиск по базе данных осуществляет поиск подстроки в колонке Title.