2009-02-05 7 views
7

나는 내 경력의 대부분을 위해 싱글 스레드 비즈니스 로직/백엔드 프로그래밍 작업을 해왔다. 이제 웹 프로그래밍을 배우고 싶지만 웹 프로그래밍이 비 GUI 프로그래밍 (예 : API 또는 파일 처리 응용 프로그램 작성)과 다른 점을 알고 싶습니다. GUI 디자인 측면 (누군가가 이미 질문 here을 요청했지만)에 대해 이야기하는 것이 아니라 프로그래밍 복잡성에 대해 더 자세히 설명합니다.웹 프로그래밍과 백엔드 프로그래밍의 차이점은 무엇입니까?

웹 응용 프로그램에서 작업 한 경우가 드물지만 웹 응용 프로그램이 상대적으로 비 결정적이고 예측할 수 없다고 느꼈습니다 (예 : 이벤트 기반, 웹 응용 프로그램의 다중 스레드 모델로 인해 몇 가지 순열 및 이벤트와 행동의 조합).

비 GUI 응용 프로그램과 다른 웹 프로그래밍의 기본 기능은 무엇이라고 생각하십니까? 웹 응용 프로그램에서 작업하는 동안 백엔드 개발자가 저지를 수있는 함정/실수는 무엇입니까?

편집 백엔드 프로그램의 나의 정의는 API를 또는 대용량 데이터 파일을 구문 분석 파일 처리 배치 애플리케이션과 같은 비 GUI 응용 프로그램을 의미 레코드를 읽고, 데이터에 숫자 재정 계산을 많이 수행 결과를 다른 파일이나 데이터베이스로 분출합니다. 예를 들어 날짜 및 시간 유틸리티 라이브러리 일 수 있습니다.

+0

"백엔드 프로그래밍"과의 관계를 이해하지 못합니다. "데스크톱"과 "웹"개발을 차별화하려고합니까? –

+0

아니요. "비 GUI 프로그래밍"과 "웹 프로그래밍"을 구별하려고합니다. EDIT를 참조하십시오. – Rahul

+0

@Rahul, GUI가 없으므로 콘솔 응용 프로그램을 "백엔드"로 간주 하시겠습니까? –

답변

8

웹 응용 프로그램은 일반적으로 단일 스레드 응용 프로그램처럼 느껴집니다. 응용 프로그램 개발자는 사용자 스레드를 거의 만들지 않습니다. 사실 웹 트랜잭션의 상태 비 저장 특성은 데이터베이스에서 매번 페이지의 데이터를로드해야하기 때문에 실제로는 훨씬 쉽습니다. 그러므로 '무엇이든간에'보통 충분하기 때문에 동시성에 대해 걱정할 필요가 없습니다.

웹 개발의 가장 큰 문제점은 시간이 지남에 따라 축적해야하는 모든 배경 지식입니다. 어떻게 웹 페이지를 배치합니까? CSS로 어떻게 스타일을 만드나요? 쿼리 문자열에서 매개 변수를 어떻게 가져 옵니까? JavaScript에서 필드 값의 유효성을 어떻게 확인합니까? 이러한 모든 것들은 실제로 실제로 배우기가 쉽지만 실제로 너무나 많은 것이 진짜 고통이 될 수 있습니다.

9

웹 프로그래밍의 가장 큰 문제는 주를 다루는 것입니다. HTTP는 상태 비 저장 프로토콜입니다. 따라서 데스크톱 응용 프로그램보다 상태 유지가 더 어려워 질 수 있습니다. 웹 애플리케이션은 이와 같은 이유로 인해 다른 라이프 사이클을 갖는 경향이 있습니다. 각 웹 개발 플랫폼은이 방식을 다소 다르게 처리하지만 모두 어떤 방식 으로든이를 처리해야합니다.

+0

많은 데스크톱 응용 프로그램은 HTTP를 사용합니다. –

+0

그래, 그 데스크탑 응용 프로그램은 Jim Petkus가 말하는 것의 수혜자입니다. –

+0

동의. HTTP의 무국적자는이 문제에 대해 최악의 경우입니다. –

1

대부분의 웹 사이트에는 백 엔드 구성 요소도 있습니다. 일반적인 구조는 될 것 같은 뭔가 :

  1. UI - HTML/CSS/
  2. 컨트롤러는 자바 스크립트 - MVC
  3. 비즈니스 로직/서비스를 사용하는 경우 -이 또한 백엔드됩니다
  4. -이
  5. 데이터베이스 백엔드
  6. 입니다

웹 사이트를 구축하는 것은 여전히 ​​많은 백 엔드 작업을 의미합니다. UI와 관련하여 가장 큰 차이점은 디자인과 레이아웃이 잘 수행되어야한다는 점입니다. html/css 기술은 그 자체로 매우 간단합니다.

