2009-04-25 1 views
17

Tôi gặp một số vấn đề với người quản lý, bởi vì họ tin rằng (trực giác) tạo các ứng dụng dành cho máy tính để bàn dễ dàng hơn việc tạo các ứng dụng web (vì bạn có ít ràng buộc hơn). Nhưng theo ý kiến ​​của tôi, nó là khó khăn hơn vì một số lý do:Lợi ích và thách thức của việc phát triển ứng dụng web so với ứng dụng dành cho máy tính để bàn là gì?

  • Tài liệu cho các ứng dụng máy tính để bàn là bao la nhỏ hơn cho các ứng dụng web
  • tấm Mã hóa và các nút là khó khăn hơn so với sử dụng một cách tiếp cận declarative (HTML)
  • Bản chất không trạng thái của http buộc bạn phải suy nghĩ lại trong một yêu cầu/thời trang phản hồi

Tôi đang tìm kiếm lý do vững chắc trên GUI so với ứng dụng dành cho máy tính. Tôi mạnh mẽ tin rằng máy tính để bàn khó phát triển hơn vì trải nghiệm của tôi với một số bộ công cụ, nhưng nếu có ai đó quan tâm để trả lời khác, vui lòng giải thích lý do của bạn.


Sửa: Tôi phục hồi câu hỏi ban đầu của tôi, kể từ khi một người nào đó sửa nó và nó bị mất nội dung ban đầu. Nếu ai đó chọn chỉnh sửa câu hỏi, vui lòng đăng một số nhận xét có ý nghĩa để tôi ít nhất có thể biết tại sao một số phần được thay đổi.

+0

Tôi thích cách mọi người nghĩ rằng bạn có thể đăng câu hỏi chủ quan miễn là họ gắn thẻ "chủ quan" và nói "Tôi biết điều này là chủ quan nhưng ..." Mọi người, vui lòng đọc http://stackoverflow.com/faq –

+6

Tôi đã bỏ phiếu cho mở lại nhưng sau đó nó nên được thực hiện vào một wiki cộng đồng. –

+0

Dường như họ đọc chủ đề chứ không phải câu thứ 2 của bạn (hoặc phần còn lại của câu hỏi cho vấn đề đó). Tôi sẽ bỏ phiếu để mở lại nếu tôi có thể. Mặc dù, bạn có thể giúp trường hợp của bạn bằng cách reframing câu hỏi là "những lợi ích và thách thức của phát triển ứng dụng web so với ứng dụng máy tính để bàn" thay vì dường như đưa các nhà phát triển của từng chống lại eachother là gì. :) –

Trả lời

7

Hầu hết thời gian phát triển ứng dụng web dễ dàng hơn nhiều và khiến một trong những vấn đề lớn - triển khai và triển khai các phiên bản mới, biến mất.

Bạn không phải đối phó với các phiên bản hệ điều hành khác nhau, thư viện đã cài đặt, đăng ký, COM, v.v. Bạn có các trình duyệt khác nhau để giải quyết, nhưng nó ít hơn nhiều so với thỏa thuận.

Tôi không thể tưởng tượng việc triển khai ứng dụng dành cho máy tính để bàn cho 2-3 Hàng triệu khách hàng mỗi tháng - điều gì đó đang hoạt động tốt với các trang web.

Theo như phát triển đi với phát triển web bạn có:

  • ngắn hơn con đường thực hiện
  • ít nhà nước để quản lý
  • bạn hầu như không phải đối phó với xử lý song song bản thân
  • ít hơn rất nhiều hoặc không có tài nguyên để quản lý - không có hệ điều hành nào xử lý

Điểm bất lợi duy nhất là thường mất nhiều thời gian hơn máy phát triển etup và gỡ lỗi các ứng dụng web khó hơn. Với trạng thái hiện tại của các công cụ, việc gỡ lỗi không còn là vấn đề nữa.

Vì vậy, luôn luôn thích ứng dụng web nếu có thể.

+0

