Здравствуйте, Иван Романюк, Вы писали:
ИР>Добрый день коллеги, дайте пожалуйста ссылки на наиболее развитые
ИР>форумы и конференции посвященные разработке ПО. Языку русский и
ИР>английский.
Обсуждение архитектуры ПО в отрыве от используемых технологий всегда скатывается либо в абстрактные холивары и мерянье моделями коней в вакууме — это в
философию программирования и в
управление проектами, либо в откровенный популизм — это на хабрахабр
Всё, что попадается по делу — это профильные форумы (если на русском — то вы уже здесь

), блоги (опять-таки, хороших блогов "про проблемы вообще" не бывает) и (для вопросов, на которые есть однозначные ответы) — stackoverflow.com.
Уточните область интересов — может, чего и посоветуют.
Здравствуйте, Sinix, Вы писали:
S>Обсуждение архитектуры ПО в отрыве от используемых технологий всегда скатывается либо в абстрактные холивары и мерянье моделями коней в вакууме — это в философию программирования и в управление проектами, либо в откровенный популизм — это на хабрахабр
S>Всё, что попадается по делу — это профильные форумы (если на русском — то вы уже здесь
), блоги (опять-таки, хороших блогов "про проблемы вообще" не бывает) и (для вопросов, на которые есть однозначные ответы) — stackoverflow.com.
S>Уточните область интересов — может, чего и посоветуют.
Спасибо за совет, честно сказать так и подумал в начале, но....
Мне нужно написать на C# программу которая будет по артикулу искать товар
в ряде интернет магазинов и выводить результаты поиска в таблицу. Хочу
обсудить архитектуру проекта.
Здравствуйте, Аноним, Вы писали:
А>Мне нужно написать на C# программу которая будет по артикулу искать товар
А>в ряде интернет магазинов и выводить результаты поиска в таблицу. Хочу
А>обсудить архитектуру проекта.
Как всегда — базовые вопросы:
1. Какие действия нужно выполнять с собранными данными? Просто вывод на экран? Хранение в СУБД? Экспорт? Примитивная аналитика (средняя цена, поиск замены)?
2. Количество разработчиков в команде/их квалификация/время на разработку?
3. Это будет сервис windows, десктоп-приложение, или веб-страница?
По-хорошему эти вопросы вы должны были задать сами себе, ответы — оформить в виде крадкой сводки, этакого summary для проекта. Или (если я угадал) — в качестве первой главы для курсовой
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>Мне нужно написать на C# программу которая будет по артикулу искать товар
А>>в ряде интернет магазинов и выводить результаты поиска в таблицу. Хочу
А>>обсудить архитектуру проекта.
S>Как всегда — базовые вопросы:
S>1. Какие действия нужно выполнять с собранными данными? Просто вывод на экран? Хранение в СУБД? Экспорт? Примитивная аналитика (средняя цена, поиск замены)?
S>2. Количество разработчиков в команде/их квалификация/время на разработку?
S>3. Это будет сервис windows, десктоп-приложение, или веб-страница?
S>По-хорошему эти вопросы вы должны были задать сами себе, ответы — оформить в виде крадкой сводки, этакого summary для проекта. Или (если я угадал) — в качестве первой главы для курсовой
По порядку. На самом деле уже есть готовый проект, который работает (!) и
это не курсач))
Однако проблема в том, что он не очень грамотно написан, на мой взгляд.
Думаю я так по следующим причинам: малейшие изменения в дизайне того или
иного интернет магазина (ИМ) приводят к тому, что приходится вносить изменения
в КОД программы, хотя можно было бы внести изменения в файл (XML например)
который описывает логику работы с тем или иным ИМ. То же касается добавления
новых ИМ, нужно написать для этого отдельный класс в котором реализуется
специфика работы с ИМ, хотя совокупность методов работы для всех ИМ
примерно однотипна (найти таблицу с определенным ИД, или поле ввода
или кнопку и т.д.) Т.е. можно составить словарь действий и в совокупности
с именами HTML-элементов, над которыми действия производится — это будет
представлять сценарий работы с тем или иным ИМ, хранимый в отдельном файле.
Во-вторых код, если его представить в виде какого-нибудь радиотехнического
устройства, выглядит так как если бы над печатной платой, которая задумывалась
изначально понавесили кучу дополнительных проводов и элементов и все
это выглядит довольно запутанным, т.е. так как если слои приложения
разного уровня абстракции довольно сильно перемешаны. Все это приводит к тому,
что классы становятся огромными и по сути выливается в то, что каждый класс
это довольно большая подпрограмма написанная в процедурном стиле. Со всеми
вытекающими минусами.
1. Сейчас просто вывести на экран, в дальнейшем я планирую протоколировать
работу с программой, чтобы можно было отслеживать действия менеджера по работе
с заказом.
2. 1 разработчик (ваш покорный слуга

, около 5 лет я программировал на с++
десктопные приложения под windows, на C# это мой первый проект. Про время на
разработку: меня взяли на постоянную поддержку и доработку проекта, и я хочу
параллельно провести ревизию и переработку его архитектуры. Как таковое
время не ограниченно, просто нужно чтобы он постоянно работал и работа над
архитектурой уходила на второй план когда очередной раз отвалился тот или
иной магазин.
3. Это десктоп-приложение.
Здравствуйте, Иван Романюк, Вы писали:
ИР>Добрый день коллеги, дайте пожалуйста ссылки на наиболее развитые
ИР>форумы и конференции посвященные разработке ПО. Языку русский и
ИР>английский.
Форум по архитектуре на msdn —
http://social.msdn.microsoft.com/Forums/en-US/architecturegeneral/threads
Здравствуйте, Jack The Sparrow, Вы писали:
JTS>По порядку. На самом деле уже есть готовый проект, который работает (!) и
JTS>это не курсач))
Упс
Ну, тогда всё веселее. Вариант а, простой: использовать
http://api.yandex.ru/market/
Вариант б:
Самая проблемная часть у нас техническая: на входе — произвольный html, на выходе — информация о товарах, как минимум — имя товара в магазине, какой-то ID товара (чтобы можно было сопоставлять одинаковые товары из разных магазинов), цена.
Выходит нечто вроде:
0. Получить HTML. В большинстве случаев хватит простого WebClient.Download(), но может всплыть куча проблем типа контента в фреймах/отдельных страницах, динамической подгрузки и прочего. На выходе — 1 файл/поток/строка с html внутри.
1. Распарсить. Преобразование html можно попытаться сделать или через регекспы (изврат тот ещё, но мало ли), или
через xslt. Может, ещё что-то предложат, или придётся добавлять отдельные классы для отдельных сайтов — лучше выносить разбор html в отдельный класс-парсер. На выходе — список объектов-товаров.
2. Поиск похожих товаров — это лучше спрашивать в разделе для алгоритмов. В теории можно разбивать на слова и искать по SOUNDEX/Левенштейну. На практике я этим не занимался и всех подводных камней не знаю. На выходе — всё тот же список, но с заполненными ID товаров.
3. Слияние результатов с данными из других магазинов или результатами предыдущего запроса (если надо).
Очевидно, нужно будет продумать механизм настройки импорта для каждого сайта (имя, адрес, настройки для загрузки, настройки парсера).
Для начала хватит, дальше — нужно смотреть.