2010-12-07 4 views
0

첫 번째 웹 서비스를 만들고 싶습니다. 처음부터 올바른 방향으로 향하고 싶습니다. 여기 웹 서비스 구축 : 어떤 옵션이 있습니까?

이 일어나야 상호 작용은 다음과 같습니다

  • 는 첫째, 스마트 폰 또는 컴퓨터 내 웹 서비스에 데이터의 덩어리를 보내드립니다.
  • 웹 서비스는 정보를 데이터베이스에 유지합니다.
  • 알고리즘은 주기적으로 데이터베이스에 액세스하고 수정합니다. (? 방법) : 나는 이런 식으로 뭔가를 구현하기 위해 배울해야합니까 기본적인 것은 무엇
  • 알고리즘은 주기적으로 번들 데이터와 스마트 폰 또는 컴퓨터

큰 문제는 그것을 보낼 것인가?


지금 여기에 내가 또 내 머리에 뒹굴고있어 작은 두서없는 질문입니다. 원할 경우 자유롭게 답변하십시오. (... 어쩌면 그들에게 여분의 신용을 고려?)

  • 나는 편안하고 서비스에 대한 좋은 일들이 많이 나는 위키 기사를 읽은 들었어요, 그리고 심지어 트위터의 웹 서비스와 주위에 해본 적이있는 RESTful입니다. 이것은 분명한 방법인가요? 아니면 아직도 다른 것을 고려해야합니까?
  • 데이터베이스에 항목을 유지하기 위해 사용하는 프로그래밍 언어는 무엇입니까? 나는 PHP가 이것을위한 첫 번째 선택 일 것이라고 생각하고있다.
  • 데이터베이스와 상호 작용하는 데 사용하는 프로그래밍 언어는 무엇입니까? 나는 아마 받아 들일만한 무엇이라도 생각하고있다, 그렇지?
  • 데이터베이스에 대한 동시 액세스에 대해 걱정해야합니까, 아니면 MySQL이 저를 처리합니까? (나는 데이터베이스에 대해 상당히 익숙하다.)
  • 어떻게 정보를 다시 보내나요? 분명히 HTTP 요청에 대한 회신이라면 아무런 문제가 없지만 회신에 시간이 오래 걸릴 수 있습니다. 대답을 얻을 때까지 HTTP 요청을 미결 상태로 유지해야합니까?
  • 정보가 전송되었는지 여부에 관계없이 스마트 폰에 정보를 전송해야 할 때가 있습니다. 에게 내 정보를 보내려면 어떻게해야합니까? 내가로부터오고 위치를 알고 도움이 될 수

기타 정보 :

  • 나는 자바, C#을, C++, 파이썬 꽤 잘 알고. 나는 PHP, Javascript, Ruby로 놀아왔다.
  • 저는 데이터베이스에 비교적 익숙하지 않지만 기본적인 아이디어를 얻었습니다.
  • 저는 이미 서버를 설치했고 기본 램프 스택을 사용하고 있습니다. 의 내 이해 L, , 및 은 상당히 기초적입니다.
+4

큰 질문을 여러 개의 작은 질문으로 나누는 것을 고려하십시오. –

+0

작은 질문부터 시작하여, 한 번에 엄청난 질문을 던지십시오. –

+0

주된 질문은 굵은 글씨로 생각됩니다. 예를 들어 ... * 일반적인 * 것들을 배워야 만합니까? 이 용도로 일반적으로 사용되는 프레임 워크가 있습니까? 내가 읽어야 할 일련의 위키 백과 항목이 있습니까? 번잡 거리는 질문에 대한 구체적인 답변을 강요받지 마십시오. (비록 여기에 어떤 대답을 크게 주시면 감사하겠습니다.) – JnBrymn

답변

1

언어 : GIL은 사용자의 요구 사항 (예 : 멀티 스레딩)에 특별히 관심이 없다고 가정하면 사용하기 쉽습니다. 그것은 대부분의 데이터베이스에 대한 드라이버를 가지고 있으며 수많은 프로토콜을 지원합니다. 웹 프레임 워크가 여러 개 있습니다. 가장 인기있는 것은 Django입니다.

프로토콜 : 당신이 HTTP를 경우에 초점을 맞춘 연구 SOAPREST. SOAP은 장황한 경향이있어서 많은 양의 데이터를 이동하는 데 문제가 발생합니다. 다른 한편, 다른 옵션을보고 있다면 socket programming과 Google의 protocol buffers과 같은 바이너리 형식 일 수 있습니다. 플래시 또한 가능합니다 (Flash Remoting 참조). 바이너리 옵션을 사용하려면 사용자가 기기 (예 : 애플릿 또는 독립형 앱)에 무언가를 설치해야합니다.

