13

우리는 웹 애플리케이션을 개발 중입니다. 우리는 아마도 동일한 데이터베이스를 사용할 다른 응용 프로그램에 대해 여기에서 수행 한 작업을 다시 사용하고 동일한 데이터베이스를 읽고 쓰기 위해 비즈니스 규칙을 사용하려고합니다.UI, 비즈니스 로직 레이어, 데이터 레이어 및 웹 서비스 위치

설계는 데이터 액세스 레이어 얘기 할 비즈니스 로직을 포함하는 비즈니스 오브젝트를 사용하는 것과 UI 호출 웹 서비스를 갖는

  1. 더 정확할 것이다.

  2. 웹 서비스를 호출하는 비즈니스 로직을 포함하는 비즈니스 객체를 UI에 사용하면 데이터 액세스 레이어와 통신하게됩니다.

  3. 데이터 액세스 계층과 대화 할 비즈니스 논리를 포함하는 UI 사용자 비즈니스 개체가 있어야합니다.

답변

0

웹 서비스 계층을 사용해야하는 이유에 대해서는 설명하지 않았습니다. 귀하의 UI 시스템, 즉 방화벽 뒤의 동일한 네트워크에서 데이터베이스에 접근 할 수 있다고 가정하면 귀하의 웹 사이트 UI 코드 (서버 측, 제가 가정하고있는)가 사용할 기본 비즈니스 객체 계층이 귀하의 요구 사항을 충족시킵니다.

UI 시스템과 데이터 계층 사이의 거리가 데이터 액세스 계층이나 비즈니스 논리 계층에서 어려움을 겪기 시작하는 경계를 넘기 시작할 때 웹 서비스 계층을 가져옵니다.

1

디자인이 "정확하다"는 점에서 전체 문맥없이 디자인의 정확성에 100 % 답할 수는 없습니다. 요구 사항 (기능 및 비 기능)은 무엇입니까? 어떤 디자인 목표를 달성하고 싶습니까? 각 목표는 얼마나 중요합니까?

귀하의 질문에 언급하는 유일한 목표는 비즈니스 로직을 다른 응용 프로그램과 재사용하려는 것입니다. 표준 방식으로 애플리케이션의 비즈니스 로직을 재사용하고 싶을 때 웹 서비스를 선택합니다. 그래서 전적으로 옵션 1 (UI-> 웹 서비스 -> 비즈니스 레이어 -> 데이터 레이어)을 선택하는 것이 좋은 선택이라고 말할 수 있습니다.

0

체크 아웃 : http://www.icemanind.com/layergen.aspx

갈해야하는 방법입니다, 당신은 정상에 당신의 UI 층, 하단의 데이터 층과 둘 사이에 비즈니스 계층이있다. 각 레이어는 그 아래의 레이어와 만 통신 할 수 있습니다. 따라서 UI는 비즈니스 계층과 만 통신합니다 ... 비즈니스 계층은 데이터 계층과 만 통신합니다. UI는 데이터 영역과 절대로 대화해서는 안되며 데이터 영역은 사용자 인터페이스와 상호 작용해서는 안됩니다.

웹 서비스를 사용해야하는 이유가없는 한, 그렇지 않습니다.

4

나는 3 번째를 말할 것입니다. 나는 웹 서비스를 다른 프리젠 테이션 레이어로 생각하는 경향이있다.

이런 식으로 생각하십시오 : 새로운 사용자 생성 (User.Add), 주어진 설명과 일치하는 모든 제품 찾기 (Products.FindByDescription) 등 비즈니스 계층 코드를 호출하는 웹 UI가 있습니다.

이제 동일한 비즈니스 계층 코드를 재사용하여 제 3자가 사용할 공용 웹 서비스 집합을 구축 할 수 있습니다. 내부 User.Add() 메소드를 호출하는 사용자, 제품을 찾는 또 다른 메소드 등을 추가하는 메소드가있을 수 있습니다.

동일한 기본 데이터 및 비즈니스 로직에 대한 프리젠 테이션/인터페이스의 병렬 세트가 있습니다.

(웹 서비스 또는 UI 계층의 범위를 벗어남) 비즈니스 계층은 물리적으로 데이터베이스를 쿼리하는 데이터 액세스 계층을 호출합니다. 다른 DBMS로 변경하려면 이상적으로 (그리고 이론적으로) 새 데이터베이스의 데이터 계층을 다시 작성하고 모든 것이 간단하게 작동 할 수 있어야합니다.

비즈니스 계층에는 사용자 이름과 같은 규칙이 4 ~ 15 자이어야합니다. 사용자는 액세스 할 수있는 상점에있는 제품 만 검색하고로드 할 수 있습니다.

비즈니스 규칙을 변경하기로 결정한 경우 - 사용자가 해당 주에있는 상점에서 제품을 검색 할 수있는 것처럼 - 한 번에 변경하고 웹 서비스를 만질 필요가 없거나 작동시키기위한 UI.

10

물리적 디자인과 논리적 디자인을 함께 사용하지 마십시오. 논리적 설계는 레이어와 물리적 디자인 계층에서 작동합니다. 웹 서비스는 계층이 아닙니다. 그것은 단순히 계층입니다. 논리적 디자인에는 표준 접근 방식이 있습니다. UI 레이어 -> BL 레이어 -> DAL 물리적 디자인에서 모든 레이어는 로컬 데이터베이스를 연결하는 하나의 클라이언트 측 응용 프로그램 내에 상주하거나 원격 계층에 분산 될 수 있습니다. 그러나 분산 응용 프로그램의 경우 일반적으로 하나 이상의 계층이 추가됩니다. 응용 계층은 와이어를 통해 BL 계층 통신으로부터 숨 깁니다.

+3

웹 서비스를 어디에 두어야할까요? – siamak

1

논리적으로 웹 서비스는 UI 계층에 속합니다. "사용자"는 인간 일뿐만 아니라 다른 시스템이기 때문에 명확 해집니다. 이러한 논리적 계층 간의 관심을 엄격하게 분리하면 응용 프로그램을 쉽게 구현하고 유지 관리 할 수 ​​있습니다.

0

서비스 레이어에 대해 들었습니까? 거래 및 운영에 서비스 레이어를 사용할 수 있고 외관 레이어를 사용하면 비즈니스 레이어를 방문한 직후에 UI에서 데이터 액세스 레이어에 대한 액세스를 직접 또는 간접적으로 분리하고 관리 할 수 ​​있습니다. 귀하의 요구 사항에 따라 다릅니다.