У меня довольно сложное составное приложение (.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