#c# #asp.net #vb.net
#c# #asp.net #vb.net
Вопрос:
Эй, ребята, вот уникальная проблема, которую я должен решить: у меня есть программа, которая открывает веб-страницу через объект WebBrowser на c # и выполняет с ним кучу операций. Теперь мне нужно интегрировать эту функциональность в мою собственную веб-страницу. Это означает, что либо мне нужно взять код c # и каким-то образом заставить его работать на самой моей веб-странице (вставить объект WebBrowser, настроить обработчики событий и т.д.), Либо мне нужно каким-то образом заставить мою веб-страницу открыть эту программу на моем сервере, запустить событие для запуска и получать входные данные от него. Для меня очень важно использовать объект WebBrowser (или даже WebKit.Net ) потому что на странице много javascript и т.д., Которые необходимо обработать.
Есть идеи о том, как это осуществить?
Ответ №1:
Я ожидаю, что у вас возникнет проблема с запуском элемента управления Windows Forms внутри процесса, у которого нет Windows message pump. Я не думаю, что это будет работать непосредственно в ASP.NET сайт.
С другой стороны, вы можете поместить элемент управления и код для управления им в приложение Windows Forms, которое затем может содержать службу WCF. The ASP.NET приложение может запросить, чтобы приложение Windows Forms выполняло манипуляции с элементом управления от его имени.
Конечно, вам нужно будет обработать проблемы параллелизма и состояния. Если одновременно поступают два запроса от двух разных пользователей, то вам, вероятно, понадобятся отдельные экземпляры элемента управления WebBrowser для их обработки. Если запрос 2 зависит от того, что произошло во время запроса 1, то у вас возникли проблемы с состоянием, и вам понадобится запрос 2 для использования того же экземпляра WebBrowser, который использовался для запроса 1.
Звучит не очень весело. Вместо этого это звучит как попытка использовать дизайн рабочего стола в веб-приложении, которая обычно завершается неудачей.
Комментарии:
1. я говорю о том, чтобы делать это на стороне сервера, а не на клиентском компьютере, они вообще не должны видеть, что происходит
2. @Rob: пожалуйста, добавьте эту информацию к вашему вопросу. Я отредактировал свой ответ, чтобы учесть это.
3. Мне нравится ваше предложение, и, похоже, мы сталкиваемся с той же дилеммой. Это не кажется эффективной или легкой задачей, но это должно быть каким-то образом выполнено … есть идеи о правильном способе выполнения основной функциональности?
4. @Rob: в некотором роде это так. Проблема в том, что вам нужен работающий браузер, а браузеры — это интерактивные программы. Это означает, что вам нужно запустить, скажем, приложение Windows Forms, в котором размещен элемент управления WebBrowser. К счастью, WCF позволяет запускать службу внутри того же процесса, в котором размещен элемент управления WebBrowser!