Действительно ли выполнимо преобразовать основанное на рабочем столе приложение C++ MFC в веб-приложение

По умолчанию он просматривает только открытые свойства, а не поля.

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

blockquote>

https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-2.2

public class MyModel
{
    public List myList = new List();
    public List Types = new List();
    public string SelectedType;
}

Я заставил его работать, изменив вашу модель с верхней на нижнюю.

public class MyModel
{
    public List myList {get;set;}
    public List Types{get;set;}
    public string SelectedType {get;set;}
}

5
задан SmacL 11 January 2009 в 14:07
поделиться

5 ответов

Короткий ответ - то, что это выполнимо, не используйте Java, и что это будет значительный объем работы.

Много лет назад (во время IE5) меня попросил клиент ответить на подобный вопрос этому. Рассматриваемое приложение было хорошо структурированными тремя настольными приложениями уровня.

Результат исследования был то, что это возможно. Рассмотренные возможности были Java и CGI, с помощью или CORBA или COM/DCOM. Создание апплета Java рассмотрели, но исключили, потому что это не будет слишком отличаться от настольной версии C++.

Проявленный подход должен был взять уровень бэкенда и превратить это в серверное приложение, находящееся позади cgi слоя. UI был в основном переписан с помощью то, что мы теперь знаем как Ajax, т.е. JavaScript и HTML. UI был разделен между элементами браузера и элементами сервера.

Я действительно полагал, что запись инструмента преобразовала документы, представления и диалоговые окна и обертывание их в совместимый формат, однако после большого анализа стало очевидно, что не было действительно выполнимо сделать это, потому что MFC на самом деле вполне тесно связан с API Win32 и им. В зависимости от суммы диалоговых окон может стоить записать что-то для преобразования их.

Я действительно находил, что даже в хорошо структурированной системе, которую немного кода, который должен был быть в бэкенде, пропустило во фронтэнд.

Если бы я должен был сделать то же самое теперь, существуют некоторые превосходные библиотеки JavaScript, которые помогли бы, но я все еще проявлю тот же подход выполнения как можно больше в браузере с помощью Ajax, с возможно чем-то как qooxdoo или YUI. Я также, вероятно, переместил бы взгляд на использование XUL и перемещение, по крайней мере, большинство диалоговых окон в бэкенд.

Единственной вещью, которая касается меня из Вашего списка требований, является 3-я векторная графика, хотя там, возможно, некоторый пробег в этой игрушке JS или JS3D.

Это - только краткий обзор, поскольку я стараюсь не писать диссертацию.

5
ответ дан 18 December 2019 в 13:20
поделиться

Прежде, чем рассмотреть для преобразования приложения MFC в веб-приложение я предлагаю, чтобы Вы считали "Обход Странной Долины Пользовательского интерфейса" от Jeff Atwood.

Если Вы рассматриваете или активно создаете приложения Ajax/RIA, необходимо рассмотреть Uncanny-Valley дизайна пользовательского интерфейса. При создании "рабочего стола в веб-браузере" - приложение стиля Вы нарушаете незаписанные ожидания пользователей того, как веб-приложение должно посмотреть и вести себя. Этот выбор может оказать значительное негативное влияние на обучаемость, приятность использования и принятия.

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

4
ответ дан 18 December 2019 в 13:20
поделиться

Это был бы существенный объем работы, но Вы уже сделали хороший дизайн, таким образом, Вы уже являетесь промежуточными там!

Я запустил бы путем перемещения UI MFC в отдельный исполняемый файл и использования его для управления кодом бэкенда. После того как Вы сделали это (который должен быть относительно легким, поскольку Вы просто повторно упаковываете существующий код), затем, Вы получите намного лучшую идею того, сможет ли он обработать несколько пользователей, соединяющихся с единственным сервером бэкэнда.

После того как Вам согласовали это, Вы видите все области, где необходимо реализовать возможность соединения к бэкенду, и можно начать переписывать UI на любом языке или платформе, которую Вы любите.

Для веб-интерфейса я написал бы код веб-сервера, который взаимодействовал с Вашим сервером бэкэнда. Таким образом, Вы получаете намного более легкую связь, и у Вас есть намного меньше проблем безопасности и возможности соединения для волнения о. Я всегда думаю, что webserver+browser является уровнем представления в n-tier приложении.

Что касается веб-технологий, Вы могли использовать гибкий провод, activex, Silverlight или возможный jquery/jsext для получения богатого содержания в браузер.

1
ответ дан 18 December 2019 в 13:20
поделиться

Да, мы сделали это с большим (Borland) C ++ application, которая могла лучше всего описанный как наличие 'большого комка грязи' архитектура.

У Вас действительно есть некоторые интересные проблемы вперед, но мы сделали очень 'паутинный' и привлекательный фронтенд (прототип находится в ASP.NET, но мог быть чем-либо включая Java), который в основном просто запускает события в настольное приложение, работающее на сервере, затем отображает получающуюся графику, таблицы и текст. Мы гибки о том, как что-то как графики отображено - как.PNG, объекты флэш-памяти или.SVG в зависимости от браузера

Работы удивительно хорошо и только заняли несколько месяцев программиста для реализации, после того как нам разобрались в модели (дизайн был проблемой).

В данный момент мы только реализовали полезное подмножество всего настольного приложения, но в то время как мы продолжаем, бэкенд отделится более чисто от фронтэнда (и уменьшит в размере). Если у Вас есть некоторое хорошее разделение между GUI и бэкендом уже затем, это - большое преимущество.

Мы также посмотрели на в основном автоматическое производство веб-интерфейса из приложения, но решили в стадии проектирования, это собиралось посмотреть совсем как приложение Windows32, работающее в окне браузера....

1
ответ дан 18 December 2019 в 13:20
поделиться

Это было несколько лет назад, так как я играл вокруг с этим, но я действительно однажды пытался брать небольшое приложение и скомпилировать его как активное X компонентов, которые могли затем легко использоваться в веб-странице. (Это приложение было основано на форме, созданной с Разработчиком Borland C++, таким образом, это было довольно тривиально для создания этого активным X компонентов. Я не мог судить, как трудный это должно будет перенести Ваше приложение D/V MFC как Активное X компонентов).

Было необходимо зарегистрировать активное X компонентов на пользовательской машине (также довольно тривиальный, но необходимо было повторно зарегистрировать каждую новую версию компонента - я чувствовал, что заполнял реестр), и в наше время Internet Explorer подбрасывает предупреждения с веб-страницами с помощью activeX, таким образом, это потребовало бы пользователя, понижающего уровень безопасности в Т.Е. помешать ему жаловаться.

1
ответ дан 18 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: