В шаблоне с шаблоном MVC, где наиболее логично будет отображаться модуль скрининга экрана? В модели или контроллере? Или это полностью вне этой картины?В структуре с шаблоном MVC, где должен быть размещен экран-очищающий модуль?
ответ
Вы можете назвать это так, как если бы вы создали модель, чтобы вести себя как одна. Тогда он может быть легко использован в контроллере:
def update
@company = Company.find(params[:id])
@scraper = Scraper.find(:page => some_url, :method => :rip)
@scraper.product_details.each do |params|
@company.products.create(params)
end
end
Это всегда удобно, когда вы разрабатываете выходной формат вашего скребка, чтобы быть совместимым с каким-либо другим объектом, например, как отображение столбцов вашего постоянного хранения.
Это часто удобно иметь «похожие на модель» объекты. В этом случае вы можете думать о скребке как интерфейсе к другому веб-сайту, а не к базе данных, и в этом отношении он не похож на ActiveResource. Существует не правило, что модель должна быть построена на основе ActiveRecord.
В некотором смысле, экранный скребок является пользователем приложения - я думаю, что это будет часть вне MVC, которая взаимодействует с контроллером, точно так же, как веб-страница отправляет информацию контроллеру. Это упростит перенос веб-страницы, если интерфейс изменится.
Я предполагаю, что скребок используется только для сбора данных.
Если данные очищены и сохранены, этот процесс не просто попадает ни в MV, ни в C. Вы можете запустить этот процесс утилизации как задание cron с интервалами, которые вы определяете, хранить данные и затем определять модели для доступа к данным ,
Я бы не рекомендовал вызывать процесс утилизации каждый раз, когда контроллер запрашивает модель, если только вы не кешируете запрос на скрап.
РЕДАКТИРОВАТЬ:
хрон может быть контроллером, но не публично вызываемым.
Это зависит от того, как вы планируете использовать скребок. Если у вас появится пользовательский интерфейс, на который вы нажимаете кнопку, чтобы очистить экран, то он будет находиться во всех трех (M, V и C). Если это будет фоновый процесс (как упоминалось ранее), он должен быть в M и C.
Какова роль экранного скребка в вашем веб-приложении? – anshul
Роль скребка - сбор данных. –