2010-05-13 5 views
5

Я изучаю перемещение приложения Delphi с толстым клиентом SQL на тонкие клиенты Multi Tier и рассматривал использование Datasnap в Delphi 2010. Я работал над White Paper, написанной Бобом Сватом и расширенным это далее.Delphi 2010 Datasnap - Design Query

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

Благодаря Matt

ответ

1

Вы должны решить, в дизайне:

  • (Mid-сервер) Обойдется сеанс или клиент будет определять их сеанс каждое соединение (Stateful против безгражданства)

  • (Mid-Server) Сколько кэшированных данных вы хотите иметь. Вы можете кэшировать только некоторые раздражающие очень стабильные таблицы и запрашивать их только при их изменении (если все изменения происходят через средний сервер, если нет, вам нужно что-то вроде произвольной метки - GUID, счетчик - в таблице, чтобы соответствовать, если данные изменено).

  • (Клиент/средний сервер) Если ваш клиент всегда будет получать полный набор данных или просто фрагменты коллекции. (например, продукт может иметь столбец категорииId, который является FK для таблицы Category. Вы можете отправлять все это время или клиент может запрашивать только данные продукта).

  • (Mid-Server/RDBMS) Возможно, вам придется предоставить некоторую форму пользовательского поиска. Если у вас есть ключ к наиболее часто используемым условиям поиска, вы можете предоставить (при необходимости) индексное покрытие для этого.

  • (Mid-Server/RDBMS) Не добавляйте большие массивы данных на сервер среднего уровня, если только вы не планируете делать некоторые аггрессивные кеширования данных и/или иметь для них хорошее применение. Mid-Server - это еще одно клиентское приложение для RDBMS - если оба находятся на одном компьютере, вы можете ввести в память/CPU/IO конкуренцию с РСУБД.

  • (Mid-Server/RDBMS) Выполняйте свои бизнес-правила на Mid-Server, это мантра многих пуристов. Для меня равновесие является ключевым. Предположим, что в РСУБД есть 2000 хранимых процедур (я не удивляюсь, есть реальный бизнес с таким количеством SP), и ваш Mid-Server может отлично работать над 1500 из 2000 проблем, решаемых SP, GREAT и делать это. Но если последние 500 могут измениться для худшего, пусть они одни. Это может быть большая проблема, чем 1500. Поэтому смешайте их и сделайте эти 500 программных проектов другой версией.

  • (Mid-Server/RDBMS) То, что я сказал для хранимых процедур, также можно применять к триггерам и другим другим функциям сервера РСУБД, которые могут сделать вашу жизнь проще.

  • (Mid-Server/DataSnap). Большинство подробных сведений можно предоставить поставщику набора данных. Но научитесь использовать событие OnBeforeUpdateRecord для выполнения пользовательской обработки, когда это необходимо.

  • (Mid-Server/DataSnap) Вы знаете, что вы можете создать ClientDataset только с измененными данными на такого рода код ниже? Вы не можете себе представить, насколько это полезно ... :-)

    Cds_New.Data: = Cds_Updated.Delta;

Смежные вопросы