Azure WebJob-Project — доступ к артефактам родительского проекта

Я новичок в Azure WebJobs. Для мобильного приложения нам нужны некоторые веб-задания, которые можно запускать по расписанию. Мой вопрос касается «Проектов-архитектуры», когда речь идет о веб-заданиях.

Насколько я знаю, для каждого WebJob создается новый проект. Я делаю это, щелкнув правой кнопкой мыши основной проект -> добавить новый проект лазурного веб-задания. Но как эти проекты "сочетаются". Должна быть какая-то ссылка на родительский проект, которую я не могу найти. Мне нужно получить доступ к объектам из основного проекта внутри WebJob. Как это сделать?

Кроме того, я не уверен, следует ли реализовать доступ Logic + Data непосредственно внутри WebJob или позволить WebJob вместо этого вызывать другой контроллер для обработки этого?

Документация по этому поводу ужасна, любая помощь будет здоровой.


comment
Могу я спросить, чего вы пытаетесь достичь с помощью веб-работы? - это важно, потому что я не понимаю, зачем вам нужен доступ к моделям вашего веб-проекта здесь, или может быть альтернатива, которую я могу предложить. И чтобы ответить на ваш вопрос о том, как веб-приложение / мобильное приложение узнает о существовании веб-задания — оно знает, потому что, когда вы развертываете свое веб-задание, вы делаете это, получая доступ к своему веб-приложению —> настройки —> веб-задания —> загрузите свой исполняемые файлы здесь - это то, как я использовал портал.   -  person Jaya    schedule 29.03.2016
comment
Я хочу запрашивать данные из другого сервиса каждый день. Эти данные должны быть сохранены в базе данных sql. Сначала мы используем код Entity Framework. Я думаю, что нет способа сослаться на проект, содержащий объекты?   -  person DominikP    schedule 31.03.2016
comment
Мы также задались вопросом, является ли хорошей практикой сохранение сущностей в проекте мобильного приложения? Дополнительный проект Entity имел бы смысл, поскольку нам не нужно было бы ссылаться на то, что нам не нужно.   -  person DominikP    schedule 31.03.2016
comment
Да, иметь проект инфраструктуры (ваши модели домена и код репозитория EF) отдельно имеет смысл. Итак, если я правильно понимаю, ваше веб-задание должно запрашивать некоторые данные из другого источника и использовать EF для их вставки в вашу базу данных - надеюсь, я правильно понял это. Для этого я бы сказал, что используйте конечную точку вашего приложения (или создайте новую) для вставки данных - таким образом вам не нужно снова добавлять эти ссылки. Или, если вам разрешено, создайте это веб-задание как отдельный автономный проект и разрешите ему доступ к вашей базе данных с помощью старого простого ADO.net для передачи данных (однако это не повторное использование того, что у вас уже есть)   -  person Jaya    schedule 31.03.2016


Ответы (3)


На самом деле они не "сочетаются". В свойствах веб-приложения (webjobs-list.json) есть ссылка, которая указывает VS опубликовать веб-задание при публикации веб-приложения. Если вам нужно получить доступ к моделям сущностей в веб-задании, вам нужно добавить ссылку на другие ваши проекты, как и в любом другом проекте (добавьте ссылку на проект, а затем добавьте оператор использования в веб-задание). Ссылка будет скомпилирована в файл webjob.

person Bryan Lewis    schedule 29.03.2016

Могу я спросить, чего вы пытаетесь достичь с помощью веб-работы? это поможет определить, почему необходим доступ к моделям вашего приложения MVC.

Одним из предложений было бы отправить объект из приложения MVC в очередь Azure, а затем получить к нему доступ через вашу работу. Настройте его таким образом, чтобы идентифицировать новые сообщения в очереди. (триггер). - не уверен, поможет ли это, потому что я не уверен, насколько быстро выполняется веб-задание и с какими другими ограничениями вы работаете.

person Jaya    schedule 29.03.2016

Когда вы добавляете новый или существующий проект веб-задания в свое решение, Visual Studio позаботится об этом за вас. Это не что-то новое, как если бы вы добавляли проект службы консоли/Windows в свое веб-приложение/MVC. Если вам нужно, чтобы эти проекты взаимодействовали, вам нужно добавить ссылки на другие ваши проекты, как и в любой другой проект, который, в свою очередь, будет скомпилирован.

введите здесь описание изображения

Если вам нужно узнать больше и проверить некоторые примеры, это руководство https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-get-started/ показывает, как написать код для простого мульти- приложение уровня ASP.NET MVC 5, использующее пакет SDK для веб-заданий. Возможно, это может дать вам некоторую информацию о том, как спроектировать приложение.

person Rami Sarieddine    schedule 29.03.2016