Vội vàng về phía khách hàng trong phát triển web


10

Trong vài tháng qua, tôi đã nhận ra một sự phấn khích lớn về kịch bản phía máy khách trong phát triển web. Nhưng trong khi các công nghệ phía máy chủ đã trưởng thành, ổn định và được các nhà phát triển phụ trợ chấp nhận, thì các công nghệ phía máy khách vẫn chưa trưởng thành (nghĩa là so với khung phía máy chủ lớn) và không thích bởi nhiều nhà phát triển lâu đời. Tuy nhiên, tất cả mọi người đang làm phát triển phía khách hàng những ngày này. Cá nhân tôi hy vọng các khung công tác phía máy chủ lớn đó sẽ biến mất sau 2 - 5 năm, theo dõi xu hướng hiện tại.

Tại sao lại như vậy? Làm thế nào để phát triển phía máy khách mới và "khuếch tán" trong HTML5 / JS có thể vượt trội hơn các giải pháp phía máy chủ lớn và được suy nghĩ tốt?


4
Bạn có nguồn nào để xác minh các giả định của mình không? Javascript gần như đã cũ như internet và tôi không thấy lập trình phía máy chủ sẽ sớm xuất hiện ở bất cứ đâu.
tdammers

1
Để làm rõ, các giả định của tôi được giới hạn ở mặt trước. Tôi thấy một sự thay đổi về phía khách hàng, trong logic UI, kết xuất và những thứ tương tự. Tất nhiên phía máy chủ sẽ không bao giờ biến mất, nhưng giảm xuống còn REST-api (hoặc SOAP cho vấn đề đó).
Bruno Schäpper

3
Sự thay đổi này đến và đi. Thông thường việc phát triển front-end trở nên phổ biến hơn khi các công nghệ mới được giới thiệu (Shockwave, Flash, JavaFX, Flex) hoặc các khung js mới lớn đang cố gắng "chiếm lấy thế giới" (motools, jquery, v.v.)
Andrzej Bobak

1
@VainFellowman: Bạn thực sự không muốn sử dụng SOAP trong tập lệnh phía máy khách. Có quá nhiều chi phí, phân tích cú pháp là một nỗi đau và bạn không giành được nhiều chiến thắng vì Javascript với kỷ luật gõ động của nó sẽ không thể sử dụng nhiều thông tin loại SOAP.
tdammers

1
@tdammers Tôi không muốn, thực sự tôi không. Tôi không thấy bất kỳ điểm nào trong việc sử dụng SOAP qua HTTP. REST phù hợp với hầu hết mọi thứ.
Bruno Schäpper

Câu trả lời:


7

Đây là sự thật:

Vội vàng về phía khách hàng trong phát triển web

Nhưng nó không giới hạn phía khách hàng, nó là một phong trào ngăn xếp đầy đủ.

Tôi biết điều này có thể gây ngạc nhiên. Xin vui lòng, nghe tôi nói.

Tại sao lại như vậy? Làm thế nào để phát triển phía máy khách mới và "khuếch tán" trong HTML5 / JS có thể vượt trội hơn các giải pháp phía máy chủ lớn và được suy nghĩ tốt?

Trước hết, cả hai đều suy nghĩ tốt.

Thứ hai, vì nó tốt hơn.

Câu hỏi hay.

Nhưng "tốt hơn" là chủ quan, vì vậy câu trả lời cho câu hỏi của bạn là, cái gì cụ thể là tốt hơn?

Truy cập lại câu hỏi:

Làm cách nào để "khuếch tán" việc phát triển phía máy khách trong HTML5 / JS có thể vượt trội so với các giải pháp phía máy chủ lớn?

Because small is nimble.
And big is clunky.

Đó là sự linh hoạt.

Có vẻ như không phải là một vấn đề lớn. Phải không? Uyển chuyển.

Tuy nhiên, sự linh hoạt làm nền tảng cho mọi thứ. Một cải tiến trong tính linh hoạt - cải thiện mọi thứ.

Bảo trì. Khả năng mở rộng. Khả năng mở rộng. Tính mô đun. Tính khả dụng. UX.

Và nó là nhanh hơn để thực hiện. Đây là sự thật. Nhanh hơn và tốt hơn.

This is why Windows 8 made JS a first-class citizen.

HTML5 - JS, không phải là mốt nhất thời và nó sẽ không biến mất. Chúng ta chỉ thấy hạt giống của một công nghệ sẽ phát triển để cung cấp nội dung điện toán và hành vi tương tác cho máy tính bảng. Máy tính bảng.

Điện thoại thông minh là phương tiện truyền thông đại chúng nhanh nhất kể từ TV vào những năm 1950. Bây giờ, không chỉ chúng ta có điện thoại thông minh - chúng ta còn có Máy tính bảng.

Đã được phát triển tại Mozilla và Windows, HĐH sẽ chạy trên các thiết bị tương lai trong thị trường của họ -> HTML / JS.

Nhiều giải pháp và đổi mới vẫn còn.

Một chồng đầy đủ của JS đang nổi lên, dựa trên tính linh hoạt.

Tôi hy vọng điều đó sẽ giúp.


1
Câu trả lời chính xác! Nhưng các khung phía máy chủ hứa hẹn những lợi ích tương tự, phải không?
Bruno Schäpper

1
Vâng thưa ông, các khung phía máy chủ hứa hẹn những lợi ích tương tự, vâng. Những gì cần được biết là có những lợi ích bổ sung, được tìm thấy bất ngờ, trong công nghệ mới nổi. Nó ở mức thấp nhất (c) trong io. Các chủ đề chờ đợi. Trong JS nó có một cuộc gọi lại. Nó không chờ đợi. Vì vậy, có một tối ưu hóa io ở mức thấp nhất. Nhận thức này bây giờ, lặng lẽ, được Microsoft áp dụng một cách rộng rãi. Đó là lý do tại sao hệ điều hành của họ là JS. Điểm cuối cùng, điều này mang lại tối ưu hóa và tối ưu hóa meta - ở tất cả các cấp. Bởi vì ngôn ngữ là linh hoạt. Một điều đơn giản - vô hình. Không biết. Mong rằng sẽ giúp.
Jack Stone

1
Tôi đã chọn chấp nhận câu trả lời này, bởi vì nó là câu trả lời đầy đủ nhất. Tất cả những người khác có điểm tốt, nhưng đây là kết luận nhất. Cảm ơn mọi người!
Bruno Schäpper

9

Câu chuyện này luôn có hai mặt của nó; cả mã phía máy chủ và mã phía máy khách đều có ưu và nhược điểm.

Ưu điểm của kịch bản phía máy khách bao gồm:

  • Có thể được thực hiện nhanh hơn, có thể thay đổi rộng rãi mà không cần máy chủ khứ hồi.
  • Mã chạy trên máy khách, giảm việc sử dụng tài nguyên trên máy chủ.
  • Sự tách biệt giữa logic và trình bày trở thành vật lý.
  • Đôi khi dễ dàng cân bằng tải hơn, đặc biệt nếu xác thực theo yêu cầu được sử dụng.

Nhưng kịch bản phía máy chủ cũng có rất nhiều lợi thế:

  • Bạn điều khiển máy chạy mã.
  • Khá nhiều thứ có thể - nếu máy chủ của bạn có thể làm điều đó, thì kịch bản của bạn cũng vậy.
  • Người dùng không thể sửa đổi tập lệnh của bạn trước khi chạy nó.
  • Người dùng không thể sử dụng trình chặn tập lệnh để ngăn tập lệnh của bạn chạy.
  • Người dùng không thể xem tập lệnh của bạn làm gì, họ chỉ có thể quan sát đầu ra.
  • Mã này sẽ hoạt động đáng tin cậy với mọi khách hàng mà bạn có thể tưởng tượng, bao gồm trình đọc màn hình, trình duyệt web văn bản, trình thu thập công cụ tìm kiếm, người dọn dẹp, bộ tích lũy, bot IRC, máy siêu cấp thấp, trình duyệt được mã hóa, bạn đặt tên cho nó.
  • Plugin người dùng ít có khả năng bị hỏng.

Đối với các ứng dụng web rất năng động, cách tiếp cận lấy khách hàng làm trung tâm luôn là lựa chọn phổ biến, bởi vì đó là cách duy nhất để cung cấp trải nghiệm người dùng giống như máy tính để bàn đáp ứng tốt: không có kịch bản phía máy khách, mỗi hành động của người dùng đều cần một vòng chuyến đi, có nghĩa là chậm trễ ít nhất nửa giây, thường là nhiều hơn. Nhưng đối với một trang web thông tin về cơ bản chỉ là một loạt các trang tĩnh được phục vụ từ cơ sở dữ liệu (giả sử, wikipedia), lợi thế là không đáng kể, trong khi lợi ích của việc tạo kịch bản phía máy chủ vẫn còn quá lớn.

Sự cường điệu quan sát đến từ sự kết hợp của hai phát triển gần đây:

  1. HTML5 và corona của các công nghệ liên quan. Mất quá nhiều thời gian, nhưng cuối cùng chúng tôi cũng có một tiêu chuẩn chứa mọi thứ bạn cần để tạo ra các ứng dụng web giống như máy tính để bàn mà không cần phải hack, và các trình duyệt chính thực hiện chúng đúng cách.
  2. Sức mạnh xử lý có sẵn. Máy tính để bàn hàng hóa ngày nay cũng mạnh như máy chủ web cấp nhập cảnh, điện thoại di động cấp khách hàng thực tế là máy tính để bàn năm 2005 và việc triển khai javascript hiện đại đủ hiệu quả để làm nghiêng sự cân bằng hiệu suất: bây giờ, tài nguyên phía máy khách rẻ hơn máy chủ tài nguyên.

Trong thực tế, không có gì thay đổi về những gì các phương pháp tiếp cận tập trung vào máy chủ và khách hàng là tốt; Điều đã thay đổi là việc lấy khách hàng làm trung tâm giờ đây dễ dàng hơn và rẻ hơn để thực hiện và hoạt động tốt hơn so với một vài năm trước đây, khiến nó trở thành lựa chọn khả thi cho nhiều ứng dụng hơn trước đây.


sự thật phũ phàng ... +1.
Jack Stone

8

Phía máy chủ sẽ luôn ở xung quanh. Bạn không thể ngồi ở phía khách hàng cho tất cả mọi thứ. Ví dụ: bạn sẽ không muốn sử dụng thiết kế Backbone.js cho bộ điều khiển vi mô gửi cho bạn các tham số trong thời gian thực từ một cần trục trên sàn sản xuất.

Đừng tin vào sự cường điệu.


Nói với tôi. Là JS trong Windows 8, cường điệu? -1. Tôi đồng ý với điểm đầu tiên, nhưng điểm thứ hai của bạn về sự cường điệu, cần làm rõ.
Jack Stone

JS không dành riêng cho phía khách hàng và đã không được một thời gian.
Erik Reppen

@ClintNash ya, thực sự. Ms đã cho phép j xây dựng các ứng dụng win8 để tăng số lượng nhà phát triển tiềm năng cho nền tảng của họ. Đó là một phản ứng cho những người chọn học các công nghệ đó qua các công nghệ máy tính để bàn. Nhưng là một rev đã biết c # / wpf, tôi thấy không có lý do gì để xây dựng một ứng dụng win8 với html / js.
Andy

@ErikReppen điều này là đúng, nhưng một mình js không cắt nó trên máy chủ, bạn cần một khung để xây dựng. Thực sự mong muốn sử dụng tập lệnh trên máy chủ gây khó khăn cho tôi. Chúng tôi đã làm điều đó rồi, đó là ASP cổ điển và tôi thực sự không muốn lặp lại trải nghiệm đó.
Andy

