이것에 대해 많은 생각의 학교가 있으며, 확실히 어떤 방법도 보편적으로 "올바른 방법"이라고 부를 수는 없지만, 다른 모든 방법은 보편적으로 "잘못된 방법"이지만 서버 쪽에서 비즈니스 로직을 분리해야하는 여러 가지 이유가 있습니다 RESTful 서비스를 통해 해당 오브젝트 및 서비스에 액세스하십시오.
짧은 대답은 주로 위험 관리, 성능 모니터링 및 개선에 관한 것입니다.
상세히:
가장 중요한 이유는 보안입니다. 클라이언트는 가비지 이외의 다른 것을 서버에 제출할 것을 절대 신뢰할 수 없으며, 보안 측면을 서버 측에 유지함으로써 악의적 인 사용자가 시스템을 손상시킬 수있는 잠재적 위험을 격리 할 수 있습니다. Javascript는 완전히 클라이언트 측이며 사소하게 변경 가능하므로 출력을 신뢰할 수 없습니다.
두 번째 이유는 우려의 분리입니다. 귀하의 Javascript 프로그래머는 보안 전문가가 아닐 수도 있으며, 보안 전문가는 Javascript에 능숙하지 않을 수도 있습니다. 비즈니스 로직을 프리젠 테이션 로직에서 분리하면 자바 스크립트가 권한 수준 이상의 리소스에 액세스 할 수없고 오류가 발생하므로 처리가 스크립트 프로그래머의 이전에 있기 때문에 이러한 문제를 피할 수 있습니다. 마찬가지로 보안 담당자는 보안 유지 방법을 확인하기 위해 Javascript를 디버깅하지 않습니다.
세 번째 이유는 성능입니다. 비즈니스 로직은 잠재적으로 서버 및 데이터베이스 리소스를 요구할 수 있습니다. 해당 논리를 UI 요소와 분리하여 유지하면 응용 프로그램의 해당 부분 만 확장하여 병목 현상을 훨씬 쉽게 해결할 수 있습니다. 또한 비즈니스 프로세스가 서버에서 실행되는 경우 시스템 또는 데이터베이스 백엔드를로드하는 비즈니스 프로세스를 분리하는 것이 훨씬 쉽습니다.
여기서는 여러 비즈니스 프로세스에서 동일한 데이터를 사용하기 때문에 서버 측에서 캐싱을 구현하여 클라이언트 측 코드에 액세스 할 수없는 / 안전하지 않은 전체 시스템로드를 줄일 수 있습니다.
마지막으로 ACID 표준을 유지하려면 Business Logic이 실제로 서버에 있어야한다고 제안합니다. 서버에 대한 데이터베이스 연결만으로 웹 브라우저에서 실행 된 결제 제품을 유지 관리하는 것을 기억합니다. 브라우저가 닫히거나 충돌하여 일일 청구 (좋은 날에는 1 시간 이상 소요될 수 있음)가 중단 된 경우 데이터베이스로 인한 혼란을 해결하는 데 몇 시간이 걸릴 수 있습니다. 일관성이없는 상태 여기에는 신용 카드도 포함되므로 결제 기록도 프로세서와 비교하여 확인해야합니다!
응용 프로그램 또는 데이터베이스 수준에서 트랜잭션을 유지 관리하는 모든 언어에 대한 프레임 워크가 있기 때문에 서버 측 비즈니스 로직은 ACID 업데이트를 보장하기에 대부분 사소합니다. 웹 클라이언트에서 여러 업데이트를 통해이 작업을 수행하는 경우 어느 시점에서 일관성이없는 상태가되어 응용 프로그램에 영향을 줄 수 있습니다.
RESTful 서비스를 단순히 데이터베이스에 액세스하는 방법으로 생각하고 싶더라도 재난에 대한 좋은 레시피이므로이 함정에 빠지지 않아야합니다. RESTful 서비스를 통해 공개하는 오브젝트 모델은 데이터베이스와 관련이있을 수 있지만 CRUD 엔진으로 사용하는 대신 비즈니스 로직을 실제로 캡슐화해야합니다.