반응형

출처 : http://blog.naver.com/kissin?Redirect=Log&logNo=70018336386

이제는 웹어플리케이션도 오프라인에서 사용가능하다?

얼마전 어도비사에서 '아폴로'를 내 놓았다. 이름하여 Rich Internet Runtime. 간단히 말하자만 PC에 런타임을 설치한 후, 웹어플리케이션이 이를 이용 하게끔하는것이다. 이것이 있으면 Ajax나 Flex(어도비의 리치인터넷 개발 툴)가 데이터를 로컬 PC에 저장할 수 있어, 인터넷이 연결 안되어도 웹 어플리케이션을 사용할 수 있다. 물론 연결이 되면 서버와 데이터 동기화를 할 것이다.

기존의 국내에 x-인터넷 솔루션들 중에도 이와 유사한 런타임을 지원하였다. 그러나 데이터베이스 기능 보다는 PC로컬자원의 엑세스에 더 무게가 실려 있었다.

온/ 오프라인에서 모두 사용할 수 있는 웹어플리케이션은 더 이상 '웹'이라는 접두사를 가질 필요가 없을 것이다. 구글의 스프레드쉬트나 다큐먼트를 사용해본 사람은 UI나 기능 면에서 전혀 '웹'스럼지 않음을 느낄 수 있었을것이다. 물론 마이크로소프트의 오피스만큼의 거대함은 아니지만...(이는 곧 해결될것이다.)

지금 이글을 쓰고 있는 웹어플리케이션인 '스프링노트'는 본인이 MS워드보다 더 많이 사용하는 툴이기도 하다. 구지 웹이나 이메일등을 보내기위해 워드를 사용할 필요는 없기 때문이다.

서두가 길었나 보다.

구글에서도 오프라인에서 웹어플리케이션의 로컬 DB를 지원하는 런타임이 나왔다. 구글 기어(Google Gear)가 그것이다.

http://gears.google.com/ 에 가면 설치와 개발 API에 관한 정보를 얻을 수 있다. 아직 베타이지만 이미 구글 리더에 적용될 만큼 안정적이다.

오픈소스는 아니지만 누구나 설치하여 개발에 사용할 수 있는 무료 런타임이다.

이페이지에 가면 Developer Site링크가 있는데 그곳에 Simple Database Demo가 있다. 그곳에는 데모의 소스가 공개 되어 있는데 이를 통해 잠시 구글 기어를 맞보기로 하자


구글 기어는 자바스크립트로 프로그래밍 한다. 먼저 초기화 루틴을 보면


function init() {
  //구글 기어가 설치 되어있는지 확인
  if (!window.google || !google.gears) {
return;
}

try {
// 로컬 DB 생성
    db = google.gears.factory.create('beta.database', '1.0');
} catch (ex) {
setError('Could not create database: ' + ex.message);
}

if (db) {
    //테이블 생성
    db.open('database-demo');
    //SQL 문
    db.execute('create table if not exists Demo' +
' (Phrase varchar(255), Timestamp int)');

// 이전 데이터가 있으면 읽어서 보여 주는 함수
displayRecentPhrases();
}
...

}


자바의 JDBC에 익숙한 개발자라면 쉽게 이해할 것이다. 구글기어는 로컬 DB로 SQLite를 사용한다. 오픈소스 DB로 많은 언어를 지원하는 라이브러리 형태의 꽤 유명한DB이다.

마 지막 문장의 함수인 displayRecentPhrases()함수를 살펴 보자. 이 함수는 사용자가 데모 페이지에서 입력한 값을 로컬 DB로 부터 읽어 처음 화면에 출력해 준다. 따라서 이데모 페이지에서 아무런 문장을 입력한 후 브라우져를 죽이고 다시 기동하여 해당 페이지에 접속하면 이전 입력하였던 데이터를 다시 볼수 있다.


function displayRecentPhrases() {
var recentPhrases = ['', '', ''];

// We re-throw Gears exceptions to make them play nice with certain tools.
// This will be unnecessary in a future version of Gears.
try {

// 이곳에서 SQL문을 통해 데이터를 읽어 낸다.
var rs = db.execute('select * from Demo order by Timestamp desc');
var index = 0;
while (rs.isValidRow()) {
if (index < 3) {
recentPhrases[index] = rs.field(0);
} else {
db.execute('delete from Demo where Timestamp=?', [rs.field(1)]);
}
++index;
rs.next();
}
rs.close();

} catch (e) {
throw new Error(e.message);
}

...
}

그리 어렵지 않다고 느끼게 되는 것은 SQL문의 사용 때문일 것이다.

보안을 걱정하는 사람도 있을것이다. "아무 사이트나 내 로컬 DB의 데이터를 가져 가면 어떡하나..." 라고 말이다.

구글 기어는 방문한 페이지가 구글 기어를 액세스 할 경우 사용자에게 이를 확인 받는다. 또한 도매인이 생성한 테이블만을 접근할 수 있는 제한을 두어, 타 DB로의 접근을 막는다.


Ajax를 해본 사람이면 로컬 DB와 서버DB간 데이터 동기화를 쉽게 프로그래밍 할 수 있을것이다.


이 상으로 간단 하게나마 구글 기어에 대해 알아 보았다. 정말 누군가가 말했듯이 구글이 점점 마이크로소프트의 독점시장 중하나인 오피스 어플리케이션시장에 도전장을 내어가고 있는 듯하다. 그러나 아직 시기 상조인 이야기로도 생각 될 수 있다. 어쨌든 거대한 두 공룡의 경쟁을 보고 있는것도 흥미롭고, 구글 기어를 이용한 웹어플리케이션 개발에 대한 아이디어를 생각 하는것도 즐겁다.

반응형

'WebPrograming관련' 카테고리의 다른 글

구글 서비스를 사용하며...  (0) 2007.06.13
RIA 플랫폼 전쟁을 바라보며…  (0) 2007.06.13
ActiveX 문제의 진실  (0) 2007.06.13
Posted by Real_G