Как эффективно управлять доступом к данным / предварительной загрузкой, используя веб-сервисы в C #? - PullRequest
0 голосов
/ 19 марта 2010

Хорошо, это очень «общий» вопрос. В настоящее время у нас есть база данных SQL Server, для которой нам необходимо разработать приложение в ASP.NET, которое будет содержать всю бизнес-логику в веб-службах C #.

Дело в том, что, архитектурно говоря, я не уверен, как спроектировать веб-сервис и управление данными. Есть много вещей, чтобы рассмотреть:

  1. Нам нужен очень быстрый доступ к данным. Прямо сейчас у нас есть более миллиона записей «продаж» и «покупок», из которых нам нужно часто рассчитывать и загружать текущий запас для данного дня в соответствии с серией параметров. Я не уверен, как мы должны предварительно загрузить данные и сохранить данные в веб-сервисе. Выполнение расчета запаса в запросе SQL будет очень длительным. В настоящее время у них есть приложение для расчета запаса, которое предварительно загружает все продажи и покупки за день, а затем вычисляет запас на стороне кода.

  2. Мы хотим разработать мощные инструменты отчетности. Мы хотим реализовать «сводную таблицу», но не знаем, как ее реализовать, и у нас хорошие показатели.

  3. По вышеуказанным причинам я не уверен, как спроектировать модель данных.

  4. Как бы вы управляли отображением текущего запаса, учитывая, что «запас» на самом деле является покупкой - продажей, и что для его расчета необходимо учитывать все строки? Будете ли вы кэшировать «запасные» данные в базе данных для оптимизации производительности, даже если это избыточные данные?

Кто-нибудь может дать мне какие-либо указания о том, как начать, или из своего личного опыта (что вы делали в прошлом?)

Я не уверен, возможно ли получить награду, даже если вопрос новый (я бы поставил 300 повторений, поскольку мне действительно что-то нужно). Если вы знаете как, дайте мне знать.

Спасибо

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Первое предложение - не использовать устаревшие веб-сервисы ASMX. Используйте WCF, который, по словам Microsoft, должен использоваться для всех новых разработок веб-сервисов.

Во-вторых, вы уверены, что не можете оптимизировать базу данных или разместить ее на более быстром оборудовании или ближе к веб-серверу?

Я не знаю, что вы сразу получите столько данных в памяти. Если бы вы могли, то вы могли бы использовать DataSet и использовать LINQ to DataSets для запросов к нему.

0 голосов
/ 19 марта 2010

Я надеюсь, я надеюсь, что я неправильно понимаю, что вы написали, но если под

содержится вся бизнес-логика в C # Web Services

вы имеете в виду что-то вроде это тогда вы уже движетесь в направлении против паттерна.Доступ к вашим данным из приложения ASP.NET через веб-сервисы может привести к штрафам за сериализацию / десериализацию практически без выгоды.

Лучшим подходом было бы организовать сервисы, которые вы хотите сделать доступными, в общем слое, на котором построены ваши приложения, и получать к ним доступ непосредственно из вашего приложения ASP.NET, а также, возможно, также представлять их как веб-сервисы, чтобы позволить внешнимисточники, потребляющие эти данные.

Вы также можете посмотреть на данные, которые дорого вычислять, используя хранилище данных , которое обновляется через регулярные промежутки времени (один или несколько раз в день).,Это помогло бы повысить производительность чтения данных (если вы готовы признать, что данные немного устарели).

Это та информация, которую вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...