Với môi trường phát triển desktop phù hợp, bạn cũng không phải lo lắng về việc triển khai. Tôi cũng không phải lo lắng về registry, COM hoặc các thư viện được cài đặt. Ví dụ, bằng cách sử dụng Tcl/Tk, có thể tạo một tệp duy nhất có tất cả các thư viện, biểu tượng và mã cần thiết để chạy. Không chỉ vậy, nhưng cùng một cơ sở mã có thể tầm thường nhắm mục tiêu Windows, Mac và * nix. Tôi đồng ý, tuy nhiên, việc triển khai ứng dụng dành cho máy tính để bàn cho 2-3 triệu khách hàng mỗi tháng thật khó khăn. Mặc dù các folks firefox dường như quản lý khá độc đáo. –

+2

Tôi cũng muốn thêm vào danh sách các nhược điểm mà bạn thường sẽ cung cấp cho người dùng cuối với một trải nghiệm ít thỏa đáng. Có rất, rất ít ứng dụng web có thể cạnh tranh với các ứng dụng dành cho máy tính để bàn cho khả năng sử dụng tổng thể. –

+0

Tôi không chắc chắn ý nghĩa của "đường dẫn thực thi ngắn hơn". Tuy nhiên, làm thế nào để bạn có ít nhà nước để quản lý? Có phải vì HTTP là tiểu bang không? Ok, hãy xây dựng các ứng dụng phức tạp không có trạng thái (web hoặc máy tính để bàn) và xem bạn nhận được bao xa. Theo như đối phó với song song .. bạn có ý nghĩa gì? Bạn không thực sự nhận được bất kỳ, trừ khi bạn có nghĩa là một trang trại hoặc một cái gì đó như thế. Tất cả những lõi CPU và bộ nhớ trên máy khách đều vô dụng đối với bạn trong một ứng dụng web. Bạn vẫn có tài nguyên để quản lý, không phải tài nguyên của khách hàng (có thể đáng kể). – BobbyShaftoe

4

Tôi cho rằng web khó hơn, bạn phải lo lắng về trạng thái, mạng và chú ý nhiều hơn đến những thứ như tải, bảo mật danh sách tiếp tục. Làm thế nào về cơn ác mộng đó là trình duyệt compatibilty, AJAX, CSS arrghhh.

OTOH Do máy tính để bàn có ít ranh giới hơn, có thể thiết kế khôn ngoan hơn một chút vì bạn có nhiều khả năng hơn - tôi không đồng ý với điều đó.

+0

Là một nhà phát triển web, tôi sẽ nói rằng máy tính để bàn khó hơn chủ yếu là do không quen thuộc với những thứ cấp thấp hơn như COM và các API cửa sổ khác. – TheTXI

2

Tôi nghĩ rằng mỗi người có những biến chứng lớn của riêng họ khiến họ trở thành những thách thức độc đáo và bạn sẽ nhận được câu trả lời khác nhau dựa trên những người bạn yêu cầu. Các lập trình viên web có thể nghĩ rằng các ứng dụng máy tính để bàn khó hơn các dự án web đơn giản là do không quen thuộc với môi trường.

Máy tính để bàn có thể thấy rằng các ứng dụng web khó mã hóa hơn vì chúng phải tính đến nhiều vấn đề về thiết kế hơn với CSS và giao tiếp bằng giao thức AJAX.

2

Tôi rất nghi ngờ các lập trình viên web cần phải biết winapi.I nói rằng lập trình GUI mất nhiều thời gian hơn để được học.

+0

.Net Fx làm mờ dòng một chút đối với winapi. –

+0

Hầu hết các lập trình viên GUI bạn sẽ làm, sẽ không yêu cầu học WINAPI. Dường như việc xây dựng các ứng dụng chuyên nghiệp sẽ ít phức tạp hơn trong một ứng dụng khách nếu bạn không phải là một trình thủ thuật tại CSS/Photoshop/etc. Đồng thời, bạn không phải quan tâm đến các phiên bản trình duyệt và xa như phiên bản hệ điều hành, bạn có thể giải thích điều đó dễ dàng hơn so với các cuộc chiến tiêu chuẩn trong việc tuân thủ chuẩn của trình duyệt. – BobbyShaftoe

2

Phát triển web khó khăn hơn trong kinh nghiệm của tôi, bạn không có sự sang trọng duy trì trạng thái dễ dàng; cộng với bạn phải đối phó với các vấn đề định dạng (css là rất tốt nhưng rất khó để làm chủ).

9