회신 : : 프로세스가 오래 실행 중이며 완료되면 클라이언트에 알림을 받아야하는 경우 클라이언트 용 앱을 개발하는 것이 좋습니다. 브라우저는 정기적으로 폴링하기 위해 자바 스크립트로 프로그래밍 할 수 있거나 실시간 동영상에 플래시 무비를 삽입 할 수 있지만 이는 다소 까다로운 브라우저 프로그래밍 비트입니다. 무선 전화를 다루는 경우 SMS를보십시오. 그렇지 않으면 클라이언트가 상태를 알 수 있지만 알림을 보내지 않을 수 있습니다 (예 : 푸시 대 풀). @jcomea_ictx가 작성한대로 AJAX는 브라우저 기반 솔루션 인 경우 옵션 인 - 연구 jQuery입니다.

동시 처리 : 데이터베이스와 관련하여 의미하는 것이 무엇인지 이해합니다. 같은 데이터에 여러 번 글을 쓰면 어떻게 될지 생각해보십시오. 데이터베이스가 원하는 방식으로이 문제를 해결할 수있는 것은 아닙니다.

+0

이것은 매우 좋은 대답입니다. 독서 자료에 대한 무수한 링크를 가져 주셔서 감사합니다. 그러나 두 가지 점을 명확히하십시오. 1) * GIL이 나를 염려합니까? 나는 하나의 쓰레드/프로세스 (나는 어느 것을 알지는 못한다)와 요청을 다루고 다른 쓰레드/프로세스는 계속해서 데이터베이스를 처리하고 수정하려고한다. 2) 설문 조사를지지하는 것 같아요. – JnBrymn

+0

GIL이 문제인지 확실하지 않은 경우에는 아마 그렇지 않을 것입니다. 문제가되기 전에 수많은 CPU 관련 활동을 수행해야합니다. 푸시/폴링 - 메시지를받을 수있는 브라우저와 독립적 인 클라이언트를 작성한 경우 push - AJAX를 통한 브라우저를 사용하여 JavaScript 함수 setInterval()을 조사하십시오. – orangepips

1

프로그래밍을 좋아하시는 분은 이미 Python을 사용하고 계시다면 PHP를 사용하지 마십시오.후자는 훨씬 깨끗하고 유지 보수가 쉬운 코드를 만듭니다. 은 PHP로는 좋은 코드 인을 작성할 수는 없지만 상대적으로 희귀합니다. MySQL과의 상호 작용을 포함한 모든 서버 측 항목에 Python을 사용할 수 있습니다. 표준 CGI 또는 FCGI 또는 mod_python을 사용하십시오.

데이터베이스의 경우 트랜잭션을 사용하면 충돌이 제거됩니다. 그러나 대개 충돌이 발생하지 않도록 시스템을 설계 할 수 있습니다. 예를 들어, 각 삽입에서 자동 증가 기본 키 ID를 사용하면 모든 항목이 고유한지 확인할 수 있습니다.

AJAX 방법론을 사용하거나 SMS 또는 다른 기술을 사용하여 "밀어 넣기"등의 방식으로 Javascript로 데이터를 "가져올"수 있습니다.

답장에 시간이 걸리면 AJAX를 사용하여 "폴링"할 수 있습니다. 이것은 매우 일반적인 기술입니다. 서버는 결과가 준비 될 때까지 내장 새로 고침을 사용하여 "우리가이 작업을하고 있습니다"(또는 이에 상응하는) 결과를 반환합니다.

저는 REST에 대한 전문 지식이 없지만 특히 사용자 입력에 단순히 응답하는 대신 폴링을 사용할 때는 AJAX가 RESTful 원칙을 위반했다고 말할 수 있습니다. 그러나 당신은 순정 주의자가 될 수 있습니다. 그렇지 않으면 무엇이든 할 수 있습니다. 그것은 당신에게 달려 있습니다.

나는 SMS 이외의 다른 "푸시 (push)"기술을 사용 해본 적이 없다고 생각합니다. 많은 기업들이 무료 SMS 게이트웨이를 사용했던 몇 년 전이었습니다. 따라서 데이터를 "푸시"하고 싶다면 다른 누군가가 대화에 참여하기를 바랍니다!

+0

SMS는 아마도 내 사건에서 작동하지 않을 것이다. b/c 얼마나 자주 정보를 보낼지 고려하면 비용이 많이 든다. 내가 확실히 듣고 있기 때문에 계속 이야기해라! – JnBrymn

0

Java를 사용하십시오. Java EE 6의 최신 버전은 RESTful 및 SOAP 서비스 코딩을 쉽게 만들어 주며 데이터베이스와도 쉽게 상호 운용됩니다.

스크립트 대신 진정한 언어를 사용하면 서버의 완전한 상태, 강력한 타이핑, 멀티 스레딩 및 유용 할 수도 있고 사용하지 않을 수도있는 수많은 다른 것들이 있지만 이점을 통해 프로젝트를 미래에 활용할 수 있습니다 증명.

+0

흠, "전체 서버 측 상태"는 무엇입니까? 파이썬에는 강력한 타이핑과 멀티 쓰레딩이 있습니다. Java는 훌륭한 언어이지만 과장을 피하십시오. –

관련 문제