UI, Слой Бизнес-логики, Слой Данных и куда поместить веб-сервисы

Можно просто использовать нормальные конструкции языка:

DEBUG = True
if DEBUG:
  # Define a function, a class or do some crazy stuff
  def f():
    return 23
else:
  def f():
    return 42
13
задан 22 September 2009 в 21:22
поделиться

5 ответов

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

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

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

С точки зрения того, является ли дизайн «правильным» или нет, на самом деле невозможно дать 100% ответ на вопрос о правильности дизайна без полного контекста. Каковы требования (функциональные и нефункциональные)? Какие цели дизайна вы хотите достичь? Насколько важна каждая цель?

Единственная цель, о которой упоминается в вашем вопросе, - это то, что вы хотите повторно использовать бизнес-логику с другим приложением. Когда я хочу повторно использовать бизнес-логику приложения стандартным способом, я выбираю веб-службы. Поэтому, основываясь исключительно на вашем единственном требовании, я бы сказал, что вариант 1 (UI-> Web Service-> Business Layer-> Data Layer) - хороший выбор.

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

Отъезд: http://www.icemanind.com/layergen.aspx

Как это должно быть, у вас есть Слой пользовательского интерфейса вверху, ваш уровень данных внизу и ваш бизнес-уровень между ними. Каждый уровень может связываться только со слоем ниже него. Таким образом, пользовательский интерфейс взаимодействует только с бизнес-уровнем ... бизнес-уровень взаимодействует только с уровнем данных. Ваш пользовательский интерфейс никогда не должен взаимодействовать с уровнем данных, а ваш уровень данных никогда не должен взаимодействовать с вашим пользовательским интерфейсом.

Я бы не стал, если у вас нет причины использовать веб-службу.

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

Я бы не стал, если у вас нет причины использовать веб-службу.

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

Я бы не стал, если у вас нет причины использовать веб-службу.

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

Я бы сказал третий. Я склонен думать о веб-сервисах как о еще одном уровне представления.

Подумайте об этом так: у вас есть веб-интерфейс, который вызывает код вашего бизнес-уровня для таких действий, как создание нового пользователя (User.Add), поиск всех продуктов, соответствующих данному описанию (Products.FindByDescription) и т. Д. .

Теперь вы можете повторно использовать тот же код бизнес-уровня для создания набора общедоступных веб-сервисов для использования третьими сторонами. Может быть метод, который добавляет пользователя - который вызывает ваш внутренний метод User.Add (), другой - для поиска продуктов и т. Д.

Вы получаете параллельный набор презентаций / интерфейсов к одним и тем же базовым данным и бизнес-логика.

За кулисами (полностью за пределами веб-сервисов или слоев пользовательского интерфейса), бизнес-уровень вызывает уровень доступа к данным, который выполняет физические запросы к базе данных. Если бы вам пришлось перейти на другую СУБД, в идеале (и теоретически) вы должны иметь возможность перестроить уровень данных для новой базы данных, и все будет просто работать.

Ваш бизнес-уровень содержит правила, например, имя пользователя должно содержать от 4 до 15 символов; пользователям разрешено искать и загружать только те товары, которые есть в магазине, к которому у них есть доступ; и т. д.

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

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

Ваш бизнес-уровень содержит правила, например, имя пользователя должно содержать от 4 до 15 символов; пользователям разрешено искать и загружать только те товары, которые есть в магазине, к которому они имеют доступ; и т. д.

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

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

Ваш бизнес-уровень содержит правила, например, имя пользователя должно содержать от 4 до 15 символов; пользователям разрешено искать и загружать только те товары, которые есть в магазине, к которому у них есть доступ; и т. д.

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

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

Не смешивайте логический дизайн с физическим. Логический дизайн оперирует уровнями, а физический дизайн - уровнями. Веб-сервис - это не слой. Это просто ярус. В логическом дизайне есть стандартный подход: слой UI -> слой BL -> DAL. В физическом дизайне все уровни могут находиться в одном клиентском приложении, соединяющем локальную базу данных, или могут быть распределены по удаленным уровням. Но для распределенных приложений обычно добавляется еще один уровень: уровень приложений, который скрывает связь уровня BL по проводам.

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

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