Подавайте готовый автономный веб-контент с помощью элемента управления веб-браузера.

Я разрабатываю замену С# ​​для устаревшего приложения VB для моей компании. Внешний интерфейс — это, по сути, элемент управления веб-браузера внутри формы Windows, обслуживающий автономный контент, который иногда изменяется для включения данных пользователя. Поскольку в устаревшем приложении есть 100 или более веб-файлов, мы собираемся повторно использовать веб-интерфейс из старого приложения с новой оболочкой C# вокруг него, изменяя их по мере необходимости.

Мои вопросы о том, как хранить и доставлять веб-контент.

  • Имеет ли смысл копировать веб-файлы во временную папку и указывать в элементе управления веб-браузером адрес file:// временной папки?
  • Есть ли какая-то готовая серверная структура для работы в автономном режиме, которая имеет больше смысла, чем копирование файлов во временную папку?
  • У меня есть исходные веб-файлы в моем проекте в качестве ресурсов, но я не уверен, подходит ли это для моего использования. Это?
  • Устаревшая реализация VB изменяет веб-файлы для вставки данных с использованием методов Substring; он ищет магические строки и заменяет их соответствующими данными. Этот код довольно плохо пахнет, есть ли лучшая, более нативная стратегия внедрения данных, на которую мне следует обратить внимание?

Немного фона:

  • Данные представлены с использованием HTML\CSS\JS, а также иногда XSL.
  • Браузер предоставляет содержимое, доступное во время компиляции.
  • Мне придется обрабатывать некоторые события, используя код С#, когда пользователи нажимают кнопки на странице.
  • Я свободен выбирать любой подход, необходимый для реализации приложения.

person Mark F Guerra    schedule 09.12.2013    source источник


Ответы (1)


Хостинг

Я бы, вероятно, избегал использования временного местоположения для веб-контента, это кажется немного грубым. Если между вашими html-страницами нет внутренней связи и все css/js встроены в один файл, может быть проще просто использовать WebBrowser.DocumentText.

Другой вариант, который я успешно использовал в качестве облегченного встроенного веб-сервера, — это http://logv.ws/logv-http/. для настройки синтаксиса. Если вы хотите настроить что-либо, кроме localhost, для этого потребуются права администратора, но похоже, что все будет локально.

var server = new Server("localhost", 13337);
server.Get("http://localhost:13337" ,(req, res) => res.Write("Hello World!"));
server.Start();

Шаблоны

Я думаю, что замены строк не обязательно плохи, зависит от того, сколько их и насколько они сложны, но для простой замены поиска не должно быть слишком сложно управлять. Если есть много замен, их упаковка в RegEx должна повысить производительность.

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

person David Ewen    schedule 10.12.2013