IMHO Web Develoment là căng thẳng hơn ... bạn phải chiến đấu với Internet Explorer không tuân thủ các tiêu chuẩn, kết nối chậm, hành vi css lạ, trình duyệt khai thác.

+0

Đã bình chọn cho bạn vì việc giảm giá này không có ý nghĩa gì cả. –

+0

Cảm ơn, tôi đã quên các vấn đề css. –

1

Với ứng dụng dành cho máy tính để bàn, bạn không phải xử lý các vấn đề như trạng thái ứng dụng giống như cách bạn thực hiện trên web. HTTP là giao thức không trạng thái, do đó, đó là công việc của nhà phát triển để xác định cách duy trì trạng thái hiện tại của ứng dụng cho phiên của người dùng. Máy tính để bàn có thể sử dụng TCP/IP và duy trì kết nối với máy chủ.

Với web, việc tạo giao diện người dùng hấp dẫn là rất dễ dàng, vì bạn có thể thêm hoạt ảnh với Javascript, Flash, v.v. Đó là công việc nhiều hơn cho nhà phát triển khi ứng dụng là trung tâm dữ liệu và trạng thái ứng dụng là vấn đề.

2

Tôi làm việc cả trong công việc cả ngày và có thể thành thật nói lý do hợp lệ duy nhất để phát triển ứng dụng dành cho máy tính để bàn là vì người dùng sẽ không được kết nối vào mọi lúc.

Phân phối/duy trì ứng dụng dành cho máy tính để bàn có sự cố luôn phụ thuộc vào người dùng trong khi ứng dụng web có thể được gỡ lỗi mà không có sự tham gia của người dùng. Điều này không bao giờ nên được giảm thiểu vì nó có thể mất một lượng thời gian không đủ để gỡ lỗi một lỗi mà một người dùng ở Idaho không có người dùng nào khác có.

Phát triển trên cả hai có một tâm lý khác nhau. Web là không trạng thái bởi tính chất và máy tính để bàn là rất quan trọng. Khi chuyển đổi giữa hai tôi thường cảm thấy thất vọng bởi vì tôi nhận được sử dụng để một sau đó thử cùng một mô hình/kỹ thuật trong khác và nó không thành công.

Cuối cùng nó phụ thuộc vào vấn đề bạn đang cố giải quyết. Nếu bạn không thể đứng lên một máy chủ web thì các tùy chọn của bạn bị hạn chế. Nếu bạn muốn người dùng sử dụng nó trong các đống của West Virginia thì bạn có vài lựa chọn.

Thông tin khác trong câu hỏi sẽ giúp ích khi câu hỏi này gần như quá rộng để trang trải.

2

Chà, tôi ngạc nhiên trước câu trả lời cho đến giờ. Tôi đã thực hiện cả hai, máy tính để bàn trong quá khứ và gần như tất cả các trang web bây giờ. Tôi thấy việc phát triển web dễ dàng hơn nhiều để phát triển, dễ dàng hơn nhiều để hỗ trợ và dễ dàng hơn nhiều trong việc giới thiệu và triển khai.

Tôi sẽ không bao giờ chọn phát triển thứ gì đó trên máy tính để bàn nếu có bất kỳ khả năng nào để thực hiện trên web.

2

Ứng dụng dành cho máy tính để bàn là cách để thực hiện. Công nghệ web hiện tại (HTML, Javascript, HTTP, ...) không bao giờ được thiết kế với các ứng dụng trong tâm trí. Nó được thiết kế cho các tài liệu. Và bạn cảm thấy rằng với mọi dòng mã bạn viết.

+0

Về lâu dài, tôi nghĩ rằng thế giới sẽ kết thúc ở đâu đó giữa hai người. – ine

0

Cả hai loại ứng dụng đều có ưu điểm và nhược điểm. ví dụ: các ứng dụng web có thể cần xem xét các trình duyệt khác nhau và việc sử dụng giao diện người dùng có thể sử dụng được khó khăn hơn trên web so với các dạng cửa sổ.Tuy nhiên, các ứng dụng web cũng có một số lợi thế. cái đầu tiên xuất hiện trong tâm trí là triển khai và không cần phải lo lắng về các nền tảng khác nhau (chỉ các trình duyệt khác nhau - có, khó phát triển hơn cho các nền tảng khác với các trình duyệt khác nhau).

