2013-11-23 2 views
1

나는 웹 폰트와 백그라운드 서비스로 구성된 프로젝트를 진행 중이다. 웹 프론트 엔드는 사용자가 액세스 할 수 있으며 C++로 작성된 백그라운드 서비스와 통신해야하며 다른 머신에서 실행됩니다.JS 프론트 엔드 <-> C++ 백엔드 통신 (다른 서버)

FYI : 백그라운드 서버 (나중에 '백엔드'라고 함)는 http 서버와 같이 작동하며 특정 포트에서 들어오는 요청을 수신 대기합니다.

지금까지 프론트 엔드는 xml 또는 json 형식의 데이터가 포함 된 간단한 http 요청으로 백엔드에 명령을 보냅니다.

글쎄, 여기에 내 문제가있다 : 사용자가 프론트 엔드에서 데이터를 입력하기 때문에, 프론트 엔드는 백엔드에서 일부 데이터를 사용자에게 표시하거나 내부적으로 데이터베이스에 사용하기를 기대한다.

백엔드에서 프론트 엔드로 보내는 데이터를 처리하는 방법을 권장 할 수 있습니까?

현재 아이디어 : 백엔드는 시작할 때 링크를 얻습니다. 핑백 URL의 일종으로, 프론트 엔드로 돌아갈 데이터가 있으면 호출 할 수 있습니다. 호출 된 파일은 들어오는 데이터를 저장 어딘가에 입력합니다. memcache 또는 mem 전용 데이터베이스. 자바 스크립트에서 Frontend를 작성하려고합니다. Ember.js 나 Angular.js 같은 프레임 워크를 사용하여 내부적으로 자동으로 데이터 업데이트를 처리 할 수 ​​있습니다. 어느 쪽이든 가능한 한 적은 리소스를 사용하여 프론트 엔드를 최대한 실시간으로 업데이트해야합니다.

현재 나의 접근 방식이 효과가 있습니까 아니면 완전히 바보입니까?

그래서 일반적으로 : 위의 구성표를 향상시키는 방법이나 다른 방법을 제안하는 방법을 알려줄 수 있습니까?

나는 이미 이걸 봤어.하지만 내가 찾은 건 모두 Designing Javascript frontend <-> C++ backend communication 뿐이 었어.하지만 그는 단지 같은 기계에서 백엔드를 원했어. 나는 다른 것들을 가지고있어.

편집 : 가장 중요한 세부 정보를 잊어 버렸습니다. 현재 많은 클라이언트를 처리하는 백엔드 인스턴스가 하나만 있습니다. 프론트 엔드의 모든 사용자는 클라이언트 매니저 (백엔드)와 연관된 적어도 하나의 클라이언트를 가지고 있습니다. 따라서 관리자로부터 많은 데이터가 반환 될 수 있습니다.

여기 실제 문제는 (또는 적어도 가장 큰 것이라고 생각합니다.) 어떻게 반환 된 데이터를 각 단일 클라이언트에 배포해야하는지입니다.

Padmak

프론트 엔드로 백엔드에서 데이터 전송을 처리 할 수있는이 개 좋은 방법이 있습니다
+0

나는 관리 서버의 주소가 비밀로 유지되어야하므로 클라이언트가 Node.js와 같은 것을 통해 직접 클라이언트에 연결할 수 없으므로 또 다른 접근법을 생각해 냈습니다. 그러나 내가 프록시와 같은 것을 설치하면이 접근법을 따라갈 수 있습니다. 하지만 http 서버를 '정상적인'tcp 서버로 변경하려면 많은 노력이 필요합니다.이 새로운 솔루션에 관한 몇 가지 팁을 원합니다. 어떤? – Padmak

답변

0

.

  1. 클라이언트 측 조사 일부 구간에 대한 백엔드, 이것은 매우 일반적인 관행,하지만 당신은 백만 콜백

  2. 사용 WebSocket을하기 위하여려고하는 경우 매우 비효율적이다 http://en.wikipedia.org/wiki/WebSocket

+0

많은 클라이언트를 처리하는 관리자를 하나만 사용하고 있기 때문에 가장 큰 문제는 반환 된 데이터를 해당 클라이언트가 속한 각 클라이언트에 배포하는 방법입니다. 나는 당신의 추천이 이것을 할 수 있는지 모른다. – Padmak

+0

나는 매니저가 무엇인지 완전히 이해하고 있는지 확신 할 수 없다. 내가 틀렸다면 수정 해주세요. Chrome에서 Joe Blow (사용자)가 자신의 사용자와 연결된 1 이상의 고객을 보유하고 있음을 모두 시각화하려고합니다. 각 클라이언트는 자체 웹 서버를 가지고 있습니까? – Kingpin2k

+0

Bob은 계정이 있으며 프론트 엔드에 로그인합니다. 그는 새로운 '직업'을 창출합니다. 프론트 엔드는 새 프로세스를 작성하는 백엔드에 연결합니다. * oops가 너무 빨리 보냈습니다. 그런 다음 관리자는 데이터를 사용자에게 다시 보내려고합니다. 새 클라이언트를 시작하고 데이터를 처리하는 관리자에는 하나의 웹 서버 만 있습니다. – Padmak

0

백엔드 웹 서비스로 C++에 익숙하지 않지만 포트에서 수신 대기하고 URL을 처리하는 경우 (일부 유형의 컨트롤러를 통해?) 아약스가 가장 좋은 솔루션이 될 것입니다. 프론트 엔드에서 데이터를 게시하고 서비스의 데이터를 반환하는 url을 설정할 수 있습니다. angular.js와 ember.js를 태그로 추가 한 것으로 나타났습니다.

둘 다 사용하는 경우 ajax를 사용하는 데 훌륭한 프레임 워크가 있지만 anger는 확실하지 않지만 angular.js는 Google 검색의 가치가있는 "리소스"를 사용합니다.

희망 사항을 올바르게 이해했습니다.

또한 각도를 사용하고 있고 실시간으로 모델과 데이터 바인딩 및 $ watch 메소드를 살펴야한다고 생각하면. 프론트 엔드에서 입력이 즉시 변경된 후에 아약스 호출을 보낼 수는 있지만, 일종의 타임 아웃을 추가하여 요청을 백엔드에 끊임없이 보내지 않도록 할 수 있습니다.

+0

매우 흥미 롭습니다. 이것을 잘 알고 있습니다! 한 가지 문제가 남아 있지만 : 여러 프런트 엔드 인스턴스로 백엔드 (한 번에 여러 클라이언트의 데이터를 반환)에서 데이터를 전달하려면 어떻게해야합니까? 다소 모호하거나 불분명하지만 죄송합니다. 비 원어민의 강연자 인 ^^ – Padmak

+0

은 문제가 없으므로 정확하게 이해하면 여러 프런트 엔드에서 실시간으로 업데이트하고 싶습니다. 인스턴스? 그렇다면 웹 소켓과 같은 것이 필요합니다. 조사를 시작해야합니다.하지만 리소스를 일부 제공 하겠지만, C++로 처리하는 방법을 모르겠습니다. – kkemple

+0

Mmmh : 다중 프런트 엔드가 연결되어 있습니다. 단 하나의 백엔드, 그래서 어떻게 내가 각 프론트 엔드에 백엔드에서 데이터를 전달할 수 있을까? 그것의 너무 열심히 설명하기 : / – Padmak

관련 문제