@Andy Trên ASP cổ điển (đặc biệt là các mẫu web), bạn sẽ thấy không có sự thỏa thuận nào với bất kỳ nhà phát triển JS nào có điều không may gặp phải với các công cụ mà chúng tôi chắc chắn không muốn quay lại đó lần nữa. Nhưng đó là công cụ kịch bản phía máy chủ dựa trên thẻ ít được nhớ đến nhất của yesterdecade và có lẽ là giải pháp máy khách mỏng bị coi thường kịch liệt nhất từng thấy mức độ phổ biến. So sánh điều đó với một cái gì đó như Python và bây giờ là JS ở phía máy chủ đang giáp với việc bảo mọi người lấy một con ngựa.
Erik Reppen

6

Tôi đã thực hiện chuyển đổi vào năm 2009 từ khung công tác PHP phía máy chủ sang giải pháp ExtJS phía máy khách gắn liền với các dịch vụ web phía máy chủ.

Lý do cho việc di chuyển đối với tôi là:

  1. Bảo mật tốt hơn bằng cách giảm số lượng điểm cuối và mã trên máy chủ.
    Bằng cách di chuyển đến các dịch vụ web, bạn xác thực đầu vào tại ranh giới dịch vụ web và có quyền kiểm soát chính xác hơn đối với I / O của máy chủ của bạn. Không có lớp UI phía máy chủ để làm rối kiến ​​trúc bảo mật của bạn.
  2. Hiệu suất được cải thiện do có ít vòng máy chủ hơn
    Kiến trúc thay đổi để việc tìm nạp dữ liệu có thể xảy ra ít thường xuyên hơn và dữ liệu có thể được lưu trữ cục bộ với kết xuất UI không yêu cầu làm tròn số. Roundtrips là những gì giết hiệu suất ứng dụng web.
  3. Hiệu suất được cải thiện do
    khả năng lưu trữ của giao diện người dùng Lớp UI có thể được lưu trữ hoàn toàn trên CDN. Tôi thậm chí đã xây dựng các ứng dụng web ngoại tuyến bằng cách chuyển mã UI vào bộ đệm ứng dụng HTML5.
  4. Độ trung thực cao hơn của UI (điều khiển phía máy khách phong phú)
  5. Các nhà phát triển bên thứ 3 có thể sử dụng cùng API như giao diện người dùng của riêng tôi đang sử dụng và tôi có thể dễ dàng sử dụng lại các API trên các mô-đun nếu họ chia sẻ các tính năng.
    Điều này có nghĩa là ít phát triển, QA, tài liệu, ...
  6. Tôi thích lập trình bằng JavaScript tốt hơn PHP, Python hoặc Java

Nhưng, đừng nhầm lẫn, những gì đang xảy ra bây giờ là một sự cường điệu. Nó sẽ nổ tung và nhiều ứng dụng web sẽ sử dụng lại kiến ​​trúc UI phía máy chủ.


Cái gì, cường điệu? -1 Chúc may mắn với điều đó khi Windows 8 biến JS trở thành công dân hạng nhất. Có, kiến ​​trúc UI phía máy chủ được viết bằng node.js có thể. Chúng ta cần học nó vì nó không chặn.
Jack Stone

Tôi không nghĩ rằng chúng tôi sẽ sớm trở lại với các giải pháp khách hàng dày. Nhưng nếu tôi đã sử dụng ExtJS cho bất kỳ vấn đề nào phức tạp hơn việc xử lý giao diện người dùng web trước fab (tức là tất cả các vấn đề bất kể kế hoạch ban đầu), tôi có thể thấy tại sao giải pháp thay thế có vẻ ít lý tưởng hơn.
Erik Reppen

6

Một yếu tố khác đang thúc đẩy sự nhiệt tình cho các giải pháp phía khách hàng là sự phát triển của các ứng dụng di động. Nếu bạn tạo một trang web dựa nhiều vào JavaScript và AJAX phía máy khách, đồng thời xây dựng các ứng dụng iOS và Android gốc, rất có thể cả ba có thể sử dụng cùng một dịch vụ REST để thực hiện tất cả dữ liệu của họ .


