2013-08-02 2 views
1

Windows Azure에 위치한 데이터베이스에 연결할 수있는 Titanium Alloy 응용 프로그램을 개발 중입니다. 내가 알고 싶은 :Azure : 웹 서비스 생성 여부

  1. 윈도우 애저는 이미 REST API를 제공으로 필요한, 푸른 스토리지에서 데이터를 가져 오기위한 웹 서비스를 만드는 것입니다.
  2. 필자의 경우 웹 서비스를 만들 때 장단점은 무엇입니까?
  3. 웹 서비스를 작성하거나 REST API를 직접 사용하는 모든 측면 (성능, 오버 헤드, 보안 등을 포함)에서 어느 것이 더 바람직합니까?

답변

5

내가 티타늄 합금에 익숙하지 않다고 말하면서 시작 하겠지만 모바일 개발 프레임 워크임을 알 수 있습니다. 나는 스토리지 서비스를 히트하고자하는 모바일 솔루션에 대해 이렇게 대답 할 것입니다.

하나 - 웹 서비스를 프록시로 사용하지 않고 Azure 저장소의 데이터를 가져올 수 있습니다. 그러나 여기에는 몇 가지 단점이 있습니다. HTTPS를 말할 수 있고 결과를 해석 할 수있는 모든 것을 통해 REST API를 직접 사용할 수 있습니다.

두 - 테이블 저장소, 대기열 및 개인 BLOB 컨테이너에 대한 REST API로 직접가는 문제는 호출자가 데이터를 가져 오기 위해 자격 증명을 가져야한다는 것입니다. 스토리지 계정에는 하나의 자격 증명 유형 만 있으며 이는 계정 키와 계정 이름입니다. 현재 서비스의 여러 서비스 또는 측면에 대해 세분화 된 제어가 없기 때문에 이러한 자격 증명을 가진 사람은 계정을 삭제하지 않으면 해당 계정의 데이터에 원하는 모든 작업을 수행 할 수 있습니다 (물론 데이터를 확실히 삭제할 수는 있음). 계정을 삭제하거나 데이터를 찢어진 전체 영화 컬렉션으로 바꿀 수도 있습니다). 따라서 모바일 클라이언트 코드에 자격 증명을 포함 시키면 해당 자격 증명이 노출되며 이는 권장되지 않습니다.

이 옵션은 Shared Access Signatures (SAS)을 사용하는 것입니다. SAS 오퍼링은 자격 증명으로 서명 된 URL을 생성하며 특정 기간 동안 유효 할 수 있습니다. 여기서 문제는 클라이언트 용 SAS URL을 생성하기 위해 뭔가가 필요하다는 것입니다. 즉, 웹 서비스가 있어야합니다. 그러나 SAS가 생성되어 특정 기간 동안 사용되기 때문에 웹 서비스가 다시 실행되기 전에 서비스를 다시 시작해야하기 때문에 웹 서비스에 걸린 시간을 줄일 수 있습니다.

SAS를 위해 생성 된 URL이 단지 URL이라는 생각으로이 접근법에주의해야합니다. 이 URL을 가진 사람은 SAS를 만들 때 SAS에 할당 된 모든 권한을 수행 할 수 있습니다. 허락하신다면, 당신이 이러한 호출 HTTPS를하고 있다면 (그리고해야만합니다) 서명 부분이 암호화됩니다; 그러나 중간 공격에있는 사람은 실제로 발생할 수 있음을 알고 있어야합니다. 이 사람들을 다루기 위해 SAS 만료 시간을 초 또는 분으로 범위 지정하지만 그 시점에서로드에 따라 어쨌든 모든 것을 웹 서비스를 통해 라우트하고 인증보다 훨씬 편안 할 수 있습니다 일어나고있다. 예를 들어, 쿼리 사이에로드 또는 시간이 거의 없다면 SAS를 유효하게 유지하려는 것보다 오래 걸리는 경우이 방법이 적합하지 않을 수 있습니다. 나는이 "발레 키 (valet key)"패턴을 큰 성공에 사용하는 것을 보았습니다. 따라서 기호로 내주의를 기울이지 마십시오. 나쁜 아이디어입니다. 단지 그것을 사용하는 것이 무엇을 의미하는지 알 필요가 있습니다.

3 개 - 다른 서버로 일부 처리를 오프로드 할 수 있다면 좋습니다. 보안은 직접 (또는 ID 제공자를 통해) 인증을 처리하는 웹 서비스를 통과하는 것이 더 안전 할 것입니다. 그런 식으로 시스템에 대한 모든 액세스를 제어 할 수 있습니다. 성능면에서 현명한 선택입니다. 테이블 스 토리 지로 돌아서 돌리면 다중 홉이 있기 때문에 히트가 표시됩니다.이는 서비스 레벨에서 캐싱을 통해 완화 될 수 있습니다 (이는 완전히 다른 주제입니다).

보고 싶은 한 가지 옵션은 Azure Mobile Services입니다. 이것은 당신을 위해 백 엔드를 제공합니다. 기본적으로 SQL 데이터베이스를 사용하지만 new Custom API feature을 사용하면 테이블 스 토리 지 API를 사용하는 것을 포함하여 노드 스크립트에서 필요한 모든 작업을 수행 할 수 있습니다 (예제는 post by Chris Risner 참조). 이 접근법은 모바일 서비스가 그 역할을 수행하기 때문에 실행하는 웹 서비스에 대한 필요성을 없애지 만 가격 모델을 인식하고 자신의 시나리오를 기반으로 몇 가지 비교를 수행하고자 할 것입니다.

+0

답변이 훨씬 더 많이 있습니다. 저를 안내해 주셔서 감사합니다. 여기서 제시 한 시나리오를 반드시 고려하고 처리해 드리겠습니다. –

관련 문제