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

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

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

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

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

Спасибо.

<ч />

Обновление:

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

Ответы [ 9 ]

3 голосов
/ 22 мая 2009

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

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

2 голосов
/ 29 мая 2009

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

2 голосов
/ 22 мая 2009

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

1 голос
/ 31 мая 2009

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

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

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

1 голос
/ 29 мая 2009

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

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

0 голосов
/ 01 июня 2009

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

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

0 голосов
/ 25 мая 2009

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

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

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

0 голосов
/ 25 мая 2009

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

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

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

0 голосов
/ 22 мая 2009

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

...