+0

lại: "có, khó phát triển hơn cho các nền tảng khác nhau". Đó không phải là tuyệt đối. Nếu bạn chọn đúng ngôn ngữ, nó có thể viết trên một nền tảng và nó chỉ chạy trên các nền tảng khác với ít hoặc không có sửa đổi (và tôi không nghĩ đến java). Khá thường xuyên nó chỉ mất nhiều (hoặc ít) tinh chỉnh như nó để làm cho một ứng dụng web làm việc trong nhiều trình duyệt. –

18

Hầu hết các câu trả lời (cho đến nay, dù sao) dường như tập trung vào sự lựa chọn dễ dàng hoặc khó có thể thực hiện. Toàn bộ mục tiêu của ứng dụng, máy tính để bàn hoặc trang web giống nhau, là phục vụ người dùng cuối. Điều đó phải là điểm bắt đầu của cuộc thảo luận.

Ứng dụng web không thể cung cấp trải nghiệm phong phú và tương tác dưới dạng ứng dụng dành cho máy tính để bàn trong hầu hết các trường hợp. Chỉ có quá nhiều hạn chế do các tiện ích có sẵn, độ trễ mạng, thực tế cửa sổ ứng dụng của bạn phải (thường) sống trong một ứng dụng khác, v.v. Điều đó đang được nói, nhiều lần giao diện không cần một bộ lớn các tiện ích, độ trễ mạng không phải là vấn đề lớn và việc chạy từ bên trong cửa sổ trình duyệt là một lợi thế. gmail và ngăn xếp tràn là những ví dụ chính của các ứng dụng dựa trên web mà không cần một giao diện đặc biệt phong phú.

Vì vậy, khi cố gắng quyết định sử dụng công nghệ nào trước tiên hãy xem xét người dùng. Họ có cần giao diện người dùng phong phú, hiệu suất cao không? Họ có cần chia sẻ dữ liệu của họ dễ dàng với những người khác trên mạng không? Đây có phải là một ứng dụng mà họ sẽ sử dụng tám giờ một ngày hoặc trên cơ sở không thường xuyên? Họ có sử dụng nó chủ yếu để chỉnh sửa các tệp cục bộ hoặc cộng tác với mọi người trên mạng không?

Đối với những người nói "ứng dụng web luôn tốt hơn", hãy để tôi hỏi bạn câu hỏi này: suy nghĩ về các công cụ bạn sử dụng hàng ngày. Trình soạn thảo văn bản, IDE lập trình, trình duyệt, ứng dụng email của bạn. Ứng dụng web nào trong số đó là ứng dụng web? Có lẽ không, ngoại trừ có thể là ứng dụng email của bạn. Có một lý do tại sao bạn không muốn một IDE dựa trên web để viết phần mềm (hoặc viết một cuốn sách hoặc thực hiện thao tác hình ảnh nghiêm túc).

Tất cả đều tóm tắt người dùng và mục tiêu của họ là gì. Đôi khi nhu cầu của họ được đáp ứng tốt nhất với giao diện người dùng dựa trên web, đôi khi với giao diện người dùng trên máy tính để bàn. Đôi khi một trong hai sẽ làm. Tất nhiên bạn cũng cần cân nhắc các tùy chọn như phân phối và cập nhật, tính khả dụng của nền tảng chéo, v.v. nhưng tất cả bắt đầu với người dùng và mục tiêu của họ. Nếu bạn tập trung vào việc đáp ứng người dùng cuối của bạn, câu trả lời có thể sẽ trở nên khá rõ ràng.

+0

Bạn đã cung cấp câu trả lời hay nhưng không trả lời trực tiếp cho câu hỏi của tôi. Tôi đặc biệt yêu cầu sự khác biệt, không phải là một cách để quyết định liệu tôi có nên thực hiện một hay khác. Dù sao, cảm ơn cho câu trả lời tốt. –

+0

Rất anwer! –

4

