kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Ali Parr
Ali Parr
Вопрос

Защита будущего большого приложения с пользовательским интерфейсом - MFC с 2008 Feature pack или C# и Winforms?

Моя компания разработала давний продукт, используя MFC в Visual C++ в качестве стандарта дефакто для разработки пользовательского интерфейса. Наша кодовая база содержит МНОГО унаследованного/архаичного кода, который необходимо поддерживать в рабочем состоянии. Некоторые из этих кодов старше меня (первоначально написаны в конце 70-х годов), а некоторые члены нашей команды все еще работают в Visual Studio 6.

Однако, к счастью, внутри компании был сделан вывод, что наш продукт выглядит несколько устаревшим по сравнению с нашими конкурентами, и что нужно что-то делать.

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

В свободное время я уже некоторое время использую C# с Windows Forms и .net framework, и мне это нравится, но я несколько обеспокоен головной болью, вызванной взаимодействием. Хотя эта конкретная ветвь пользовательского интерфейса не будет требовать большого взаимодействия с унаследованной кодовой базой C++, я могу предвидеть, что это станет проблемой в будущем.

Альтернативой является продолжение работы с MFC, но попытка использовать преимущества нового пакета функций, поставляемого с VS2008. Думаю, это самый простой вариант, но я беспокоюсь о долговечности и о том, что не смогу воспользоваться всеми преимуществами .net...

Итак, что же мне выбрать? У нас небольшая команда, поэтому моя рекомендация, скорее всего, будет принята в качестве будущего направления развития - я хочу, чтобы все было правильно.

MFC мертв? C#/Winforms - это путь вперед? Есть ли что-то еще, что я упускаю? Помощь будет очень признательна!

10 2008-08-14T11:26:02+00:00 6
Ryan Fox
Ryan Fox
Редактировал вопрос 17-го августа 2008 в 2:00
Программирование
winforms
user-interface
c#
c++
mfc
Решение / Ответ
Aidan Ryan
Aidan Ryan
14-го августа 2008 в 1:32
2008-08-14T13:32:29+00:00
Дополнительно
Источник
Редактировать
#8414816

I' m разработчик на приложении, у которого есть тонна наследия кодекс MFC, и у нас есть все Ваши те же проблемы. Крупный водитель для нашей стратегии должен был устранить столько риска и неуверенности, сколько мы могли, который означал избегать, чтобы Большие Переписали. Как все мы знаем, TBR терпит неудачу большую часть времени. Таким образом, мы выбрали поэтапный подход, который позволяет нам сохранять модули это won' t измениться в текущем выпуске, сочиняя новые возможности справился, andporting особенности, которые получают улучшения к управляемому.

Вы можете сделать это несколько путей:

  1. Примите содержание WPF согласно своим взглядам MFC (см. < href =" http://www.codeguru.com/cpp/cpp/cpp_managed/interop/article.php/c14589" > here)

  2. Для приложений MFC MDI создайте новую структуру WinForms и примите свои взгляды MFC MDI (см. < href =" http://www.codeproject.com/KB/miscctrl/HostMFC.aspx" > here)

  3. Примите контроль за работой пользователей WinForms в Диалогах MFC и Взглядах (см. < href =" http://msdn.microsoft.com/en-us/library/ahdd1h97.aspx" > here)

Проблема с принятием WPF (выбор 1) состоит в том, что это потребует, чтобы Вы переписали все свои UI сразу, иначе it' ll выглядят довольно шизофреничными.

Второй подход выглядит жизнеспособным, но очень сложным.

Третий подход - тот, который мы выбрали и it' s работа очень хорошо. Это позволяет Вам выборочно освежать области своего приложения, поддерживая полную последовательность и не трогательные вещи, которые являются not' t сломанный.

Visual C++ 2 008 Пакетов Особенности выглядит интересным, я haven' t играемый с ним все же. Кажется, что это могло бы помочь с Вашей проблемой устаревшего взгляда. Если " ribbon" также издал бы неприятный звук для Ваших пользователей, Вы могли посмотреть на сторонний MFC, и/или WinForms управляют продавцами.

Моя полная рекомендация состоит в том, что interop + возрастающее изменение определенно предпочтителен для уборки изменений.


После чтения Вашего продолжения я могу определенно подтвердить, что рост производительности структуры значительно перевешивает инвестиции в изучение его. Никто в нашей команде не использовал C# в начале этого усилия, и теперь все мы предпочитаем его.

Aidan Ryan
Aidan Ryan
Редактировал ответ 25-го февраля 2009 в 10:41
8
0
 Zooba
Zooba
14-го августа 2008 в 11:40
2008-08-14T11:40:53+00:00
Дополнительно
Источник
Редактировать
#8414813

