이 기본 지식이 부족한 질문 (주로 스택 오버플로)을 보았습니다. 이 질문의 요점은 그것을 찾는 사람들과 그것을 참조하는 사람들에게 좋은 정보를 제공하는 것입니다.
웹 프로그래밍과 관련하여 서버 측 프로그래밍과 클라이언트 측 프로그래밍의 차이점은 무엇입니까? 어떤 언어가 어느 언어에 속하며 언제 각 언어를 사용합니까?
이 기본 지식이 부족한 질문 (주로 스택 오버플로)을 보았습니다. 이 질문의 요점은 그것을 찾는 사람들과 그것을 참조하는 사람들에게 좋은 정보를 제공하는 것입니다.
웹 프로그래밍과 관련하여 서버 측 프로그래밍과 클라이언트 측 프로그래밍의 차이점은 무엇입니까? 어떤 언어가 어느 언어에 속하며 언제 각 언어를 사용합니까?
답변:
웹 개발은 커뮤니케이션에 관한 것입니다. 이 경우 HTTP 프로토콜을 통한 두 당사자 간의 통신 :
각 측면의 프로그래밍은 특정 시스템, 서버 또는 클라이언트에서 실행되는 코드를 말합니다.
서버 측 프로그래밍은 서버에서 실행되는 프로그램 종류의 일반적인 이름입니다 .
서버 측과 마찬가지로 클라이언트 측 프로그래밍은 클라이언트에서 실행되는 모든 프로그램의 이름입니다 .
* HTML과 CSS는 실제로 "프로그래밍 언어"가 아닙니다. 이들은 클라이언트 가 사용자에 대한 페이지를 렌더링하는 마크 업 구문 입니다.
평신도의 말로 :
여기서는 웹 프로그래밍에 대해서만 이야기하겠습니다.
클라이언트 측 프로그래밍은 주로 사용자가 상호 작용하는 사용자 인터페이스와 관련이 있습니다. 웹 개발에서 코드는 코드를 실행하는 브라우저이며 사용자 컴퓨터에서는 주로 자바 스크립트, 플래시 등에서 수행됩니다 .이 코드는 다양한 브라우저에서 실행해야합니다.
주요 작업은 다음과 같습니다.
담당자 프론트 엔드 프로그래밍은 알고 있어야합니다 :
서버 측 프로그래밍은 동적 컨텐츠 생성과 관련이 있습니다. 서버에서 실행됩니다. 이러한 서버 중 다수는 "헤드리스"입니다. 대부분의 웹 페이지는 정적이 아니며 사용자에게 업데이트 된 개인 정보를 표시하기 위해 데이터베이스를 검색합니다. 이면은 데이터베이스와 같이 백엔드와 상호 작용합니다.
이 프로그래밍은 많은 언어로 수행 할 수 있습니다.
이 코드는 다음과 관련이 있습니다.
서버 측 프로그래밍 담당자는 다음을 알아야합니다.
다른 답변이에 집중 한 것을 클라이언트 측 및 서버 측 프로그램입니다 : 주로 사용하는 언어를, 달성해야 할 어떤 작업 등
이것은 절대적으로 맞지만 웹 프로그래밍의 맥락에서 두 가지 유형의 프로그래밍 의 차이점 에 대해서는 약간의 초점 이 없습니다 . 그 문제를 해결하려고 노력하겠습니다.
클라이언트 측 프로그래밍에서는 보안 문제로 인해 전체 시스템에 액세스 할 수 없습니다. 사용자는 웹에서 다운로드하여 자신의 컴퓨터에서 실행되는 각각의 모든 코드를 반드시 신뢰할 필요는 없으며 이것이 클라이언트 환경 (브라우저 및 JavaScript 엔진)의 주요 설계 목표입니다. 격리 된 환경 제공 여기서 클라이언트 코드는 실행할 수 있지만 허용 된 범위를 벗어난 것은 액세스 할 수 없습니다.
서버 측 프로그래밍에서는 각 응용 프로그램의 액세스를 기본 시스템으로 제한하는 것이 좋습니다. 그러나 결국에는 귀하 또는 회사가 해당 시스템을 제어하기 때문에 사용자에게 훨씬 덜 적용됩니다. 이 '격리 케이지'디자인은 서버 측 프로그래밍 도구 및 언어에 내장되어 있지 않지만 설치 설정 (권한이 제한된 전용 사용자 사용, 루트 권한이 필요하거나 필요없는 포트 선택 등)을 통해 수행됩니다.
서버 측 프로그래밍에서 배포는 코드 외부에서 일종의 도구를 사용하여 ( make install
또는 경우에도 git clone
) 수행해야하며,이 배포는 일반적으로 수동 또는 최소한 반 감독에서 수행 될 것으로 예상됩니다. 방법. 배포하는 시스템 (OS를 의미)은 일반적으로 여러 컴퓨터에서 균일하지만 필요에 따라 크게 사용자 지정할 수 있습니다.
클라이언트 측 프로그래밍에서는 서버 측 코드에서 배포가 이루어지며,이 코드는 자동으로 감독없이 클라이언트에 서비스를 제공합니다. 기본 시스템 (주로 브라우저를 의미 함)은 훨씬 더 많은 컴퓨터에서 매우 다를 수 있습니다. 배포를 가능하게하려면 표준을 유지해야하며 단일 언어 및 환경에 대한 경향이 훨씬 더 강합니다.
따라서 한 시스템에서 다른 시스템으로 서버 측 코드를 복사하는 데 몇 주가 걸리는 반면 클라이언트 측 코드는 일반적으로 다른 시스템에서 실행하기가 쉽지 않습니다.
(면책 조항 : 이것은 지금까지 가장 주관적인 요점입니다. 아마도 내 주장에는 많은 잘못된 측면이있을 것입니다. 그것은 내 생각에 흥미로운 가설 일뿐입니다.)
서버 측 프로그래밍에서 상태는 사용자의 요청에 따라 동시성으로 인한 충돌 가능성이있는 데이터를 검색하고 업데이트하는 방법을 의미하는 훨씬 더 큰 관심사입니다. 이러한 복잡성의 대부분이 데이터베이스 서버로 오프로드 되어도 데이터베이스가 인터페이스를 올바르게 사용하여 데이터 무결성을 보장하도록하는 것은 서버 측 코드의 책임입니다 (예 : 서버 측 코드의 목표이기도하지만 작업에 데이터베이스를 오버로드하지 않고 사용자가 응답을 기다리는 것을 유지하십시오.
클라이언트 측 프로그래밍에서 결과를 사용자에게 제시하는 것이 훨씬 더 큰 관심사이며 이는 보조 효과 (대부분 화면에 인쇄)를 의미합니다. 이는 관련된 상태 (예 : 쿠키)가 없으며 코드의 주요 목표는 실제로 사용자와 실제로 인터페이스하는 것이므로 이차적 인 영향 없이는 발생할 수 없습니다.
그렇기 때문에 클라이언트 측 프로그래밍에서는 일반적으로 데모를 통해 화면을보고 모든 색상과 레이아웃이 올바른지 확인해야하며, 서버 측 프로그래밍은 거의 자동화 된 텍스트 중심 환경에서만 발생할 수 있습니다. 테스트는 로직이 여전히해야 할 일을하고 있는지 확인합니다.
이것은 결코 받아 들일만한 대답이 아닙니다. 오히려 나는 when do you use each of them
지금까지 다른 답변에서 언급되지 않은 보완 질문으로 (질문 에 대한 응답으로 ) 제공합니다.
지적 재산의 보호
클라이언트 측에있는 소스 코드 (예 : Javascript 등)는 난독 처리 된 경우 쉽게 읽거나 리버스 엔지니어링 할 수 있습니다.
그러나 서버 측에있는 소스 코드는 독점 알고리즘을 안전하게 보호하고 결과 만 반환 할 수 있습니다. 일종의 블랙 박스.