2011-12-04 2 views
6

MFC/Qt/등을 기반으로하는 독립 실행 형 GUI가 아닌 브라우저 기반 UI가있는 로컬 응용 프로그램을 만들고 싶습니다. 로컬 컴퓨터에서 웹 서버를 실행하지 않으려면 어떻게 구현할 수 있습니까? 내 애플 리케이션의 역동적 인 부분? 브라우저가 컴퓨터의 로컬 스크립트, 실행 파일 또는 라이브러리를 가리킬 수 있습니까? 로컬 데이터베이스를 직접 사용할 수 있습니까>이 접근 방식에는 어떤 함정이 있습니까?서버가 필요없는 로컬 웹 응용 프로그램을 작성할 수 있습니까?

+0

이 결정을 내리는 과정은 무엇입니까? – u07ch

+0

HTTP + CSS는 동적이고 이식 가능한 GUI를 만드는 데 적합합니다. 그러나 서버는 로컬 웹 응용 프로그램의 불편 함을 나타냅니다. 아마도 설치가 해발 고도 등을 필요로합니다. 따라서 그 이유는 가능하면 서버를 피하려고합니다. – paperjam

+2

@paperjam : 서버에는 설치에 루트 권한이 필요하지 않습니다.80 번 포트에서 실행해야하지만 다른 포트에서 서버를 실행할 수 있습니다. 웹 응용 프로그램의 데스크톱 버전을 구현하기 위해이 작업을 수행했습니다. 기본적으로 임의의 포트에서 실행되는 최소한의 펄 서버 (우리의 앱은 perl)와 서버에 연결 가능한 커스텀 웹킷 실행 파일. 우리는 커스텀 브라우저를 구축하기 위해 webkit을 선택했습니다. Windows, Mac 및 Linux의 3 가지를 지원하기 때문입니다. – slebetman

답변

4

예, 제한 사항이 있습니다. 브라우저가 열리는 대신 스크립트 원본 코드를 실행하기 때문에 CGI 작업을 수행 할 수 없다는 것이 가장 큰 한계입니다. 여기에는 몇 가지 의미가 있습니다.

  1. 데이터베이스에 연결할 수 없습니다. 따라서 상태 및 사용자 데이터를 저장하는 것과 같은 공통적 인 작업을 수행하기가 어렵습니다.
  2. Content-type을 설정할 수 없습니다. 즉, SVG 파일을 제공하거나 XMLHttpRequest에서 XML을 사용하는 것과 같은 멋진 XML 작업을 수행 할 수 없습니다.
  3. 동적 이미지 (ImageMagick 또는 GD 사용)를 생성 할 수 없습니다. HTML5에서는 캔버스로 할 수 있습니다.
  4. 파일 시스템을 읽거나 쓸 수 없습니다. 다시 말하지만 이것은 데이터 저장 능력을 제한합니다. 그러나 올바른 사용자 권한으로 수행 할 수 있습니다 (아래에서 자세히 설명).

그러나 해결 방법이 있습니다. HTML5를 사용하면 로컬 저장소에 데이터를 저장할 수 있지만 이전 브라우저에서는 작동하지 않습니다. 데이터를 쿠키에 저장할 수는 있지만 크기 제한이 있습니다. 마지막으로 실제로 파일에 저장할 수 있습니다. 스크립트가이를 수행 할 수 있도록 브라우저 환경 설정을 수정하도록 사용자에게 지시해야하지만 수행 할 수 있습니다. 한 가지 예는 TiddlyWiki입니다. 하나의 HTML 파일에 포함 된 개인 위키입니다. 새로운 콘텐츠를 저장할 때마다 페이지가 수정되어 저장됩니다. 그들이 영감을 얻기 위해 어떻게하는지 볼 수 있습니다.

1

순수한 HTML 경로를 원할 경우 HTML5를 사용하면 브라우저에서 로컬 데이터베이스를 만들 수 있습니다. 충분한 자바 스크립트 코딩 경험을 통해 HTML 파일을로드하는 대신 JS에서 모든 것을 렌더링하는 전체 사이트를 작성할 수 있습니다. 하나의 파일을로드하고 자바 스크립트 엔진을 사용하여 모든 것을 렌더링합니다.

의미있는 앱이라면 화를 내지 않으면 서 그런 식으로 쓸 수 있습니다.

Windows 사용자는 속임수를 쓸 수 있으며 Active x/vbscript를 사용할 수 있습니다. 그렇다면 일회성 .net 응용 프로그램을 작성하지 않는 것이 좋습니다. 일부 웹 서버 응용 프로그램 구성 요소가 없어도 브라우저는 기존 데이터베이스 엔진과 통신 할 수 없습니다.

2

이 시나리오에서는 스크립팅 측면에서 자바 스크립트 만 사용할 수 있다고 생각합니다. (또는 자바 애플릿이나 플래시,하지만 당신이 그것을 원하지 않는다고 생각합니다)

QT의 임베디드 웹킷을 살펴 보시기 바랍니다. 이를 사용하여 간단한 QT 앱에 브라우저를 내장하고이를 대부분의 UI에 사용하면 백엔드 용 C++/QT의 힘을 얻을 수 있습니다. QT는 C++ 코드를 Javascript에 직접 연결할 수 있습니다.

QWebFrame class 메서드, 특히 addToJavaScriptWindowObject 메서드 및 Qt WebKit Bridge 메서드를 참조하십시오.

관련 문제