Nói tốt ... +1.
Jack Stone

Điểm rất tốt thực sự.
Bruno Schäpper

4

Trước hết, người dùng không nhìn thấy (và đôi khi thậm chí không quan tâm) những gì không phải là máy chủ. Cho dù mã phía máy chủ được viết tốt đến đâu, người dùng sẽ không đánh giá cao ứng dụng nếu phần máy khách không được thực hiện tốt. Đôi khi ngay cả giao diện người dùng đẹp cũng quan trọng hơn chức năng.

Một máy chủ lưu trữ lớn và mạnh mẽ là khá tốn kém. Nó rẻ hơn nhiều để thực hiện một số logic (ngoại trừ xác nhận) ở phía máy khách. Vì vậy, bạn có thể sử dụng một máy chủ lưu trữ nhỏ hơn (do đó, rẻ hơn), vì nó sẽ không được tải nhiều như vậy.

Đây là những lý do mà mặc dù không ổn định, các công nghệ phía khách hàng đang trở nên phổ biến hơn. Ngoài ra, JS và HTML / CSS được hỗ trợ bởi (gần như) tất cả các trình duyệt hiện đại.

Hai phần của ứng dụng không thể tồn tại riêng biệt. Và Internet dường như sẽ không rời đi bất cứ nơi nào trong tương lai gần.
Tôi cũng không nghĩ rằng nó big server-side frameworkscó khả năng biến mất. Sẽ luôn có những công ty có thể chi trả cho họ, và sẽ sử dụng những lợi thế đáng kể của họ.


4

Phát triển web phía khách hàng được kết hợp chặt chẽ với các trình duyệt web và thay đổi chúng theo thời gian. Giải pháp bạn cung cấp bây giờ có thể không hoạt động trong một vài tháng do những thay đổi đáng kể trong công cụ kết xuất trang của trình duyệt web. Một số trình duyệt không / không tương thích với các tiêu chuẩn và do đó đòi hỏi nhiều nỗ lực hơn nữa từ các nhà phát triển chỉ để đạt được kết quả mong đợi.

Có một số giải pháp cố gắng khắc phục vấn đề này. Ví dụ: nếu bạn sử dụng jquery, bạn chắc chắn rằng tập lệnh của bạn sẽ hoạt động trên các trình duyệt được thư viện jquery đặc biệt này hỗ trợ. Nhưng chỉ có các tác giả của nó cung cấp cho bạn khả năng tương thích với một số / hầu hết / tất cả các trình duyệt. Câu hỏi là đội nào sẽ hỗ trợ bạn tốt hơn. Nó sẽ là đội motools, đội jquery, đội khác? Nếu họ không cung cấp hỗ trợ cho một trình duyệt web cụ thể, dự án của bạn có thể không hoạt động trong trình duyệt đó.

Sự phấn khích mà bạn dường như đã có từ lâu. Tôi đã nhìn thấy nó khi Shockwave và Flash kế nhiệm của nó được giới thiệu, có một "sự trở lại lớn" của giao diện người dùng phong phú khi các thư viện js phức tạp được chuyển đến, đầu tiên là với motools, sau đó là jquery (tôi bắt đầu sử dụng chúng theo thứ tự này). Có Flex và JavaFX. Nhưng không ai trong số họ có thể có được một phần lớn trên thị trường. Một số yêu cầu các plugin thường xuyên khiến người dùng cuối gặp phải các lỗ hổng bảo mật, một số plugin khác có thể không hoạt động ở phía máy khách do một số cài đặt tùy chỉnh (ví dụ: JavaScript bị vô hiệu hóa trong trình duyệt của máy khách).