Có một vài khác biệt giữa hai yếu tố tạo ra những thách thức hoặc lợi ích. Đối với các ứng dụng web:

  • Nhà nước - yêu cầu HTTP không có nhà nước và cần phải được quản lý bằng cách thông qua các biến session trên tất cả các yêu cầu hoặc cookie. Đây là một chi phí trong các ứng dụng web và ASP.NET thường xuất hiện dưới sự bùng nổ của các dữ liệu phiên lớn.
  • Tập trung - Đẩy thay đổi vào ứng dụng web cũng dễ dàng như cập nhật các bit trên máy chủ so với ứng dụng dành cho máy tính để bản vá phải được triển khai cho tất cả người dùng. Bản chất tập trung cũng giúp phân tích và làm như vậy dễ dàng hơn. Đây là một tiện lợi lớn. Tôi nhớ lại GMail tại một điểm cố định một lỗ hổng bảo mật trong vòng 4 giờ. Ngược lại, vẫn còn rất nhiều các cửa sổ chưa được vá lỗi.
  • Kiến trúc - máy chủ chất béo, khách hàng mỏng làm cho nền tảng ứng dụng web không thuyết phục. Nó cũng giúp quản lý số dư ... ví dụ như sắp xếp bảng, kiểm tra lỗi, tính toán toán học hoặc đồ họa (trong trường hợp flash chẳng hạn) có thể được thực hiện trên máy khách hoặc máy chủ tùy thuộc vào phân bổ tài nguyên. Vì khách hàng mỏng, nó có nghĩa là có thể sửa chữa hoàn toàn máy chủ mà không ảnh hưởng đến khách hàng. Mức độ linh hoạt này thực sự thuận tiện.
  • Bảo mật - Ứng dụng dành cho máy tính để bàn chạy trong môi trường đáng tin cậy nơi chúng được tự do làm bất cứ điều gì khi ứng dụng web chạy trong môi trường hộp cát làm cho chúng an toàn hơn cho khách hàng. Tuy nhiên, các ứng dụng web yêu cầu một số lượng cấu hình vì nó liên quan đến chứng chỉ, điều khiển activex và vân vân.
  • Versioning - Chi phí phiên bản cao hơn nhiều cho các ứng dụng dành cho máy tính để bàn. Điều này quay trở lại quá trình tẻ nhạt hơn trong việc đẩy ra những thay đổi. Và sau đó một lần nữa, nhảy số phiên bản chính có nghĩa là tăng doanh thu bằng cách nâng cấp người dùng. Trong các ứng dụng web, phiên bản chủ yếu dành cho các nhà phát triển và dễ dàng hơn nhiều để thực hiện các cải tiến nhỏ lặp đi lặp lại. Đó là lý do tại sao các ứng dụng máy tính để bàn vẫn tuân thủ chu kỳ phát triển thác nước bởi vì việc đẩy ra những thay đổi rất tốn kém và bạn phải có được nó lần đầu tiên. Các ứng dụng trên máy tính để bàn cũng có chi phí tương thích ngược như hỗ trợ Windows 98, XP và Vista hoặc hỗ trợ các bộ vi xử lý, trình điều khiển cũ hơn, v.v.
  • Môi trường - Các ứng dụng web chạy trong môi trường có thể dự đoán lại rất thuận tiện. Có nhiều vấn đề phát triển giữa các trình duyệt IE/FF/Opera vv nhưng dễ dàng hơn trong việc kiểm tra và gỡ lỗi hơn là chạy một ứng dụng phức tạp trên một hệ thống máy tính để bàn với các bộ vi xử lý đồ họa khác nhau, phần mềm diệt virus hoặc các bản dựng.
  • Responsiveness - Ứng dụng web có phản hồi chậm hơn vì hậu hậu nhưng AJAX đã làm cho việc này trở nên dễ dàng hơn và thú vị hơn rất nhiều.

Tôi chắc chắn có nhiều điểm khác mà tôi thiếu nhưng đó là câu trả lời thiên vị của tôi về phát triển ứng dụng web.

+0

Tôi nghĩ rằng bạn tạo ra một số điểm tốt nhưng bạn dựa trên rất nhiều giả định. Ví dụ: toàn bộ đối số "phiên bản" giả định bạn không xây dựng trong một số tính năng tự động cập nhật. Firefox dường như quản lý các bản cập nhật tốt, ví dụ. Ngoài ra, các ứng dụng dành cho máy tính để bàn có thể là "nền tảng bất khả tri" nếu bạn chọn bộ công cụ phù hợp. Chỉ trong tuần vừa qua tôi đã làm việc trên một ứng dụng máy tính để bàn trên hộp mac của tôi ở nhà. Tôi lấy nó để làm việc và giới thiệu nó trên hộp linux của tôi. Sau đó, một người nào đó hỏi tôi vì vậy tôi cắm ổ đĩa của tôi vào hộp cửa sổ của tôi và nó chạy ở đó, quá. –