В зависимости от приложения и готовности ваших клиентов установить .NET (не все из них готовы), я бы определенно перешел на WinForms или WPF. Взаимодействие с кодом на C++ значительно упрощается за счет рефакторинга не пользовательского кода в библиотеки классов с использованием C++/CLI (как вы'отметили в своем выборе тегов).

Единственная проблема с WPF заключается в том, что может быть трудно поддерживать текущий внешний вид и стиль. Переход на WinForms может быть осуществлен при сохранении текущего внешнего вида вашего графического интерфейса. WPF использует настолько другую модель, что попытка сохранить текущий макет, вероятно, будет бесполезной и определенно не в духе WPF. WPF также имеет низкую производительность на машинах до Vista, когда запущено более одного процесса WPF.

Я предлагаю выяснить, что используют ваши клиенты. Если большинство перешло на Vista, и ваша команда готова проделать большую работу с графическим интерфейсом, я бы посоветовал отказаться от WinForms и перейти на WPF. В противном случае, безусловно, серьезно рассмотрите WinForms. В любом случае, библиотека классов на C++/CLI - это ответ на ваши проблемы взаимодействия.

2
0
Brian Lyttle
Brian Lyttle
14-го августа 2008 в 12:04
2008-08-14T12:04:56+00:00
Дополнительно
Источник
Редактировать
#8414814

Вы don' t предоставляют много подробной информации о том, что Ваш устаревший кодекс делает или как it' s структурированный. Если у Вас есть определенные исполнительные критерии, Вы могли бы хотеть поддержать часть своей кодовой базы в C ++. You' у ll есть более легкое время, делая interop с Вашим старым кодексом, если он выставлен правильным способом - Вы можете звонить в существующую кодовую базу от C# сегодня? Могло бы стоить думать о проекте разобраться в этой структуре.

На пункте WPF Вы могли утверждать, что WinForms может быть более соответствующим. Перемещение в WinForms - большой шаг для Вас и Вашей команды. Возможно, они могут быть более довольны движением к WinForms? It' s лучше зарегистрированный, больше опыта в рынок, и полезный, если Вы все еще должны поддержать окна 2 000 клиентов.

Вы могли бы интересоваться [Расширяющий Приложения MFC с.NET Структурой] [1]

Что-то еще, чтобы рассмотреть C ++/CLI, но я don' у t есть опыт с ним.

[1]: http://www.amazon.com/Extending-MFC-Applications-NET-Framework/dp/032117352X/ref=sr_1_2? ie=UTF8& s=books& qid=1218715329& sr=1-2

2
0
Ali Parr
Ali Parr
14-го августа 2008 в 1:30
2008-08-14T13:30:47+00:00
Дополнительно
Источник
Редактировать
#8414815

Поблагодарите всех любезно за свои ответы, it' s заверение, чтобы видеть, что обычно согласие следует за моим ходом мыслей. Я нахожусь в удачной ситуации, что наше программное обеспечение также работает на нашем собственном специальном оборудовании (для промышленности вещания) - таким образом, выбор OS действительно наш и навязан нашим клиентам. В настоящее время we' ре, управляющее XP/2000, но я вижу желание скоро переместиться до Vista.

Однако мы также должны обеспечить очень точный контроль над работой GPU, которую я предполагаю, автоматически исключает ускорение аппаратных средств и WPF? Я должен был высказать то мнение на своем оригинальном посту - извините. Возможно, it' s возможный использовать два GPUs..., но that' s другой вопрос в целом...

Команда doesn' у t есть любой значительный опыт C# и I' m никакой эксперт самостоятельно, но я думаю, что полные долгосрочные преимущества управляемой окружающей среды, вероятно, перевешивают время it' ll берут, чтобы набрать скорость.

Похож на Winforms, и у C# есть он на данный момент.

2
0
Matt Hamilton
Matt Hamilton
14-го августа 2008 в 11:28
2008-08-14T11:28:23+00:00
Дополнительно
Источник
Редактировать
#8414811

Если бы вы рассматривали возможность перехода на C# и, следовательно, на .NET, я бы рассмотрел Windows Presentation Foundation, а не WinForms. WPF - это будущее интеллектуальных клиентов в .NET, а навыки, которые вы приобретете, вы сможете использовать повторно, если захотите создавать браузерные приложения Silverlight.

1
0
 JamesSugrue
JamesSugrue
14-го августа 2008 в 11:36
2008-08-14T11:36:47+00:00
Дополнительно
Источник
Редактировать
#8414812

Я согласен с мнением о WPF. Пользовательский интерфейс на основе Tag/XML кажется более переносимым, чем WinForms.

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

Может быть, возможен какой-то поэтапный подход? Я довольно часто занимался перекодировкой старых приложений на C#, и это всегда занимает гораздо больше времени, чем вы предполагаете, особенно если вы сохраняете некоторый старый код или ваша команда не настолько хорошо знакома с C#.

0
0
Похожие сообщества 15
pro.cxx
pro.cxx
5 992 пользователей
C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. No Ads, offtop, flood 2. Полные правила тут https://t.me/ProCxx/259155 Объявления о вакансиях,эвентах - в лс @AlexFails или @MasterZiV
Открыть telegram
supapro.cxx
supapro.cxx
5 026 пользователей
Чат для тех, кто немного знает C++, простые вопросы по C++, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат-флудилка — @fludpac /прогерские вопросы – @pro_prog 🚫flood, pron, spam; ✅УВАЖАЙТЕ ДРУГ ДРУГА!
Открыть telegram
Microsoft Stack Jobs
Microsoft Stack Jobs
2 414 пользователей
Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks
Открыть telegram
С#
С#
2 330 пользователей
Стараемся не флудить. Пишем по делу. Правила: https://t.me/professorweb/430450 Для флуда @svoboda_obsh
Открыть telegram
CODE BLOG / C#
CODE BLOG / C#
1 772 пользователей
Чат для .NET разработчиков и C# программистов. По всем вопросам: @shwanoff Youtube-канал: https://youtube.com/codeblog Основной канал: @codeblog Вконтакте: https://vk.com/codeblog Правила: https://t.me/codeblog_csharp/246972 Вакансии по тегу #work
Открыть telegram
var chat = new Chat();
var chat = new Chat();
1 428 пользователей
Обсуждение вопросов по .NET Правила чата – https://blog.devdigest.today/chat-rules Чат для флуда – https://t.me/+zwxI91RGG6s2YzAy
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 5 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
ID
KO
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией