최초의 대규모 웹 응용 프로그램을 수행하려는 오랜 데스크탑 개발자로서 웹 개발의 장단점은 무엇입니까?
웹 애플리케이션을 개발하는 것이 데스크탑 앱을 개발하는 것보다 훨씬 나쁩니 까? 예, 더 지루하거나 성가 시나요? 시장 출시 시간이 훨씬 더 깁니까? 웹 플랫폼이 과도하게 제한됩니까? 이 중 하나에 대한 대답이 예라면 왜 그렇습니까?
(Flash 또는 Silverlight 앱 개발은 어떻게 비교됩니까?)
최초의 대규모 웹 응용 프로그램을 수행하려는 오랜 데스크탑 개발자로서 웹 개발의 장단점은 무엇입니까?
웹 애플리케이션을 개발하는 것이 데스크탑 앱을 개발하는 것보다 훨씬 나쁩니 까? 예, 더 지루하거나 성가 시나요? 시장 출시 시간이 훨씬 더 깁니까? 웹 플랫폼이 과도하게 제한됩니까? 이 중 하나에 대한 대답이 예라면 왜 그렇습니까?
(Flash 또는 Silverlight 앱 개발은 어떻게 비교됩니까?)
답변:
현재하고있는 일을 모르거나 올바르게 계획하지 않으면 고통 스럽지만 어떤 개발에도 해당됩니다. 데스크톱 응용 프로그램에서 응용 프로그램을 병에 넣는 것이 더 쉽지만 웹 응용 프로그램을 코딩하여 제공되는 접근성을 잃게됩니다.
원하는 용도에 따라 데스크톱과 웹 중에서 선택할 수 있습니다. 데스크톱 기반의 응용 프로그램을 코딩하는 방법을 모르기 때문에 웹 기반으로 작성된 많은 응용 프로그램을 볼 수 있습니다. 그래도 웹 기반이어야하는 많은 데스크톱 응용 프로그램을 보지 못하고 고려해야한다고 생각합니다. 중앙 집중식 스토리지, 원격 액세스 기능 및 UI 특성이 필요한 경우 확인하십시오 .
둘 다 사용하지 않기 때문에 Flash 또는 Silverlight에 대해서는 언급 할 수 없습니다.
:s/loose/lose/
:)
다른 사람들이 언급했듯이, 그것은 절충과 올바른 지식을 갖는 문제입니다.
당신이 고려해야 할 유일한 함정은 이것입니다 : 당신은 당신의 웹에서 "크로스 플랫폼"을 장점으로 본다고 언급했습니다. 그러나 정말입니까? 이런 식으로 생각하십시오. 데스크탑 용으로 무언가를 개발하는 경우 지원할 플랫폼 목록과 해당 요구 사항을 정의해야합니다.
실수하지 마십시오. 웹에서도 마찬가지입니다. 그리고 예전보다 훨씬 간단하지만 넓은 퍼블릭 앱을 디자인한다면 가능한 모든 웹 브라우저의 모든 버전을 처리해야합니다. 그리고 엔터프라이즈 응용 프로그램 인 경우 자신을 지원하고 지원되는 브라우저 플랫폼 요구 사항을 매우 정확하게 작성하도록 준비하십시오.
중요한 무언가를 구축한다면 여기저기서 플랫폼 별 해킹을 피할 수 있다고 생각하지 마십시오.
그리고 재미있는 부분. 최고는 무엇입니까? Chrome처럼 거의 정기적으로 투명하게 업데이트되는 브라우저? 또는 롤아웃 보안 기능은 IE와 같은 석기마다 매달 및 주요 기능 만 업데이트합니까? 이러한 빈번한 "투명한"업데이트 중 일부는 코드를 손상시킬 수 있으므로이를 따르고 신속하게 대응해야하므로 대답은 생각만큼 명확하지 않습니다. 또는 개발 및 테스트 중에 베타 및 개발자 시험판을 주시하십시오. 모든 브라우저에서 당신은 어리석게도 당신이 지원하기를 원한다고 말했습니다 (행운).
아 그리고 UI 고려 사항을 잊지 말자. 일관된 UI할지 여부도 결정의 기쁨을 직면 ACROSS 모든 대상 플랫폼, 또는 일관된 UI WITH를각 호스트의 대상 플랫폼. 웹 페이지에서 볼 수있는 작은 버튼을 모두 보시겠습니까? 그것들이 모든 곳에서 정확히 동일하거나 사용자가 사용하는 환경과 통합되기를 원하십니까? 물론이 문제는 새로운 것이 아니며 다른 개발 모델에 존재하지만 여기서 더 중요해 보이며 대상 사용자 유형과 예상 대상에 따라 다릅니다. 퍼블릭 최종 사용자는 플랫폼과 통합하기를 원하지만 여전히 "와우!" 엔터프라이즈 사용자는 데스크탑 앱처럼 보이는 것을 원할 것입니다. 그리고 모바일 플랫폼은이 모든 것에 새로운 차원을 가져 왔습니다.
마지막 두 단락의 경우 일반적으로 사전 구성된 웹 브라우저를 설치 프로그램으로 패키지 한 다음 웹 앱 (로컬 호스팅 또는 웹)에 연결합니다. 업데이트 빈도를 제어하고 상태를 "고정"시킬 수 있고 지원 및 테스트 대상을 정확히 알고 있기 때문에 좋습니다. 또한 전용 사용자 확장과 같은 멋진 기능을 추가 할 수 있습니다. 예를 들어, 개발 한 작은 Chrome 확장 프로그램으로 '냉동 된'Chromium을 패키징하면 다양한 유형의 사용자가 웹 앱을 더 쉽게 사용할 수 있습니다. 반면에 ... 릴리스주기를 동결하여 보안 위반이 발생하면 앱에서 책임을 져야하며 앱은 속도 향상 (있는 경우)의 이점을 얻지 못합니다.
많은 것들과 마찬가지로, 양날 도끼입니다.
참고 : 나는 기본적으로 반 구운 기술의 큰 더미 (그리고 여기에서 공손합니다) 에 대해 웹에 대해 강한 편견 을 가지고 있습니다. 또는 수정.
즉 , 플랫폼으로서의 보편적 인 특성으로 인해 웹을 선호 합니다. 나는 당신의 회사의 움직임이 (아마도) 올바른 것이라고 생각합니다. 목표 시장과 목표 플랫폼에 따라 다릅니다. 무언가를 서비스로 노출하려면 가고 싶을 것입니다 (필요하지는 않지만). 그렇지 않은 경우에는 그다지 많은 이유가 없을 수 있습니다.
흠, 그리고 기존 운영 체제의 더 가벼운 변형이 모바일 환경 (넷북, 스마트 폰, PDA, 태블릿, 전자 책 등)을 위해 계속해서 생성되고 경량 임베디드 브라우저 사용에 더 중점을두기 때문에 앞으로 약간의 재미있는 개발이 예상됩니다. .. 그러나 새로운 UI 렌더링 결함의 모든 부분과 함께.
플러그인 기반 기술과 관련하여 ... 그들은 멀리 떨어져 있다고 말하고 싶습니다. 앱의 성능은 향상되지만 시장 침투는 제한됩니다. 경우에 따라 새 플랫폼이 갑자기 지원을 거부 할 때까지 크로스 플랫폼 지원 측면에서 이점으로 볼 수 있습니다. 웹 표준은 이유가 있습니다 (HTMl5의 모든 것에 너무 흥분하지 않도록주의하십시오. 그렇지 않으면 얼굴이 터질 수 있습니다).
편집 : 고려해야 할 다른 것들 ...
지식이 풍부한 웹 개발자를 찾기 가 매우 어렵 습니다. 당신은 그것들의 무리가 있다고 생각할 것입니다, 그러나 그들의 형태로 일부 유효성 검사를 구현하기 위해 700 줄의 JavaScript / ECMAScript를 작성했다고 생각하는 거대하고 무능한 사람들의 풀에서 길을 잃었습니다. 고급 기술 측면에서 달성 할 수있는 모든 것.
농담이 아닙니다. 최근에 모든 웹 개발 인터뷰의 첫 번째 질문은 변수를 선언하는 방법과 사용 방법이 다른지 여부 var
(응답 방법에 따라 다름)입니다. 우울하다. 평균 또는 고급 데스크톱 개발자를 찾는 것보다 평균 또는 고급 웹 개발자를 찾는 것이 훨씬 어렵다는 것을 알았습니다.
"저는 웹 개발자입니다"라고 말할 때 아무도 당신을 진지하게 고려하지 않을 것입니다. 하위 클래스의 프로그래머를위한 것입니다. 개발자입니까? 당신은 멀리서 무시하고 조롱하고 커피를 먹을 때 참여하지 않습니다. :)
이것은 사실이 아니지만, 대부분 관리되는 환경을 위해 개발되었다는 사실에 달려 있습니다. 브라우저는 고정 된 마크 업, 고정 된 스타일을 수정하고 일부 스크루 된 스크립팅을 수정하고 원하는 경우 최적화합니다. 그리고 웹 개발자라면 사람들은 저수준 프로그래밍에 대한 단서가 없다고 생각할 것이므로 완전한 바보 여야합니다.
그리고 그들은 ECMAScript가 얼마나 복잡한 지 알지만 그들의 의견을 검토하지는 않을 것입니다. 웹이기 때문입니다. 우리는 본질적으로 그것을 좋아하지 않고 우리가 할 수있는 것을 좋아합니다.
<canvas>
그런 물건 ...
두 가지 모두를 다루는 사람으로서 (웹보다 더 많은 데스크톱) : 지금까지 가장 큰 어려움은 웹 개발에서 "일반적인 혼란"이라는 느낌입니다. 최고의 툴과 프레임 워크를 사용하더라도 추상화는 여전히 누설이 많으며 상태 비 저장 프로토콜을 통해 실행되고 있다는 사실을 지속적으로 다루고 있습니다.
또 다른 관련 성가심은 웹 앱을 구현하는 데 사용되는 기술의 혼합입니다. 모든 작업을 수행 할 수있는 훌륭하고 모 놀리 식 모듈 식 환경과 언어는 없습니다. 비교적 간단한 웹 앱조차도 별도의 프로그래밍, 스크립팅 및 마크 업 언어로 코딩해야합니다.
따라서 일반적인 대답 : 예 , 실제로는 그렇게 나쁩니다. 최소한 모든 것이 선형적이고 잘 정의 된 기술과 플랫폼을 사용하여 깨끗하고 매끄러운 환경에서 사물을 코딩하는 데 익숙한 전통적인 데스크탑 배경에서 온 경우. 가장 좋은 방법은 그것을 같은 분야로 생각하지 않는 것입니다. 무의식적으로 웹 개발이 "데스크톱 개발과 같을 것"으로 기대한다면, 그것은 항상 매우 불쾌하고 성가 시게 보일 것입니다.
데스크톱에서 웹으로 전환하는 가장 큰 생각은 웹 응용 프로그램이 기본적으로 상태 비 저장입니다.
그 부분을 알아 내면 좋습니다.
많은 지루함은 모든 브라우저에서 모든 것이 작동하도록하는 데 필요한 작업에서 비롯됩니다. 최첨단에있을 필요는 없기 때문에 자신의 핸드 롤링 대신 적절한 웹 프레임 워크를 선택하여 다른 사람이 수행 한 작업을 활용할 수 있습니다.
사용할 언어는 현재 사용중인 언어 환경에 따라 다릅니다. 해당 정보를 제공하기 위해 질문을 편집 할 수 있습니다.
아니요, 웹 응용 프로그램은 데스크톱 응용 프로그램과 다른 장단점이 있습니다. 각각 내 마음에는 강점이 있습니다. 단일 배포와 같은 장점이 있지만 지원하는 브라우저와 고객이 어떤 화면 해상도를 기대할 수 있는지 알고 있어야한다는 단점이 있습니다. 서버 하드웨어를 제어 할 수는 있지만 얼마나 많은 트래픽을 예상하고 어느 정도 확장해야하는지에 대한 의문이 있습니다. 몇 년 동안 웹 개발을해온 사람들에게는 이것이 심각한 고통이라고 생각되는 개발 작업이 있다고 상상할 수있는 것처럼 아픈 곳이 될 수 있습니다.
플래시 응용 프로그램은 내 마음에 웹 응용 프로그램 일 수도 있고 아닐 수도 있습니다. AIR과 같은 기능으로 인해 데스크탑에서 일부 Flash 기능을 실행할 수 있으며 Twhirl과 같은 일부 응용 프로그램이 내장되어 있으므로 즉시 잘리지 않고 건조하지는 않습니다.
웹 개발이 반드시 나빠지 는 것은 아니며 매우 다릅니다.
웹 개발과 데스크탑 개발을 분리하는 것 중 하나는 상당히 복잡한 응용 프로그램을 개발하기 위해 마스터해야하는 엄청나게 다른 기술입니다. 기본적으로 다음에 대한 강력한 지식이 필요합니다.
반면 데스크톱 개발에서는 일반적으로 훨씬 더 많은 단일 기술을 사용합니다. 예를 들어, Java 앱을 개발하려면 기본적으로 Java를 알아야합니다. (물론, 그것은 다소 단순화 된 것이지만, 요점은 웹 개발은 기능적인 응용 프로그램을 형성하기 위해 함께 작동해야하는 훨씬 더 광범위하고 근본적으로 다른 기술에 노출된다는 것입니다.)
아니
올바른 도구를 선택하는 한 웹 개발은 데스크톱 개발만큼 깨끗하고 쉽습니다.
웹 API (html, CSS, Javascript 및 DOM)는 win32 API와 같습니다. 결국 모든 것이 해당 API 레벨로 내려가지만, 라이브러리없이 직접 프로그래밍하면 복잡하고, 상세하고, 불일치하는 부분을 추상화 할 수 있습니다.
따라서 선택한 프레임 워크에주의하십시오. 일부 문제는 잘못된 도구 (예 : 브라우저 호환성 문제)를 선택하여 자체적으로 영향을받습니다.
단일 언어로 깨끗하고 일관된 웹 개발 플랫폼을 사용할 수 있습니다. 예를 들어, "항상 모든 자바"가되기를 원한다면 GWT를 사용하여 클라이언트 측 코드와 서버 측 코드를 모두 Java로 작성할 수 있습니다. 또는 모든 자바 스크립트를 원한다면 클라이언트 측은 Ext JS, 서버 측은 node.js와 같은 것을 선택할 수 있습니다.
나는 그것이 "... 내 존재의 헛됨"이라고 묘사 한 것을 듣고 동의 할 것입니다. HTML 웹 개발을 할 시간당 $$$가 제공되었고 거절했습니다. 그것은 많은 고통입니다. HTML에서 대부분의 시간을 보냈으며 최근 "Flash 플랫폼"으로 작업하기 시작했습니다. 그것은 내가 본 것 중 가장 정교한 프레임 워크 중 하나이며 아무도 그것에 대해 모른다. 사람들이 플래시를 만들면 10 년 전의 플래시를 생각합니다. 자란다 .. 많이. 나는 소프트웨어를 다시 쓰는 것을 좋아합니다.
여전히 단점이 있습니다. 때때로 버그는 영원히 남아 있지만 더 좋아졌습니다 (스티브 J. 덕분에).
BTW Flex 개발자에게는 큰 부족이 있습니다. 너무 많은 회사가 아파서 다가 왔습니다. CS를 알고 있다면 다음 6 개월 이상 Flex 하드 코어를 배우고 전화하십시오. 거절해야 할 모든 구인 제안을 전달하겠습니다.
업데이트 : 크로스 브라우저 지원이 주요 문제점입니다. 한 브라우저에서 작동하는 것은 다른 브라우저에서는 작동하지 않거나 이전 버전에서는 작동하지 않습니다.
프로세스는 다음과 같이 진행됩니다.-사이트 디자인 가져 오기-하나의 대상 브라우저에서 사이트를 다시 만들려고 시도 (어려울 수 있음)-클라이언트 표시-클라이언트 변경 디자인 표시-원래 수행 한 모든 레이아웃 작업을 긁음-기능적으로 설정-클라이언트 승인 -다른 브라우저에서 작동하도록하십시오. 가장 어려운 부분입니다. 길을 따라 모호한 버그가 있습니다. 그런 다음 둥근 모서리와 같이 이전 브라우저에서 지원하지 않는 기능이 나타납니다. 코드와 CSS를 재사용하려고 시도하지만 빠르게 조각화됩니다. 간단하게 유지 보수가 매우 빠릅니다. 애니메이션 및 이전 브라우저 초크에 추가하십시오.
클라이언트 가 변경합니다. 당신은 "간단한 것이어야하는 것"을하는 데 시간을 할애하고 인생을 미워하게됩니다. 당신은 전문가가되고 싶지 않은 것을 알게 될 것입니다. 나는 그것이 극적으로 들린다는 것을 알고 있지만, 당신이 직면하게 될 문제를 꾸미는 것은 아닙니다. 프레임 워크가 더 쉬워 질 것입니다. HTML 작업을 지속적으로 수행하는 경우 HTML을 지원하는 모든 브라우저의 디자인 및 기능과 일치하는지 확인하여 즐겨 찾는 사이트 중 하나를 HTML로 다시 작성하십시오. 직장에 가기 전에 발생하는 문제를 해결하십시오. 최고의 디자인 툴, 최고의 자바 스크립트 프레임 워크, 최고의 디버깅 툴, 최고의 IDE 등과 같은 문제