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

StackOverflow https://stackoverflow.com/questions/884343

Вопрос

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

Что-то вроде этого: http://www.webtoolkit.eu/wt но тогда для .NET

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

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

Спасибо.


Обновлять:

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

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

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

Я вижу, вам не нравится вариант Кассини, если вы тоже ожидаете, что он сработает. без веб-сервер, то я думаю, что быстрый ответ — «ни в коем случае».

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top