2009-06-12 7 views
3

오프라인 사용 가능 웹 응용 프로그램을 작성하려고합니다.오프라인 웹 응용 프로그램

다음과 같이 내가 고려하고 아키텍처는 다음과 같습니다
웹 서버 (원격) < -> 웹 서버/캐시 (로컬) < -> 브라우저/프리즘

나는이 모델에 대한 구상 장점을 위치 :

  • 배포이 방법
  • 오프라인 사용
  • UI (HTML/JS) 동기화의 모든 장점과 함께, 웹 기반 것은 아닌 문제
  • 데이터 동기화는 대부분 편안한 패러다임 내에서 한 내가 체재로
    • 을 자동화 할 수 있습니다
    • 나는대로이 손상 될 수 있습니다 필요하지만 수동 동기화는 크게
  • 로컬 웹 서버가 수술 남아있을 것입니다 서비스로 시작; 나는 뒤에 - 더 - 장면 데이터 동기화를 포함하여, 임의의 코드를 실행할 수 있습니다
  • 나는 완전한 데이터의 제어 (위치, 크기 제한 없음, 무의식적으로 사용자 삭제의 가능성이없는) 확장자가
  • 프리즘은 계속 허용 할 수있다 자바 스크립트 폐쇄 소스

이 아키텍처에 대한 의견이 있으십니까? 왜 내가 사용해야하지 않아야합니까? 나는 특히 성공/공포 이야기를 찾고 있습니다.



긴 버전

주 :

  • 사용자되지 매우 컴퓨터로 글을 읽고 있습니다. 예를 들어 기어 작동 방식을 설명하는 표면적으로도 은 전체적으로 입니다.
  • 데이터가 실제로 손실 된 경우에도 책임을지지 않습니다. (컴퓨터에서 임의의 디렉토리를 삭제하지 않은 경우)
  • 사용자가 컴퓨터에 무언가를 설치하도록 요구할 수 있습니다. 100 % 웹 기반이거나 샌드 박스에서 실행될 필요는 없습니다.

이 문제에 대한 일반적인 해결책은 어떻게 든 적절하다고 느끼지 않습니다. 다음은 각각에 대한 간단한 분석입니다. 기어/HTML5 :