Mặt khác, giải pháp phía máy chủ thường chỉ được viết một lần. Bạn không cần phải lo lắng rằng mọi thứ sẽ thất bại và sẽ phải viết lại sau khi Firefox / Chrome / IE / Opera mới được xuất xưởng. Bạn cũng không cần phải lo lắng rằng khách hàng sẽ cố gắng giả mạo ứng dụng của bạn và / hoặc làm hỏng dữ liệu.


1
Đó không phải là trí tưởng tượng thuần túy sao? Bạn có thể sẽ phải thay đổi công cụ phía máy chủ của mình khi khách hàng thay đổi, vì bạn sẽ không nhận được vòng tạo HTML / JS / CSS tại một số điểm.
Bruno Schäpper

1
Một điều nữa, 'Phát triển web phía khách hàng được kết hợp chặt chẽ với các trình duyệt web' - Công nghệ web là tiêu chuẩn chính thức, miễn là bạn tuân thủ nó, bạn đang thực hiện một tiêu chuẩn, không ghép ứng dụng của bạn với trình duyệt. Mặc dù cách đây không lâu, điều này không thực sự đúng, nhưng dường như là vào lúc này.
Bruno Schäpper

Trước hết hãy đọc cách một số trình duyệt không tuân theo các tiêu chuẩn (ví dụ Internet Explorer). Mọi thứ đã thay đổi theo thời gian, nhưng ngay cả với IE7 tôi cũng gặp phải những vấn đề khủng khiếp do cách diễn giải những gì tôi đã viết. Cũng đọc một vài bài viết về sự tương thích giữa các trình duyệt. Vấn đề này sẽ không tồn tại nếu mọi nhà cung cấp trình duyệt web tuân theo các tiêu chuẩn. Thứ hai, nếu tập dữ liệu thay đổi, bạn phải thay đổi logic kinh doanh của mình, điều đó là hiển nhiên. Nhưng khi IE mới được xuất xưởng và bạn phải viết lại khoảng 30% mã chỉ để làm cho mã hoạt động trên trình duyệt mới - có gì đó không đúng
Andrzej Bobak

Tất nhiên tôi biết nó đau đớn như thế nào và là làm cho mọi thứ hoạt động trong mọi trình duyệt. Nhưng công việc này phải được thực hiện bất kể phía máy chủ hay phía máy khách (vì cuối cùng bạn vẫn phải sử dụng trình duyệt). Tôi chắc chắn đồng ý về điểm thứ hai của bạn. Tuy nhiên, tôi không thấy 30% được viết lại. Một số thay đổi có thể là cần thiết, nhưng tôi nghi ngờ nó cũng tệ như ngày xưa. Mặt khác, bạn phải làm lại mọi thứ dựa trên lớp dịch vụ, nếu bạn muốn thay thế ngăn xếp phía máy chủ của mình. Vì vậy, bạn RẤT gắn kết chặt chẽ với việc thực hiện phía máy chủ của bạn. Có thể từ đỉnh của UI đến mô hình.
Bruno Schäpper

-1

Hoàn toàn đồng ý với tình cảm của bạn. Tôi cũng tin rằng ngoài những gì bạn đang nói, chúng ta sẽ chứng kiến ​​sự sụt giảm đáng kể của REST và sự bùng nổ lớn trong các websockets cho cách chính mà chúng ta thấy các trang web giao tiếp trở lại máy chủ của họ. Vert.x, Node.js, v.v., toàn bộ phía máy chủ, cũng như phía máy khách, đang chuyển sang lập trình hướng sự kiện. Java EE, PHP, Rails, v.v. tất cả đều cần thích nghi hoặc họ sẽ mất rất nhanh.


Nếu không có lời giải thích, câu trả lời này có thể trở nên vô dụng trong trường hợp nếu người khác đăng một ý kiến ​​khác. Ví dụ: nếu ai đó đăng một khiếu nại như "chúng ta sẽ không thấy REST giảm mạnh và sự bùng nổ lớn trong websockets", câu trả lời này sẽ giúp người đọc chọn những ý kiến ​​khác nhau như thế nào? Xem xét chỉnh sửa ing nó thành một hình dạng tốt hơn
gnat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.