+0

멋진 MVC 프레임 워크를 사용한다는 것은 디자인 부분에서 상당히 벗어날 수 있다는 것을 의미합니다. CSS/HTML을 아는 것이 도움이됩니다. (가능한 것이 무엇인지 알기 만하면됩니다.) 실제 "디자이너가 디자인을 멋지게 보이도록"남겨 둡니다. – gregmac

1

HTML은 실제로 물리 논문을 제공하기 위해 개발되었습니다. 오래된 메타 태그 중 일부에서 계속 볼 수 있습니다. 어쨌든 차이점은 웹 프로그래밍은 무국적이며 두꺼운 클라이언트 개발은 그렇지 않다는 것입니다.

당신이 명시 적으로 지적했듯이, 모두 이벤트에 의해 구동됩니다. 진정한 자바 스크립트는 상태 보존 형 환경의 환상을 만들어 웹 개발을 다소 망쳤지만, 결국에는 모든 것이 단순한 HTML로 끝납니다.

학습을 시작하기에 너무 늦은 적이 없으며 정적 HTML 페이지를 만들고 MVC 프레임 워크로 이동하는 것이 좋습니다. Microsoft MVC Framework를 제안합니다. 꽤 환상적입니다. ASP.Net Webforms와 같이 사용할 수있는 다른 것들이 있지만 디자이너에게 끌어다 놓는 것으로 아무 것도 배울 수 없습니다.).

+0

나는 물리학 논문에 관해서는 전혀 몰랐다. 어떤 메타 태그를 언급하고 있는가? –

+0

CERN의 과학자 인 Tim Berners-Lee는 1990 년 월드 와이드 웹 (World Wide Web, WWW)을 발명했습니다. 웹은 애정을 담아 부르며 처음에는 다른 대학에서 일하는 과학자들간에 자동 정보 공유에 대한 요구를 충족시키기 위해 고안되었습니다 세계. –

+0

태그에는 제목, 설명, 키워드, 배포, 리소스 유형 등이 포함됩니다. 이것들은 모두 문서를 설명하는 것과 관련이 있습니다. ISBN 메타 태그가 없다면 D –

3

내가 목격 한 가장 큰 함정 애플리케이션 개발자는 웹으로 이동할 때 코드 비용을 고려하지 않습니다. 그들은 MySQL을 남용하여 RDBMS를 허술하게 만들거나, 너무 많은 메모리를 사용하는 코드를 작성하거나, 다이얼 업/핸드폰이나 로우 엔드 광대역/DSL 파이프 라인에 적합하도록 프런트 엔드 페이지를 만듭니다.

경우에 따라 과도한 페이지 작성을 피할 수 없지만 가능한 한 많이 캐시하려고하거나 페이지를 작성할 때 프로필 작성에 많은 노력을 기울일 필요가 없습니다. 그들이 문 밖으로 나가기 전에 쿼리를 최적화하십시오.

이 사람들이 어리 석다는 것은 아니며, 경험이 풍부하고 인식이 부족하여 멋지고 쓸만한 코드를 작성해야하는 것은 아닙니다.

0

웹 프로그래밍은 백엔드 프로그래밍이 아닙니다. 그것은 프론트 엔드의 물건, 웹을 보여줍니다.

다르게 정의 하시겠습니까?

편집

웹 프로그래밍은 모든 사람에게 시각적, 지속적으로 데이터를 표시로 당신을 가져옵니다. 백엔드 코딩이란 프레젠테이션과 동일한 방식으로 데이터를 구성하는 것을 의미하지만 표현하지는 않습니다.

+0

그렇지 않으면 정의하려고하지 않습니다. EDIT를 참조하십시오. 차이점을 이해하지만 웹/GUI 프로그래밍과 비 GUI 프로그래밍 간의 "프로그래밍 복잡성"의 차이를 파악하려고합니다. – Rahul

+0

웹 프로그래밍은 시각적으로 모든 사람에게 일관되게 데이터를 표시하도록합니다. 백엔드 코딩이란 프레젠테이션과 동일한 방식으로 데이터를 구성하는 것을 의미하지만 표현하지는 않습니다. –

2

백엔드 프로그래밍은 웹 프로그래밍보다 무한히 쉽습니다. (경고를 받았습니다!) 웹 프로그래밍은 누구에게나 자랑할만한 가장 쉬운 방법입니다.

0

또 다른 고려 사항은 정의에 따른 백 엔드 프로그래밍이 테스트하기 쉽다는 것입니다.

