Выбор правильной архитектуры .NET. WCF? WPF / Forms, ASP.NET (MVC)?

Первая половина почтового индекса. Действующие форматы

  • [AZ] [AZ] [0-9] [AZ]
  • [AZ] [AZ] [0-9 ] [0-9]
  • [AZ] [0-9] [0-9]
  • [AZ] [AZ] [0-9]
  • [AZ] [AZ] [AZ]
  • [AZ] [0-9] [AZ]
  • [AZ] [0-9]

Исключения Позиция 1 - QVX не используется Позиция 2 - IJZ не используется, кроме GIR 0AA Позиция 3 - используется только AEHMNPRTVXY Позиция 4 - ABEHMNPRVWXY

Вторая половина почтового индекса

  • [0-9] [AZ] [AZ]

Исключения Позиция 2 + 3 - CIKMOV не используется

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

10
задан Tommy Jakobsen 14 April 2010 в 07:53
поделиться

6 ответов

Технология пользовательского интерфейса рабочего стола

WPF невероятно мощен и, несомненно, является лучшим выбором для тип приложения, которое вы описываете. Если ваша команда не имеет опыта работы с WPF в течение нескольких месяцев обучения, но долгосрочные преимущества повышения производительности и ремонтопригодности того стоят. Единственная причина, по которой вы можете рассмотреть все, кроме 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», который я построил сам и планирую открыть исходный код в ближайшие несколько месяцев. Он использует одни и те же объекты в веб-службе и на клиенте и ведет себя одинаково независимо от того, подключен ли он к серверной базе данных. Это работает очень хорошо, потому что вы даже не подозреваете, что коммуникационный уровень вообще существует. Такой подход делает уровень данных чрезвычайно простым.

Emerald Data Foundation также имеет механизм управления доступом на основе ролей, который позволяет клиентам получать доступ к данным на основе отношений между объектами данных, так что, например, человек может получить доступ только к своим собственным данным клиента. Это обеспечивается на уровне данных, поэтому разработка уровня пользовательского интерфейса не может случайно раскрыть данные, которые не должны быть видны, или внести неавторизованные обновления.

3
ответ дан 3 December 2019 в 23:12
поделиться

Как упоминал Сони выше, я думаю, что ваш логический архитектурный подход довольно надежен, и я думаю, что WCF - это «выбор». Я уверен, что вы услышите свое мнение о презентационных технологиях и ORM.Я предлагаю пару пунктов на уровне обслуживания, где я провожу много времени в приложениях, очень похожих на ваше:

  • Если вы еще этого не сделали, начните смотреть на AppFabric. Это то, к чему Microsoft идет с размещением служб WCF и предоставляет вам множество преимуществ, таких как высокоскоростное оснащение и управление службами, которые вы не получаете из коробки с WCF сейчас.
  • Подумайте, какой тип протокола (и, следовательно, привязки WCF) вы сможете использовать в зависимости от сетевой инфраструктуры и инфраструктуры ваших деловых партнеров. Если вы можете использовать TCP в качестве высокоскоростного транспорта, вы будете в отличной форме, если он будет работать с вашей сетью.
  • Рассмотрите возможность интеграции MSMQ в вашу логическую архитектуру, чтобы обеспечить организацию очередей и гарантированную доставку. Джувал Лоуи имеет несколько отличных материалов по интеграции MSMQ в своих книгах по WCF.
  • Начните думать об интерфейсах служб и стратегии управления версиями служб. Решения, принятые на раннем этапе в этих областях, становятся почти неизменными после того, как они доведены до сведения деловых партнеров.
  • При участии нескольких деловых партнеров подумайте о том, как вы собираетесь защитить эти услуги. Группа Microsoft P&P только что выпустила довольно хорошее руководство по идентификации и контролю доступа на основе утверждений, которые могут быть действительно полезны для вас в зависимости от ваших сценариев интеграции.

Надеюсь, это поможет. Не стесняйтесь опубликовать продолжение, если вам нужна дополнительная информация.

3
ответ дан 3 December 2019 в 23:12
поделиться

Такой дизайн выглядит в высшей степени осуществимым.

WCF - хороший кандидат на уровень обслуживания, приятно видеть, что некоторый возраст ORM продолжается, и у вас есть веская причина для создания пользовательского интерфейса на основе форм и веб-интерфейса.

WPF может (по сути) вести себя как Windows Form. Однако MS рекомендует использовать его вместо Win Forms, если вы пишете что-то новое.

ASP.NET MVC - отличный кандидат для веб-материалов - страницы не имеют состояния, и вы имеете гораздо больший контроль над страницей.

Ознакомьтесь с отдельными обсуждениями типа «WPF VS WinForms» для получения более подробной информации.

4
ответ дан 3 December 2019 в 23:12
поделиться

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

Если это всего лишь приложение для ввода данных, вы можете просто создать несколько экранов и жить с ним. Это было бы самое простое, что может сработать.

С другой стороны, если причины, по которым изменения данных важны для бизнеса, я бы сначала подумал о создании надежной модели предметной области. А затем слой команд поверх него. Клиентское приложение будет выдавать команды для изменения данных, такие как «Поднять пользователю Xxx зарплату», которые будут утверждены, а затем обработаны. Такие команды были бы первоклассными гражданами в вашей архитектуре.

0
ответ дан 3 December 2019 в 23:12
поделиться

Рассматривали ли вы услуги Silverlight + RIA? - это естественный выбор для многоуровневой системы с богатым пользовательским интерфейсом. Вы можете использовать его как для интрасети, так и для клиентских приложений.

3
ответ дан 3 December 2019 в 23:12
поделиться

Если у вашей команды еще нет опыта работы с WPF, я бы рекомендовал придерживаться WinForms для настольного клиента, если у вас есть ограничения по расписанию (и какой проект нет?) WPF чрезвычайно мощный, но он также требует сложного обучения. Я использовал его для относительно небольших проектов с низкой видимостью, и это дало мне возможность действительно узнать, как следует использовать эту технологию, вместо того, чтобы пытаться что-то собрать вместе, как если бы это были просто WinForms с более красивыми элементами управления.

У меня нет большого опыта работы с WCF, но я понимаю, что здесь тоже нужно много учиться. Как и в случае с WPF, все зависит от того, что знает ваша команда и сколько времени вы можете потратить на изучение новой технологии.

1
ответ дан 3 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: