2012-06-04 3 views
1

향후 프로젝트에 대한 다음 계획과 관련하여 조언을 구합니다.모바일 클라이언트 - 서버 애플리케이션 전략에 대한 조언을 구하십시오.

  • 나는 모바일 클라이언트 쿼리합니다 (아이폰 OS, 안드로이드, 윈도우 폰 등)을 생성 할
    • 큰 그림 내 웹 사이트에서 데이터베이스 (읽기/쓰기)과 그 결과를 표시합니다.
    • 플러스 몇 가지 다른 기능 ...

내가 직접 클라이언트 (웹 서버 우회) 데이터베이스에 액세스하는 것은 특히 인터넷을 통해 나쁜 생각 것을 알고. 나는 대부분의 공유 웹 호스팅 계획이 이것을 어쨌든 금지한다고 생각한다. 그래서 내 의도 된 솔루션입니다 ...

  1. 모바일 클라이언트는 API 호출을 통해 웹 서버에 데이터를 보냅니다.
  2. 웹 서버는 REST API 호출을 처리하고 데이터베이스를 쿼리합니다. 웹 서버는 모바일 클라이언트와 데이터베이스 서버 간의 미들웨어로 작동합니다.
  3. 웹 서버는 DB 쿼리에서 결과를 받아 모바일 클라이언트에 전달합니다.
  4. 모바일 클라이언트는 클라이언트 쪽에서 데이터를 표시/조작합니다.

API 사용 경험이 Twitter, Instagram 및 Google 쇼핑 API 사용으로 제한됩니다. 내 경험에 비추어 볼 때 JSON 형식으로 모바일과 웹 서버간에 데이터를 전송하는 것이 가장 좋은 방법 인 것 같습니다.

자, 여기

  1. 가 어떻게 만이 API를 사용하여 로그인 한 사용자를 보장 할 수 있습니다 ... 내 문제인가? OAuth가 해결책입니까?
  2. REST API의 경우 RESTful 인 경우 더 좋을까요?

웹 사이트의 현재 환경은 내가 미래에 클라우드 기반 서비스로 이동 생각하고 있지만 PHP와 MySQL과 공유 호스팅에 있습니다. CodeIgniter 또는 CakePHP 또는 Apify를 사용하여 미들웨어를 구현할 계획입니다.

누구든지 위의 계획을 비판하거나 내 머리 속에있는 것보다 나은 대안을 제시 할 수 있다면 감사하겠습니다. 사전에

감사합니다.

+0

첫 번째 질문은 논쟁의 여지가 있습니다. 두 번째 질문은 의미가 없습니다. 아마도 당신은 HTTP API의 경우 RESTful이라면 더 좋을 것입니까? _이 경우에도 논쟁의 여지가 있습니다. – Herbert

답변

3

REST는 아마도 사용자가 찾고있는 아키텍처 중 가장 뛰어난 아키텍처 일 것입니다. 당신이 더 RESTful 일수록 좋다.

OAuth는 자격 증명을 사용하는 웹 사이트를 처리하는 인증 프로토콜입니다. 인증인증과 다르지만 인증을 위해 타인의 인증을 사용할 수 있습니다.

OAuth의 선택은 사용자가 구축중인 서비스에 따라 다릅니다. 예를 들어, 애플리케이션이 Twitter를 기반으로하는 경우 Twitter OAuth를 인증에 사용하는 것이 좋습니다.

서비스가 자체 자격 증명을 제공 할 경우 모든 사용자가 자신의 사용자 이름/암호를 저장하므로 OAuth가 최선의 선택이 아닐 수 있습니다. 이 시나리오에서는 필요하지 않은 OAuth 클라이언트와 OAuth 서버를 설정해야합니다.

자신의 인증을 위해서는 HTTP Digest Auth을 선택하는 것이 좋습니다. 구현하기 쉽고 많은 라이브러리가 이미이를 지원하며 대부분의 경우 충분히 안전합니다.


PHP에서는 세션과 쿠키를 피하십시오. REST는 상태 비 저장이며 이러한 기능은 서버에서 클라이언트 상태로 가득 차 있습니다.

서비스를 더 많은 서버로 확장해야한다면 그 사이에 세션을 동기화하는 것이 쉽지 않습니다.

Expires, ETagLast-Modified과 같은 캐시 헤더를 처리하십시오. API의 전반적인 성능을 향상시키고 캐시 할 수있는 리버스 프록시 (서버와 클라이언트 간의 미들웨어)를 설정할 수 있습니다.

API의 공개 데이터에 인증이 필요하지 않아야합니다. 인증 된 데이터를 캐싱 할 때 다른 사용자간에이 캐시를 공유 할 수 없습니다. 공용 데이터 캐시를 공유 할 수 있습니다.

JSON과 XML은 모두 다루기 쉽고 조작하기 쉽습니다. 때로는 JSON이 더 좋으며 때때로 XML이 있습니다. 이러한 형식의 차이점에 대한 자세한 내용은 this answer을 참조하십시오.

Respect\Rest, VarnishFrapi을 살펴보십시오. 이것들은 REST API를위한 훌륭한 도구입니다.