Встроенный веб-сервер и графический интерфейс для приложений.NET

Я ищу фреймворк, который позволяет мне управлять моим приложением через веб-интерфейс (используя встроенный веб-сервер) вместо winforms.

Примерно так: http://www.webtoolkit.eu/wt но потом для.NET

В моем коде я должен иметь возможность создавать экземпляры классов (например, кнопок, форм и т. Д.), А когда пользователь просматривает данный порт, приложение должно отображать его как javascript/ajax и т. Д., Предпочтительно, когда нажимаются кнопки, уведомление в мой код должен быть назван.

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

Благодарю.


Обновить:

Решения, подобные Кассини, не отвечают всем требованиям. Поскольку веб-браузер встроен в мое приложение, нет необходимости в сценариях на стороне сервера ASP.NET. Я предпочел бы иметь структуру, вызывать функции внутри моего приложения, когда что-то происходит на странице. Например, onButtonClicked().

9 ответов

Решение

Как насчет встраивания Cassinni и использования ASP.NET?

Вы можете использовать класс System.Net.HttpListener в качестве встроенного веб-сервера. HttpListener сделает низкоуровневые вещи для вас, но вам придется написать код, который возвращает Html/javascript/images самостоятельно.

Я попробовал это просто для удовольствия, встроив Firefox с помощью GeckoFx против веб-сервера, встроенного в само приложение. Казалось, что это хорошо работает, но мой тест был очень простым и ограниченным.

Вы можете разместить среду выполнения ASP.NET в своем собственном приложении и использовать любую среду веб-интерфейса, например LiveUI, или что-то подобное. Посмотрите, как это сделать здесь.

Если бы вы могли использовать ASP.NET (используя сервер разработки или cassini), тогда ваша задача была бы проще. Я настоятельно рекомендую этот подход. В этом случае вы можете использовать liveui, componentart или teleric. liveui предоставляет основанную на Extjs инфраструктуру для реализации трехуровневых веб-приложений. componentart и teleric предоставляют хорошие элементы управления ASP.net.

Тогда как webui, вероятно, может работать как httpHandler без инфраструктуры ASP.net. Но я бы не рекомендовал использовать webui, потому что 1 потенциальная проблема с производительностью 2 сложная и не гибкая модель программирования.

Вы ограничены тем, какие рамки может поддерживать ваше приложение? Если вы можете использовать.NET 3.0+, Windows Presentation Foundation можно использовать как для веб-приложений (через xbapp или silverlight), так и для традиционных приложений Windows.

Что касается связи между приложениями, то здесь Windows Communication Foundation (WCF) действительно сияет.

Просто для пояснения: вы можете использовать Casini для размещения вашего веб-приложения и использовать WCF для связи между ним и вашим приложением или использовать xaml для разметки вашего приложения и представления его как веб-приложения и обычного приложения Windows с одинаковым пользовательским интерфейсом.

Я сделал очень давно проект.NET 2.0, который в основном имел элемент управления Webbrowser.
Я бы передавал элемент управления WebBrowser с помощью html через его свойства Document и прослушивал событие навигации, чтобы извлечь HTML-код из моего ресурса (или мгновенно создать его) и снова передать его в элемент управления WebBrowser.

Теперь самое интересное начинается с свойства ObjectForScripting. Это позволяет вашей html-странице общаться с объектом.NET через Javascript, например: window.external.SomeNetFunction(bla),
Не забудьте добавить ComVisible атрибут класса, который используется в ObjectForScripting,

Я надеюсь, что это то, что вы ищете. В этом решении у вас есть веб-страница, которая может перемещаться, а также с помощью javascript может общаться с вашим приложением. (вот так вы можете приблизиться к.NET-версии AIR...)

Если вы хотите автоматически преобразовать работающий код WinForms в HTML, вы уже в глубокой воде. Я сделал что-то похожее с Visual WebGui, но это требует изменения вашего кода и в основном сгенерирует приложение ASP.NET для вас - для его запуска потребуется настоящий веб-сервер.

Я вижу, что вам не нравится опция Cassini - если вы также ожидаете, что это будет работать без веб-сервера, то я думаю, что быстрый ответ "нет пути".

Если у вас относительно простой интерфейс, я думаю, что вам лучше всего динамически генерировать HTML-код, либо из существующих форм, либо с нуля, и использовать System.Net.HttpListener.

У DevExpress есть продукт, который делает то, что вам нужно. Вы должны раскошелиться на это, хотя...

http://www.devexpress.com/Products/NET/Application_Framework/

Я бы предложил вместо этого пойти по пути Linux и опираться на что-то вроде встроенного httpd, boa или аналогичного, чтобы уменьшить размер. Запуск Windows не рекомендуется во встроенных системах, слишком много вздутия и слишком много дыр в безопасности. Лучше пойти с Linux или RTOS.

Другие вопросы по тегам