Как использовать данные в крупномасштабном бизнес-приложении - PullRequest
2 голосов
/ 24 августа 2011

Мне просто интересно, как лучше всего использовать данные из многоуровневого крупномасштабного приложения.Если честно, мне все еще не хватает опыта, чтобы выбрать правильный путь.Мы начали наш проект с мысли, что RIA Services будет распространять сущности по проводам, и сначала мы были в порядке с RIA, но проблемы начались после того, как нам пришлось отправить какой-то сложный DTO в ответ от службы и в качестве параметров длявызовы сервисов.

На данный момент работа со службами RIA похоже на борьбу с платформой, и мы решили использовать необработанные сервисы WCF с созданными клиентами на внешнем интерфейсе.Мы пытались сделать это в течение недели, это был своего рода положительный опыт, но в итоге это также показало свои недостатки, как, например, клиент не восстанавливается, некоторые классы не подлежали повторному использованию, и Visual Studio однажды пришлось восстанавливать их на стороне клиента.снова и т. д.

Я начал искать решение и нашел замечательную статью о том, как генерировать асинхронные клиенты во время выполнения.Поэтому идея заключалась в том, чтобы поместить интерфейс, описывающий службу WCF, в общую сборку, а затем создать клиент WCF с автоматически генерируемыми (генерируемыми) методами для поддержки асинхронной работы со службой.Это оказалось лучшим решением из того, что я видел, но у меня пока недостаточно времени, чтобы найти его недостатки, потому что ...

Новый архитектор присоединился к нашей команде, и теперь мы рассматриваем возможность использования его написанного самимреализация ServiceBus.Это выглядит намного более зрелым, но оно построено вокруг DuplexPushService, и я не знаю, будет ли он настолько масштабируемым и надежным, как говорит автор.

Почему я пишу это?- Я просто хочу услышать историю успешной интеграции шаблона или технологии в готовое решение, какую технологию вы используете для поддержки бизнес-логики?Можете ли вы сказать об этом плюсы и минусы?Что бы вы сделали, если бы вы начали новый проект Silverlight прямо сейчас?

Я буду очень признателен за ваши ответы, спасибо за чтение этой стены текста и извините за отсутствие примеров кода и ссылок.

Таким образом, реальный вопрос заключается в том, как использовать данные в приложении Silverlight, которые должны обслуживать ~ 50 тыс. Человек.

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Аналогично Дж. Гауффину. Мы берем DTO и «загружаем» их в «Модели», которые наследуют OnPropchange, DataErrorInfo и т. Д., Которые мы затем используем в наших ViewModels. Чистейший сказал бы, что наша Модель на самом деле является легкой моделью ViewModel, но я думаю, что это Модели. Мы берем записи из LINQ2SQL и преобразуем их в объекты CRUD (из-за того, как мы это делали по старому стилю) и отправляем их через обычный старый сервис WCF SilverLight. Этот объект DTO становится нашим ".Source" в объекте, на который указывают все свойства (установите Source.Property = value; и верните Source.Property;). С EF мы обязательно не будем использовать include из-за наших ассоциаций, мы окажемся в рекурсивном цикле, у A есть B, у которого B есть ссылка на его родителя, у которого есть B .... и т. Д. И т. Д.

1 голос
/ 24 августа 2011

Золотое правило

  • Не делайте ничего, пока производительность действительно не станет проблемой.

Бонусное правило

  • Разработка DTO, так что для каждого варианта использования требуется только один вызов WCF (если это возможно).

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

Когда производительность действительно является проблемой

  1. Кэшируйте как можно больше в приложении silverlight
  2. Используйте Локальное хранилище и синхронизацию для хранения данных между сеансами.
...