데이터에 대한 통제는 경고
  • 데이터 (브라우저에서하지 균일하고 플랫폼)
  • 사용자가 필요로의 위치에 대해 아무런 제어없이 사용자가 을 삭제할 수 없습니다
    • 동기화를 위해 브라우저에서 애플리케이션을 열 수 있습니다. 자동적 인가, 뒤에 - 더 - 장면 동기화
    • 다른 브라우저는 하나의 시스템에서, 다른 데이터의 통일 된 뷰를 처리하지 않습니다
    • 제한 디스크 공간을 사용할 수
    • 동기화, SQL 기반 저장소가이 고통을 완전히 수동 수 없습니다 (SQL 테이블이 완전히 복제 되었다면 덜 복잡해졌지만 제 경우에는 그렇지 않습니다). 이것은 매우 복잡한 문제입니다.
    • 내 코드 (HTML/JS)

    어도비 AIR 전래 거의 완전히 개방 될 것이다 :

    • 에는 서버 측 포함되지 않습니다 위의
    • 수의 일부 (!) 백그라운드에서 실행되지만 윈도우가 아님
    • 수동 동기화
    • 웹 캐싱이 복잡해 보인다
    • 나는 문제가 일부 시스템에 설치 했어, 어떻게 든 kludge 같은 느낌

    내 요구 사항은 다음과 같습니다

    • (해야한다) 웹 기반. 수의 경우 사용자 간 데이터 공유는 예를 들어 입니다.
    • 오프라인 (필수). 응용 프로그램은 오프라인에서 사용할 수 있어야합니다 (드물 긴하지만 예외가 있음).
    • 빠른 개발 (필수). 나는 훨씬 더 많은 비즈니스 자원을 가진 플레이어를 상대하는 한 명의 개발자 다.
    • 닫힌 소스 (사용하기 좋은 곳). 예, 오픈 소스 모델을 이해합니다. 그러나,이 시점에서 나는 경쟁자들이 나를 너무 쉽게 복사하는 것을 원하지 않는다. 다시 말해서, 그들은 더 많은 자원을 가지고있어서 열심히 일할 수 있고, 나보다 더 짧은 시간에 더 나아질 수있었습니다. 분명히, 그들은 여전히 ​​나 자신의 코드를 개발할 수있다. CRM을 제품에서
  • +0

    귀하의 요구 사항이 이상하다고 생각하고 Google 기어에 대한 귀하의 평가에 결함이있는 것으로 생각됩니다. –

    +1

    이상한 요구 사항은 불행히도 시장 상황에 따라 결정됩니다. Gears에 대한 나의 평가에 결함이 있다고 생각하는 이유를 설명해 주시겠습니까? Gears에 대해 빠진 것이 있습니까? 고마워. –

    답변

    10

    공포 이야기 :

    응용 프로그램이 많이 사용하는 경우, 사용자의 컴퓨터에 데이터의 전체 복사본을 저장하는 실현성입니다
    • .
    • 응용 프로그램에 많은 사용자가 업데이트 할 수있는 데이터가있는 경우 복제가 간단하지 않습니다. 로컬 변경 사항이있는 세 명의 사용자가 동기화되면 누가 이깁니 까?
    • 실제로 이것은 사용자가 원하는 것이 아닙니다. 그들은 어디서나 최신 데이터에 실시간으로 액세스하기를 원합니다. 우리는 진실의 단일 소스에 모바일 인터페이스를 제공하는 것이 더 나았습니다.
    +7

    "진실의 단일 소스에 대한 모바일 인터페이스". <= 최고 – Junto

    0

    안정적으로이를 수행하는 유일한 방법은 레코드 수준에서 일종의 "체크 아웃 및 잠금"을 제공하는 것입니다. 사용자가 원격으로 갈 때 작업하려는 레코드를 체크 아웃해야합니다. 이 체크 아웃은 로컬 DB에 데이터를 복사하고 레코드가 체크 아웃되는 동안 중앙 DB의 레코드가 수정되지 않도록합니다.

    로밍 사용자가 다시 연결하여 잠긴 레코드를 다시 확인하면 데이터가 중앙 DB에서 업데이트되고 잠금이 해제됩니다.

    1

    로컬 웹 서버를 서비스로 실행하는 부분은 현명하지 못한 모양입니다. 클라이언트에서 사용할 수있는 특정 운영 환경에 묶여 있다는 사실 이외에도 최종 사용자에게 서버를 관리하는 데 따른 추가 부담이 있습니다. 또한 로컬 웹 서버 자체를 웹 기반 모델로 배포 할 수 없습니다.

    모두 나는 실제 "로컬 웹 서버"의 전망에 너무 흥분하지 않았습니다. 매끄러운 오프라인 웹 저장을위한 제안의 일환으로 웹 브라우저에서 실행되는 내장 웹 서버를 제안 했으므로 의심의 여지가 없습니다. BITSY 0.5.0 (http://www.oracle.com/technology/tech/feeds/spec/bitsy.html)

    어떤 비용 으로든 데이터 손실을 막기위한 귀하의 요구 사항이 얼마나 중요한지 궁금합니다. 오프라인 상태에서 디스크가 충돌하면 어떻게됩니까? 또는 장치가 손실 되었습니까? 일반적으로 로컬 캐시가 서버보다 먼 거리에 있기를 원하지만 서버가 클라이언트 뒤에있는 경우 데이터 손실을 허용 할 수 있습니다. 여기에는 약간의 계약 협상이나 훈련이 필요할 수 있습니다. 실제로 이것은 거래 차단자가 아닐 수도 있습니다.

    관련 문제