Есть много факторов, влияющих на ваш выбор. Первое, что я хотел бы спросить, что вы знаете? Если ответ только «поддержание унаследованной системы», то вы по сути начинаете с нуля с точки зрения знания новых технологий.
Во-первых, я хочу выяснить, что я воспринимаю как неправильное представление в вашем первоначальном вопросе:
Мы смотрим на Silverlight, Flex и
Рубин
- Silverlight - это клиентская технология,
в основном время выполнения.
- Сгибание
имя SDK, использованного для сборки
приложения для Adobe Flash
Платформа.
-
Руби это программирование
язык.
Похоже, вы исследуете несколько совершенно разных технологий, разработанных для совершенно разных целей. Они не будут очень хорошо сравниваться.
Более прямым сравнением будет сравнение Silverlight с Flash Player и HTML / JavaScript. Или сравнить MXML Flex с XAML .NET. Насколько мне известно, Ruby в основном используется на стороне сервера, часто с внешним видом HTML и JavaScript. Если ваше интерфейсное решение требуется для взаимодействия с веб-службами .NET и ColdFusion, я не уверен, почему вы добавили бы третью технологию на стороне сервера.
Тем не менее, я собираюсь рекомендовать использовать Flex / The Flash Payer в качестве вашей интерфейсной технологии и ColdFusion в качестве вашей серверной технологии. Есть одна причина, я рекомендую это, и это потому, что это то, что я знаю. Надеемся, что кто-то более опытный в .NET / Silverlight / Ruby может рассказать о преимуществах каждого из них.
Я рассмотрю больше по вашим пунктам, один за другим:
Sourced by a company or user community that is robust enough to be
в течение следующих 5-7 лет (мы
реалисты на этом).
Я ожидаю, что Silverlight, Flash Platform и Ruby будут живы и здоровы в течение следующего десятилетия.
Flash Platform, в частности Flex, имеет активное сообщество. Я считаю, что одна из лучших вещей, которые делает Adobe, - это развитие сообщества разработчиков вокруг их платформы и инструментов.
Flex по-прежнему нов и продолжает расти, но за последние несколько лет он значительно вырос. Несмотря на то, что Adobe туго молчит о количестве разработчиков, большинство оценок, которые я вижу, оценивают в 250–350 тыс., Что более чем вдвое превышает показатели 3 года назад. Есть подкастов , множество блогов , больше фреймворков, чем вы можете потрясти ( RobotLEgs - текущий фаворит), множество конференций (мой фаворит - 360 | Flex ) и множество проектов с открытым исходным кодом .
ColdFusion более 10 лет, в настоящее время его девятая версия и огромное сообщество с процветающими списками рассылки (такими как House of Fusion и форумы Adobe), большим количеством подкастов (таких как CFHour и cfconvesations ), блоги , книги, фреймворки (такие как Fusebox, Model Glue и Mach-II), проекты с открытым исходным кодом и конференций .
Некоторые люди говорят, что трудно найти разработчиков ColdFusion, и это иногда так, потому что сообщество относительно небольшое по сравнению с .NET. В прошлый раз, когда я видел оценки, они оценивали 750 тысяч разработчиков по всему миру. У вас могут быть похожие проблемы с разработчиками Flex. Но, похоже, у вас уже есть команда, которую вы хотите обучать, поэтому, возможно, вы не ищете новых сотрудников, и это не будет проблемой.
В мире также существует множество групп пользователей Adobe. Не стесняйтесь зайти к одному и / или спросить менеджера группы о технологии по своему выбору. Большинство известных мне групп - это Flex или ColdFusion.
Я добавлю, что ColdFusion и Flex / Flash Platform принадлежат Adobe, и Adobe приложила огромные усилия, чтобы убедиться, что они хорошо работают вместе. Я думаю, что их интеграция не имеет аналогов.
Все это говорит о том, что .NET также поддерживает крупную компанию и имеет большую базу разработчиков, чем ColdFusion и / или Flex. Я полагаю, что вы чаще найдете поддерживаемые коммерческие решения в мире .NET, чем в пространстве Flex или ColdFusion; но не могу говорить из личного опыта.
Я не думал, что у Руби есть какая-то компания, но я понял, что у нее очень живое сообщество. Вы можете легко использовать Ruby для создания серверной части приложения Flash Platform или Silverlight.
Able to quickly interface to use stored procedures from Oracle and web
сервисы, созданные в ASP.NET и
ColdFusion как источники данных.
Вы упомянули возможность замены Oracle. Я бы рекомендовал против этого. Похоже, у вас будет много работы. Если вы можете обойтись, изменив только один «слой» вашего приложения, сделайте это.
ColdFusion может быстро и легко получить доступ к данным в Oracle, используя хранимые процедуры или прямые запросы. Я не сомневаюсь, что .NET может сделать то же самое. [и я предполагаю, что у Руби с этим тоже не должно быть проблем].
Silverlight и Flash Player (Flex) разработаны как интерфейсные технологии, и я не рекомендовал бы пытаться получить доступ к базе данных непосредственно из них. Большинство приложений, которые я видел, используют уровень промежуточного программного обеспечения (например, ColdFusion или .NET) для доступа к базе данных, и тогда Flash просто получит доступ к этому промежуточному уровню. В архитектуре Model View Controller Service вы можете часто реализовывать Модель как хранилище базы данных (Oracle), службы в промежуточном программном обеспечении (ColdFusion / .NET) и представление в технологии интерфейса (Flash Player / Flex, Silverlight или HTML). / АЯКС). Контроллер в приложении Flex / Flash, скорее всего, будет создан во Flash / Flex. Я предполагаю, что Silverlight похож.
Используя ColdFusion, вы будете использовать cfstoredproc для доступа к хранимым процедурам или cfquery для выполнения запросов непосредственно к базе данных. Вы помещаете эти запросы в службу, а затем из Flex / Flash Player вы получаете доступ к этим данным с помощью RemoteObjects (это протокол AMF, который я настоятельно рекомендую использовать) или WebService (для вызовов SOAP) или HTTPService (для вызовов REST. ). AMF - это двоичный формат, который может значительно ускорить передачу данных между клиентом и сервером. ИТ-специалисты также автоматически переводят объекты на стороне сервера в объекты на стороне клиента и наоборот. Это очень приятное прикосновение, и вам не нужно писать собственные процедуры преобразования.
Deployable on virtualized clients as well as thick client
Машины Windows и Apple.
Полагаю, я не уверен, что вы подразумеваете под виртуализированными и толстыми клиентами.
Flash Player и AIR легко устанавливаются как на Windows, так и на Mac. Adobe проделывает большую работу, чтобы подготовиться к волне мобильных устройств, если это важно для вас. Даже несмотря на аргументы Adobe / Apple в прошлом году, у Adobe есть упаковщик для развертывания на устройствах iOS. Он находится на ранней стадии, но я ожидаю увидеть некоторые важные обновления в первой половине этого года.
Adobe подверглась критике за производительность на Mac, и этому есть разные причины. Но все постоянно улучшается.
Я знаю, что у Silverlight есть поддержка Mac, но я не знаю, насколько это возможно. Я не ожидаю увидеть Silverlight на мобильных устройствах помимо ОС Windows Phone.
С точки зрения Ruby, вы, вероятно, не захотите развертывать Ruby на настольном компьютере в любой форме. Но вы можете создать AJAX / HTML, который работает с выбранным вами браузером (и / или использовать среду AJAX, которая решает проблемы совместимости браузера). В нынешних условиях HTML / AJAX, вероятно, будет вашим лучшим выбором для развертывания мобильных устройств, поскольку большинство мобильных браузеров основаны на Webkit, поэтому часто существует высокий уровень согласованности в том, как приложения HTML работают на устройствах. И такой подход, скорее всего, даст лучшую производительность, чем использование Flash [или Silverlight] на указанном устройстве.
Extra points if there is some way to reuse the old Delphi code (but
опять же, мы реалисты, поэтому мы не
ожидая, что это произойдет).
Я не могу вам здесь помочь. Лучше всего либо заново создать с нуля, либо попробовать написать инструмент для преобразования / генератора кода. Я не уверен, является ли последний практичным. Если вы превратите код Delphi в COM-объекты, как это предлагается в другом месте, их можно использовать из ColdFusion аналогично тому, как их можно использовать из .NET.
Это помогает? Что еще вы хотели бы знать?