Эффективная работа с HTML на встроенном веб-сервере внутри .net / wpf-приложения - PullRequest
0 голосов
/ 30 августа 2010

У меня довольно сложное составное приложение (.NET / WPF / Prism). Он работает на каких-то встроенных устройствах (с полным окном 7), назовем их «киосками». Мне нужно разрешить дистанционное управление для приложения. то есть он должен иметь встроенный веб-сервер, который будет предоставлять некоторую информацию через http / html для удаленного управления (проверки состояния, журналов и т. д.).

Так что в модуле какого-то приложения мне нужно написать HTML, чтобы вернуть его. Это кажется довольно утомительным. Похоже:

using (Stream ostr = ...)
using (TextWriter tw = new StreamWriter(ostr))
{
    tw.WriteLine("<html>");
    tw.WriteLine("<head>");
    tw.WriteLine("<title>Web Console</title>");
    tw.WriteLine("<meta http-equiv=\"refresh\" content=\"2\" />");
}

Я хочу упростить процесс создания HTML. Поэтому я ищу какую-то библиотеку .NET HTML DOM. И не могу найти достойного. Только один я нашел - HTML Agility Pack . Это выглядит круто, но я считаю, что он нацелен на несколько другой вариант использования (загрузите немного HTML и выполните поиск с помощью xpath / linq). Но мне нужно просто составить HTML, а не анализировать, не запрашивать. Я ожидаю от API библиотеки, похожего на System.Xml.Linq.

Примерно так:

HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.Head.AddScript(ScriptLanguages.JavaScript, "http://localhost/scripts/jquery.js");
htmlDoc.Body.Elements(
  new HtmlDiv {
    Style="align:center", 
    Content = new []{new TextBlock("Hi")} }, 
  new HtmlDiv (
    new HtmlLabel(text: "StartDate", nameFor: "dtStartDate"),
    new HtmlTextBox(clintName: "dtStartDate", style: "width:100px")
  )
);

Другая возможность, которая приходит мне в голову, - это использовать какой-то шаблонизатор. Но я понятия не имею, какой из них будет работать примерно так же со встроенным веб-сервером.

Я открыт для ваших мыслей, заранее спасибо.

p.s. Если вам интересно "Встроенный веб-сервер" это http://www.codeproject.com/KB/IP/CSharpEmbeddedHTTPServer.aspx

1 Ответ

1 голос
/ 30 августа 2010

Я не знаю, как вы, но HTML кажется проще писать, читать и понимать. Какую выгоду вы ожидаете, генерируя html способом, который вы предложили?

Что касается шаблонизатора, вы можете легко создать его самостоятельно. Создайте HTML-страницу (одну или несколько) с нужной вам темой. Добавьте теги, такие как %% title %% %% content %%, загрузите файл, сделайте замену регулярного выражения, а затем предоставьте HTML Завершите его в классе, и вы получите очень простое, гибкое и простое в обслуживании решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...