Trang Chủ Suy nghĩ tiến tới Sự trở lại của máy tính-máy chủ?

Sự trở lại của máy tính-máy chủ?

Video: Nhóm đạo chÃch càn quét công sở, cá»a hàng ở Hà TÄ©nh (Tháng mười một 2024)

Video: Nhóm đạo chÃch càn quét công sở, cá»a hàng ở Hà TÄ©nh (Tháng mười một 2024)
Anonim

Một trong những điều tôi thấy thú vị trong thế giới phát triển trong vài tháng qua là cách các ứng dụng hiện đại đang quay trở lại đặt nhiều trí thông minh hơn vào máy khách thay vì máy chủ. Tất nhiên, mô hình máy khách-máy chủ không có gì mới: đó là cách các ứng dụng truyền thống đã được xây dựng trong nhiều năm, với các ứng dụng khách phong phú nói chuyện với các ứng dụng phía máy chủ. Nhưng trong kỷ nguyên của Web và thậm chí là Web 2.0, trọng tâm đã chuyển sang các ứng dụng web trong đó phần lớn trí thông minh nằm trên máy chủ Web (thường là trong các máy chủ ứng dụng dựa trên Java) và máy khách chỉ là một trang Web đơn giản trong một trình duyệt mà mỗi lần bạn nhấp, bạn đã tải một trang mới.

Nhưng gần đây, sự trưởng thành của HTML5, CSS và đặc biệt nhất là JavaScript đang dẫn đầu các nhà phát triển đưa trí thông minh thực sự và xử lý thực sự vào chính trang Web. Đặc biệt, chúng tôi đã chứng kiến ​​sự gia tăng của một loạt các khung công tác dựa trên JavaScript phía máy khách, giúp tạo các giao diện thông minh chạy hoàn toàn trong trình duyệt Web hiện đại dễ dàng hơn. Các trình duyệt liên quan thường là những trình duyệt dựa trên công cụ Webkit, bao gồm Chrome và Safari, nhưng hầu hết các ứng dụng dường như cũng chạy tốt trong các phiên bản hiện tại của Firefox và Internet Explorer. Bạn kết thúc với một trang Web phức tạp hơn thay đổi linh hoạt, lấy dữ liệu từ máy chủ khi cần.

Ba khung MVC đặc biệt dường như đang được chú ý nhiều nhất: Backbone.js, Ember.js và Angular.js. (MVC là viết tắt của trình điều khiển chế độ xem mô hình - về cơ bản là kiến ​​trúc đằng sau điện toán máy khách web. "Js" là viết tắt của JavaScript.) Về cơ bản, đây là tất cả sự phát triển của phương pháp AJAX (JavaScript không đồng bộ và XML) phổ biến trong thập kỷ qua hoặc vì vậy, nhưng trưởng thành hơn nhiều và gần như tiêu chuẩn hóa. Ý tưởng là đưa thêm trạng thái và trí thông minh vào trình duyệt, sau đó để trình duyệt kết nối với API REST ở phía máy chủ.

Xương sống có lẽ là cơ bản nhất và tối thiểu của các khung này; nó được sử dụng cho nhiều mức độ khác nhau bởi nhiều trang web phổ biến. Ember đã phát triển từ một khung gọi là Sproutcore mà Apple hỗ trợ và là một khung toàn diện hơn nhiều được thiết kế để cho phép bạn thực hiện các ứng dụng kiểu máy tính để bàn. Nó thường được sử dụng với Bootstrap, một bộ mẫu cho HTML và CSS do các nhân viên Twitter tạo ra ban đầu. Angular là sự thay thế của Google mà dường như ở đâu đó ở giữa một số người cho rằng nó linh hoạt hơn một chút hoặc ít nhất là "ít quan điểm" hơn Ember nhưng toàn diện hơn Backbone. (Lưu ý Google đang thúc đẩy các nhà phát triển sử dụng Angular để cải thiện chất lượng mã hóa, nhưng thực tế bên trong sử dụng một bộ khung khác, độc quyền.) Thậm chí Microsoft đã thêm móc vào Visual Studio cho các khung này.


