Приложение, над которым я работаю, является приложением WinForms, написанным почти полностью на Visual C ++ около 2003 года. До моего прибытия на сцену был выбран .NET из-за инфраструктуры построения пользовательского интерфейса, но было разработано подавляющее большинство кода. в неуправляемой земле. Частично это было абсолютно необходимо - мы выполняем некоторую обработку изображений в реальном времени для некоторых очень больших наборов данных, используем некоторые библиотеки обработки изображений Intel, которым нужны указатели на буферы изображений, и мы действительно являемся в этом < 1% случаев, когда производительность является критической.
Само приложение представляло собой большой исполняемый файл, сформированный путем связывания кода пользовательского интерфейса с несколькими статическими библиотеками, каждая из которых соответствует функциональной подсистеме - сбор данных, обработка изображений и тому подобное. С тех пор как я присоединился, я разделил несколько этих подсистем на библиотеки DLL, написав управляемые оболочки, которые мы повторно используем в других приложениях, но основное приложение по-прежнему по существу состоит из статически связанных библиотек.
Мой коллега и я существенно различаемся в отношении того, следует ли уделять дальнейшее развитие неуправляемому или управляемому. За исключением случая, который я упомянул, требования к производительности, предписывающие неуправляемый код, отсутствуют. Мы твердо привержены .NET, поэтому кросс-платформенность не проблема. Я придерживаюсь мнения, что мы должны отдавать предпочтение управляемым, если не указано иное.
В прошлом месяце мой коллега разработал набор классов, которые управляют подсистемой; вместо того чтобы реализовывать их как ref-классы и добавлять некоторые события в интерфейс .NET, он написал пару реализаций Observer, используя gcroot для хранения дескрипторов управляемых клиентов, и позволил себе остаться на неуправляемой земле. Это кажется мне неправильным, просто потому, что зачем писать что-то, что вы можете получить бесплатно? Но мне интересно, слишком ли я жесток.
Есть мысли?