2010-03-26 4 views
3

Я работаю над приложением, которое было разработано с использованием архитектуры приложений n-tire. Приложение было разработано на платформе .NET с использованием C#, VB.NEt, Framework 3.5, Dataset, WCF, панель обновления asp.net, инструменты JavaScript, Josn, сторонние инструменты. мой текущий предложенный макет такойАрхитектура WCF и N-уровня

уровень представления -> Бизнес-логика -> WCF -> DAL-> Доступ к данным

Дело в том: ли выше макет правильный путь для построения систем SOA?

Как всегда, ваши советы очень ценится

ответ

8

Это зависит от вашего определения, см. Fowler's comments.

Как правило, чтобы получить максимальную выгоду от чего-то SOA, вы должны быть спроектированы так, чтобы их можно было повторно использовать несколькими потребителями. Это означает, что ваша бизнес-логика «ниже» вашего слоя WCF. Тогда у вас может быть, например, клиент Silverlight, клиент WPF и т. Д., Используя те же услуги и бизнес-логику.

Изменить сценарий для:

Несколько презентаций Layers -> WCF -> Бизнес логика -> DAL-> Доступ к данным

+0

Могу ли я иметь приложение оракула или Java Applicatin использовать одни и те же услуги и бизнес-логики тоже ? – kathy

+0

Да, Кэти. Архитектура позволит вам использовать сервисы практически у любого клиента. Вам просто нужно убедиться, что ваши службы созданы с использованием формата, который может быть понят другими системами. Единственное беспокойство, которое я мог бы рассказать о вашем сценарии, - это то, как .NET DataSets сериализуется. –

+0

На самом деле, я использую набор данных и DataTable, чтобы получить форму данных хранимой процедуры в базе данных. Это может вызвать проблемы? – kathy

0

Ваши услуги должны быть деловые операции, а не операции с данными. Лучшей версией вашего проекта будет: уровень презентации -> WCF -> Бизнес-логика -> Доступ к данным.

N-level/layering - это довольно устаревшая концепция в наши дни. Он всегда ломался. Instaed, подумайте о своем программном обеспечении как о числе, если взаимодействуют сервисы.

4

Похоже, это МОЖНО быть правильным, хотя я бы добавил WCF между слоями Pres и Biz. Кроме того, не бойтесь иметь нелинейный путь для вашей архитектуры SOA (т. Е. Иметь боковые сервисы, такие как «EmailService» и «WeatherDataService», которые исходят со стороны вашего пути N-уровня). Очевидно, что WeatherDataService будет сторона вашего DAL, но EmailService может прийти со стороны вашего Биз слоя

Некоторые большие ссылки для вас:.