+0

@Bryan, đây là những thay đổi tương đối gần đây trong mô hình mà ứng dụng dành cho máy tính để bàn và ứng dụng internet đang đến gần hơn với các công nghệ như Adobe Flex, Google Gears, RIA nói chung và ứng dụng dành cho máy tính để bàn tự động cập nhật. Mặc dù vậy, phiên bản là tầm thường với các ứng dụng web. Nó xảy ra ngầm định mỗi khi bạn thay đổi một dòng mã trên sản xuất. Với các ứng dụng dành cho máy tính để bàn, những thay đổi đó phải được triển khai theo chu kỳ phát hành hàng tháng và sau đó bạn cũng không thể quá tải người dùng của mình và một số thay đổi không bao giờ kết thúc. – aleemb

1

Tất cả phụ thuộc:

  1. kinh nghiệm phát triển của bạn là gì?
  2. Loại ứng dụng bạn cần làm?

Và còn - bạn đang gọi ứng dụng web là gì? Ứng dụng Silverlight hoặc Flash đều có thể được thực hiện theo cách mà bạn có thể sử dụng nó từ máy tính để bàn hoặc từ trình duyệt. Các ứng dụng Ajax ngày nay không khác nhiều so với các ứng dụng máy tính để bàn, nhưng khó phát triển một thứ gì đó không quá đơn giản với DHTML (ngay cả khi bạn đang sử dụng các khung công tác như jQuery hoặc thậm chí GWT).

Giả HTML hoặc DHTML như một ứng dụng web:

Tôi đã dành nhiều năm trong web/ajax và phát triển máy tính để bàn và kinh nghiệm của tôi là bình đẳng - Tôi đã thực hiện loạt các ứng dụng web và desktop những phức tạp. Có bộ công cụ tốt và các công cụ cho C# và đủ kinh nghiệm tôi có thể tạo ra ứng dụng máy tính để bàn tốt hơn so với web trong cùng một khung thời gian hoặc ngắn hơn. Nhưng một số loại ứng dụng KHÔNG THỂ được thực hiện như máy tính để bàn vì đó là một yêu cầu để làm chúng như một ứng dụng web.

Lý do tại sao phát triển máy tính để bàn là đơn giản hơn:

  1. Ngôn ngữ kiểu an toàn, mã gợi ý
  2. Hiệu suất của mã x10-1000 + hiệu suất profilers
  3. Không cần phải kiểm tra tất cả mọi thứ trên mọi trình duyệt
  4. Ngoại lệ thông tin với ngăn xếp dấu vết, chỉnh sửa và tiếp tục
  5. Khả năng sử dụng đa luồng (nếu bạn biết cách sử dụng nó)
  6. khả năng dự báo và ổn định của mã
  7. công cụ RAD Nhìn chung

Đối với thời gian rất dài một số lợi thế của các ứng dụng web là:

  1. GUI Framework - HTML + CSS
  2. Đó là dễ dàng hơn cho người dùng để bắt đầu sử dụng nó
  3. Nội dung của ứng dụng có thể được tìm thấy bởi các công cụ tìm kiếm

Bây giờ tất cả chúng ta đều có các khung GUI mạnh mẽ như XAML cho các ứng dụng WPF/Silverlight. Điểm thứ hai có thể được bao phủ bởi các ứng dụng Silverlight/Flash (mà tôi đang xử lý như các ứng dụng dành cho máy tính để bàn). Thứ ba có thể được thực hiện cho RIA, nhưng đòi hỏi một số nỗ lực (cùng áp dụng cho các ứng dụng ajax).

Nếu bạn đang nhắm mục tiêu một cái gì đó đơn giản và không biết các công cụ và kỹ thuật phát triển desktop/ria hiện đại có thể là một lý do tốt để phát triển ứng dụng web. Nhưng như tôi đã nói - tôi hy vọng nó sẽ là một cái gì đó đơn giản.