Đây là Web, có hàng tá lựa chọn thay thế. Một trong những điều thú vị hơn mà tôi đã nghe gần đây là Meteor, được thiết kế để hoạt động với JavaScript ở cả phía máy khách và máy chủ. Nhưng điều này vẫn còn rất sớm và tôi chưa biết bất kỳ người dùng thực sự nào. Trong khi đó, nhiều nhà phát triển đang chơi với Node.js, thường được sử dụng để triển khai JavaScript phía máy chủ.


Lợi thế của các khung như vậy có vẻ rõ ràng. Các ứng dụng web-client phong phú mạnh hơn các ứng dụng khách mỏng, nơi mọi thứ chạy trên máy chủ, chúng có thể cung cấp giao diện người dùng tốt hơn và cung cấp khả năng thông tin ngoại tuyến. Sử dụng các khung này, bạn có thể tạo các ứng dụng khách Web phong phú nhanh hơn nhiều so với khả năng của mình bằng cách xây dựng mọi thứ từ đầu và tận dụng các cộng đồng phát triển xung quanh mỗi ứng dụng.


Có lẽ quan trọng nhất, bạn có thể tạo các ứng dụng di động mở rộng ra các thiết bị khác nhau mà không phải viết các ứng dụng gốc cụ thể. Vẫn còn một lập luận tốt được đưa ra cho các ứng dụng gốc, có thể giải quyết trực tiếp hơn các tính năng cụ thể của từng nền tảng. Tuy nhiên, rất nhiều nhà phát triển đã tìm thấy các khung như vậy có thể tăng tốc đáng kể sự phát triển đa nền tảng, đặc biệt khi được sử dụng cùng với những thứ như PhoneGap, một khung di động nguồn mở được Adobe mua và mở nguồn cho dự án Apache Cordova.


Tất nhiên, thiết bị di động mang đến những hạn chế riêng của nó, bao gồm cả tốc độ của bộ xử lý và có lẽ quan trọng hơn là tốc độ của các bộ phận và đôi khi thiếu kết nối. Một lý do khiến mọi người thích các ứng dụng trên các trang Web là vì bạn thường có thể tải xuống các chức năng cơ bản qua Wi-Fi hoặc kết nối nhanh và chỉ cần lấy dữ liệu bạn cần tải xuống, chứ không phải toàn bộ thiết kế. Các gói như PhoneGap giải quyết vấn đề này bằng cách đưa JavaScript vào ứng dụng đã tải xuống.


Tuy nhiên, có những vấn đề khác với khung như vậy. Theo định nghĩa, việc tính toán nhiều hơn ở phía máy khách làm tăng độ phức tạp so với một ứng dụng chỉ dành cho máy chủ đơn giản và thực tế, một số nhược điểm của mô hình máy khách-máy chủ cũ sẽ quay trở lại. Các nhà phát triển cần quản lý nhà nước ở cả hai bên. Mã ở hai nơi có nghĩa là bạn cần tập trung vào bảo mật ở cả hai nơi. Vì một nhóm phát triển thường có một số người làm việc trên máy khách và những người khác trên máy chủ, bạn sẽ gặp các vấn đề liên lạc bổ sung. Mặt khác, một số vấn đề cũ của máy khách-máy chủ không quay trở lại và thay vào đó bạn giữ các lợi ích của phần mềm Web. Đây là một thế giới dựa trên tiêu chuẩn, hướng đến cộng đồng nhiều hơn, vì vậy bạn không phụ thuộc vào một môi trường độc quyền duy nhất. Bằng cách phân chia các phần phía máy khách và máy chủ, bạn cũng có thể có một triển khai phía máy chủ đơn giản hơn, đơn giản hơn, chỉ xử lý và không phải UI và có thể cần ít tài nguyên hơn. Tuy nhiên, bạn vẫn có lợi thế là có thể cập nhật tất cả các máy khách cùng một lúc, vì thông thường trình duyệt tải mã từ máy chủ khi ứng dụng được gọi.


Chúng tôi rõ ràng đang thấy một động thái hướng tới các máy khách Web thông minh hơn, không phải trong mọi trường hợp, mà trong nhiều ứng dụng mới. Việc lấy các ứng dụng cũ hơn và chuyển chúng sang mô hình này khó hơn nhiều, nhưng chúng tôi cũng thấy một số điều đó. Nó không hoàn toàn là mô hình máy khách-máy chủ cũ, nhưng nó ngày càng gần hơn.

Sự trở lại của máy tính-máy chủ?