답변:
웹 서비스 계층을 추가하면 필요한 CPU 성능과 처리 중에 사용 된 대역폭 측면에서 클라이언트를 더 가볍게 만들 수 있습니다. 두 가지 요소 모두 최종 사용자에게 매우 중요합니다.
웹 애플리케이션 계층을 도입하면 대량의 처리를 휴대용 모바일 저전력, 저 대역폭, 저 메모리 클라이언트에서 메모리 용량이 큰 플러그 인 고전력 고 대역폭 서버로 이동 요구-처리 및 통신 비용이 클라이언트에 비해 훨씬 적은 비용의 환경.
그러나 시스템을 분리함으로써 비즈니스 규칙, 데이터베이스의 구조 및 존재하는 버전을보다 강력하게 제어 할 수 있습니다. 모바일 클라이언트가 데이터베이스에 직접 연결하게되면 디자인이 해당 데이터베이스 구조와 "결혼"됩니다. 거의 모든 변경 사항으로 인해 클라이언트와의 호환성이 깨져서 앱 업그레이드가 꺼려 질 수 있습니다.
반면 사이에 웹 서비스를 추가하면 관리하기 쉬운 방식으로 인터페이스를 모바일 클라이언트로 발전시킬 수 있습니다. 예를 들어, 기존 인터페이스를 그대로 유지하고 "병렬"로 작동하는 새로운 인터페이스를 추가 한 다음 완전히 단일 클라이언트를 손상시키지 않고 데이터베이스를 재구성하십시오.
웹 서비스를 디자인하는 동안 꽤 기본적인 디자인 원칙을 따르는 경우, 배치 된 성숙한 서버 측 인프라를 재사용함으로써 상당한 이점을 얻을 수 있습니다. 예를 들어, 캐시 및 프록시 서비스를 무료로받을 수 있습니다.
마지막으로, 이것은 당신이 스스로 서비스 할 수없는 플랫폼에 응용 프로그램을 노출시키는 다른 개발자에게 문을 열어 궁극적으로 회사의 이점을 발휘할 것입니다.
앱과 DB 사이에 추상화 계층을 배치합니다. 이것은 다음과 같은 많은 장점을 제공합니다.
DB를 직접 노출시키지 않는 또 다른 이유는 전송입니다. JDBC와 대화하는 종류의 대부분의 관계형 데이터베이스는 일반적으로 공용 인터넷 용으로 설계되지 않았습니다. 무선 인터넷은 공공 인터넷의 끔찍한 끝입니다. 예외 처리는 번거로울 수 있으며 트랜잭션 손실을 피하기 위해 앱 내부의 웹 서비스 계층의 역을 작성하게 될 것입니다.
HTTP를 사용하는 새로운 종류의 데이터베이스가 있으며 이러한 종류의 데이터베이스에 적합 할 수 있습니다. 또한 데이터베이스에 일종의 응용 프로그램 코드를 넣는 방법이 특징입니다. CouchDb 또는 RavenDb를 살펴볼 수 있습니다. 둘 다 많은 현대적인 웹 서비스와 마찬가지로 json 및 http에서 작동하는 맵 / 축소 기능이있는 문서 데이터베이스입니다.