Технология рабочего стола
WPF невероятно мощный и, несомненно, лучший выбор для типа приложения, которое вы описываете. Если ваша команда не имеет опыта работы с WPF на протяжении нескольких месяцев обучения, но долгосрочные выгоды от повышения производительности и удобства обслуживания того стоят. only причина, по которой вы можете рассмотреть что угодно, кроме WPF, если у вас сжатые сроки и ваша команда уже хорошо знает некоторые другие технологии. Даже в этом случае я хотел бы рассмотреть параллельную разработку версии WPF и рассматривать другую версию как прототип.
Некоторые люди занимаются разработкой десктопов, используя Silverlight вместо WPF, полагая, что им следует использовать одну технологию вместо двух. Я не согласен с этим аргументом: две технологии достаточно схожи, чтобы навыки и передача кода были очень хорошими, в настоящее время WPF имеет много очень полезных функций, отсутствующих в Silverlight, и поскольку Silverlight получает эти функции, он стремится скопировать то, что хорошо из WPF. Таким образом, в конечном итоге все потраченные усилия и код, созданный при разработке приложений WPF, не будут потрачены впустую.
Также обратите внимание, что WPF может работать как в браузере, так и в Silverlight. Когда я создаю веб-приложения для клиентов, которые, как я знаю, будут работать под Windows, я выбираю WPF вместо Silverlight. В настоящее время я занимаюсь преобразованием нескольких приложений Windows в веб-приложения WPF для упрощения развертывания.
Технология веб-интерфейса
Вы были бы дураком использовать ASP.NET MVC в веб-приложении, если бы могли использовать Silverlight. Вещи, которые занимают дни в ASP.NET MVC, занимают часы или минуты в Silverlight. Вещи, которые занимают дни в Silverlight, занимают годы в ASP.NET MVC.
Проникновение Silverlight на рынок в настоящее время составляет около 50% и растет на 2-3% в месяц, и оно будет работать на 99% настольных компьютеров. К следующему году проникновение может составить 85% или выше. Вы должны взвесить риск того, что несколько пользователей не загрузят Silverlight и не получат доступ к вашему приложению, с учетом рисков, связанных с ASP.NET MVC: с ASP.NET MVC ваше приложение будет стоить намного дороже, его разработка займет больше времени. выйти на рынок, иметь меньше возможностей и меньше «богатства».
Тем не менее, если бы был контракт, который я действительно, действительно, очень хотел, и клиенту было неудобно использовать Silverlight, я бы, вероятно, выбрал ASP.NET MVC в качестве второго выбора. Но только если веб-раздел приложения был относительно небольшим.
Коммуникационные технологии
WCF - хороший выбор для обработки ваших данных. В настоящее время он лучше конкурентов, достаточно быстр и хорошо интегрируется с Silverlight, XBAP и WPF. Если у вас нет веских причин выбирать другую технологию веб-сервисов, я бы выбрал WCF.
Что касается эффективности, то двоичный форматировщик WCF примерно так же эффективен, как и все, что вы найдете, и более эффективен, чем типичные протоколы прямого доступа к базе данных, такие как TDS, для шаблонов использования, с которыми вы столкнетесь. Если вам придется использовать форматировщик SOAP для совместимости, вы потеряете некоторую пропускную способность при преобразовании в XML, но в остальном это будет относительно эффективно.
Я использую слой данных под названием «Изумрудное основание данных», который я построил сам, и планирую открыть его в ближайшие несколько месяцев. Он использует одни и те же объекты в веб-службе и на клиенте и ведет себя одинаково независимо от того, подключен он к внутренней базе данных или нет. Это работает очень хорошо, потому что вы едва ли понимаете, что вообще существует коммуникационный уровень. Такой подход делает уровень данных чрезвычайно простым.
Emerald Data Foundation также имеет механизм контроля доступа на основе ролей, который позволяет клиентам получать доступ к данным на основе отношений между объектами данных, так что, например, человек может получить доступ только к своим данным клиента. Это применяется на уровне данных, поэтому никакая разработка уровня пользовательского интерфейса не может случайно предоставить данные, которые не должны быть видны, или сделать несанкционированные обновления.