Подтвердить что ты не робот

Вы рекомендуете Native С++ смену С++\CLI?

Я работал в качестве программиста на С++ в течение последних нескольких лет. Теперь мы начинаем новый проект с нуля. Итак, что вы думаете о переходе на С++\CLI за счет потери независимого от платформы кода. Существуют ли какие-либо особые преимущества, которые можно получить, перейдя на С++\CLI?

4b9b3361

Ответ 1

Я бы рекомендовал следующее, основанное на моем опыте работы с С++, С# и .NET:

  • Если вы хотите использовать способ .NET, используйте С#.
  • Если вы не хотите .NET, используйте традиционный С++.
  • Если вам нужно навести традиционный С++ на .NET-код, используйте С++/CLI. Работает как с .NET, вызывающим классы С++, так и с С++-вызовами классов .NET.

Я не вижу смысла просто переходить на С++/CLI, если вам это не нужно.

Ответ 2

Некоторые вопросы, которые необходимо рассмотреть перед переключением:

[1] Ты в порядке, придерживаешься Windows? Клоны .NET для других ОС, но ваше приложение не будет просто работать прозрачно. Сложность, которая вам может не понадобиться.

[2] Рассматриваете ли вы переключение только для поддержки сбора мусора? Если это так, вы можете просто использовать некоторые библиотеки сборщиков мусора С++. И если вы выясните, как использовать std:: shared_ptr, вы, возможно, не почувствуете необходимости в сборщиках мусора. Накладные расходы, которые вам могут не понадобиться.

[3] Рассматриваете ли вы С++/CLI из-за коллекции мусора и всех полезных классов .NET, которые вы можете использовать? Если да, почему бы просто не переключиться на С#. С++/CLI - это переходная технология, и лучше не вкладывать ресурсы в такие вещи. С# становится довольно зрелым и удобным.

Лично я бы просто придерживался С++;).

Ответ 3

Есть ли какая-то польза для вас? Вероятно, вы потеряете способность к переключению на другую ОС.

Ответ 4

не беспокойтесь, если вы не интегрируетесь с .NET-приложениями. Конечно, не используйте STL/CLR, так как его производительность действительно ужасна.

Его соблазн перевернуть этот переключатель, чтобы использовать библиотеки классов .NET, но есть альтернативы. Если вы это сделаете, вы не сможете легко переносить свой код.

Похоже, что рост OSS растет, поэтому теперь может потребоваться время для изучения использования кросс-платформенных библиотек и инструментов. Вы можете развернуть приложение linux гораздо проще, чем на одном из Windows (отправляя полностью сконфигурированную ОС!), И вы получите гораздо более высокий ROI, если вы развертываете клиенты Linux (поскольку они бесплатны).

Если бы я был бизнесменом, я бы хотел, по крайней мере, иметь возможность развертывать на Linux или Mac, а не только на windows-only. Стратегически я бы не хотел делать ставку на то, что мир остался с Microsoft через 5 лет.

Ответ 5

Основное преимущество, которое вы хотели бы переместить на С++/CLI, - это получить доступ к библиотекам .NET и самой структуре (сборку мусора и т.д.). Однако, насколько я могу судить об основной причине, существовавшей на С++/CLI, необходимо облегчить перенос существующего кода на С++ для .NET Framework. Новые проекты поощряются к использованию С#.

Если вам нужно использовать существующий код С++, смешанный с платформой .NET, тогда было бы разумно использовать С++/CLI, но в целом вы должны просто начать с С#.

Если в .NET есть что-то, что новый проект должен широко использовать (возможно, более простой графический интерфейс или что-то еще), используйте С#. если нет, то придерживайтесь родной С++. Я не думаю, что вы потеряете что-либо, сделав это.

Ответ 6

Мне не нравится С++/CLI, поэтому я бы рекомендовал рулевое управление, так как я описываю здесь. Некоторые предлагают использовать С++/CLI в качестве моста между стандартными С++ и С#, но благодаря тому, как разработан С++/CLI, очень утомительно использовать этот способ (вам нужно вручную создать обертки обычного кода на С++, который можно вызывать из С#). Поэтому я бы рекомендовал SWIG вместо того, чтобы взаимодействовать с стандартным С++ с С# (хотя, по общему признанию, SWIG имеет существенную кривую обучения).

Ответ 7

Взгляните на эти две статьи:

Критический обзор С++/CLI, часть I

Критический обзор С++/CLI, часть II

Я считаю, что вы сейчас я уверен, что С++/CLI ни "набор расширений для С++", (во многих отношениях его фактически подмножество С++), а также не связано с С++ больше, чем любой другой язык с точки с запятой и фигурные скобки. Кроме того, С++/CLI определенно является Язык программирования, ориентированный на Windows; его определенно не язык, который Сервер Solaris 10 или мобильный телефон Nokia телефон будет рад работать. Что значит это имеет какое-либо отношение к С++?

Ответ 8

Одним из основных недостатков использования С++/CLR является возможность потерять ваш IP (интеллектуальная собственность), если код не затенен сухим. В целом я согласен с заявлениями других членов здесь. Если вы хотите, чтобы переносимый код был независимым от MS.net vm, тогда исходный C/С++ - это путь.