일단 웹 프로그래밍을 시작하면 다양한 브라우저의 동일한 코드에 대한 다른 해석이 가능합니다. 또한 마우스와 키보드의 입력이있는 사용자는 제작 한 것을 깨는 다양한 방법을 사용할 수 있습니다. 등의 사양이 사용자의 정신적 모델의 중요한 고려 사항 포함시켜야으로 인간과

1

웹 & GUI 응용 프로그램 인터페이스는 .. 서비스 및 데이터베이스와 백 엔드 응용 프로그램 인터페이스는 ... - 만드는 사람들 그들에 대한 기대로 가지 동작합니다. 그리고 사용자가 생각하는 방식을 이해하는 것이 항상 쉽지는 않습니다. 사람들은 항상 논리적으로 생각하지 않기 때문에 단순히 참여하지 않는 우아한 알고리즘 솔루션을 사용할 수 있습니다. 여러 번, 꽤 우아한 UI는 코딩 방식으로 매우 꼬여 있습니다. 시스템 -> 시스템 프로그래밍과 매우 반대입니다.

문제 공간에 따라 많은 부분이 과학보다 예술이 될 수 있습니다.

+0

Excellect 설명 !! –

1

웹 프로그래밍을 고려할 때 고려해야 할 사항 중 하나는 사용자가 바보가 아니며 (항상 그렇다고 생각하는 것이 아니라 항상 그 사실을 고려해야 함), 때로는 악의적 인 것으로 간주하고 불쾌한, 그리고 귀하의 응용 프로그램, 데이터베이스, 주말, 정신을 파괴하는 그들의 힘으로 모든 것을 할 것입니다 ...

펭귄 촬영시 매우 작은 수녀처럼 편집증 환자입니다. 사용자를 신뢰하지 마십시오.

+1

"펭귄 촬영시 아주 작은 수녀"+1 LOL – Abie

0

귀하의 "백엔드 프로그래밍"정의에 따라 귀하의 질문은 웹 응용 프로그램뿐만 아니라 모든 GUI 응용 프로그램에도 적용됩니다.

일종의 GUI 응용 프로그램이 어떤 종류인지에 따라 달라집니다. 예 :

  • 내부 비즈니스 응용 프로그램은 여러 비즈니스 프로세스 워크 플로 논리, 레코드 유지 및 개별 시스템 간의 상호 운용성을 필요로하는 경향이 있습니다. 공상적인 알고리즘이나 번호 정리가 필요 없습니다. 잠재 고객이 제한되어 있으므로 실적은 별 문제가되지 않지만 플랫폼 간 호환성이 중요하므로 웹 애플리케이션이 중요합니다. 귀사의 주요 관심사는 비즈니스 시스템을 하나로 묶고 GUI 코드가 비즈니스 로직 코드를 처리 할 필요가 없도록 API를 계층화 된 상태로 유지하는 것입니다.
  • 공용 웹 사이트 (예 :이 웹 사이트)는 정식 아키텍처의 수가 적고 "이 멋진 기능을 사용하여 더 많은 방문자를 확보 할 수 있습니다"라는 정신이 더 많이 나오는 경향이 있습니다. 다시 말하지만, 성능이 문제가되지 않는 한 수의 처리 또는 알고리즘이 없습니다. Slashdot 또는 Google과 같이 대중적인 사이트의 경우 성능이 더 중요하므로 빠른 성장이 예상되는 경우 미리 확장 성을 설계하는 것이 좋습니다.
  • 공개 전자 상거래 웹 사이트는 위와 비슷합니다. 기능과 성능은 중요하지만 모든 상거래 비즈니스 시스템을 함께 묶는 구조화 된 아키텍처 (구매, 공급 업체, 쇼핑 카트, 지불 게이트웨이 등)

실제 GUI 부분에서는 응용 프로그램 종류의 복잡성으로 인해 GUI 코드의 복잡성이 결정됩니다. 요구 사항이 자주 변경되는 매우 복잡하고 중첩 된 GUI의 경우 너무 많은 GUI 항목을 한 페이지에 넣는 것이 쉽습니다. 곧 페이지가 대부분의 사람들의 복잡도 임계 값을 초과하므로 페이지 유지가 매우 어려워집니다. GUI의 여러 부분을 별도의 구성 요소로 분리하여 서로 묶을 수있는 방법을 미리 생각해 보는 것이 좋습니다. GUI 프로그래밍을 처음 접한다면 MVC (Model-View-Controller) 패턴에 대한 기사를 읽어보십시오.

대부분의 페이지가 상당히 정적 인 단순한 웹 사이트의 경우 개별 페이지를 유지하기가 쉽기 때문에이 문제가 너무 많이 발생하지 않습니다.

0

대부분의 웹 프로그래밍은 Dijkstra의 '유해한 것으로 간주되는 goto'가 잘 알려지기 전에 70 년대 초반 인기있는 스타일로 이루어졌습니다.

관련 문제