2010-02-13 39 views
6

Tôi đang cân nhắc tạo một trang web với sự phức tạp của Facebook có thể mở rộng thành hàng triệu người dùng. Câu hỏi của tôi là: Có lý do gì để không sử dụng Adobe Flex cho dự án lớn như vậy ngoài điểm rõ ràng của việc yêu cầu mọi người cài đặt Flash và không phải dựa vào Adobe không? Theo quan điểm của tôi, Adobe Flex sẽ giảm tải máy chủ cho Facebook, bởi vì nhiều công việc hơn tôi có thể thực hiện ở phía khách hàng. Bạn có đồng ý không?Facebook có thể được triển khai trong Adobe Flex không?

+3

Tôi thực sự vui vì nó không được triển khai trong Flex, nó sẽ không thể không sử dụng facebook trên hệ điều hành nguồn mở của tôi. – Earlz

Trả lời

7

Tất nhiên, Facebook có thể đã được triển khai trong Flash. Nhưng sau đó câu hỏi là nó sẽ thành công? Có nhiều lý do khiến các công ty web lớn như Google, Facebook và Yahoo chỉ sử dụng Flash càng ít càng tốt.

Điều tôi sợ nhất là người dùng xa lánh. Plugin Flash không phải là phần mềm tốt nhất trên mạng. Nó là chậm và có khả năng sụp đổ một lần trong một thời gian. Nếu ứng dụng của bạn trở nên lớn hơn, bạn có thể nhận được một số thời gian tải có thể không được chấp nhận đối với người dùng của bạn. Ngoài ra trong ý kiến ​​của tôi đầy đủ các trang web Flash chỉ không cảm thấy đúng vì họ hành xử khác nhau từ các trang web HTML. Tất cả các trang web tuyệt vời như Google, Flickr, Stackoverflow hoặc Facebook đều cảm thấy rất nhẹ nhàng và mượt mà rất tao nhã tạo nên sự tiện dụng tuyệt vời.

Và sau đó HTML và JavaScript linh hoạt hơn rất nhiều. Bạn có muốn trang web của mình khả dụng trên smartphonse không? IPhone không có Flash và thậm chí cả điện thoại mà bạn gặp vấn đề khiến người dùng rất ghét trang web Flash đầy đủ vì những điện thoại này không nhất thiết phải quy mô Flash như quy mô HTML và Flash thu hút pin như điên. Nếu ai đó đến với một cuộc cách mạng như điện thoại thông minh, bạn có thể chắc chắn rằng nó hỗ trợ HTML và JavaScript nhưng bạn không thể chắc chắn về Flash.

Sau đó, câu hỏi là bạn sẽ đạt được hiệu quả như thế nào? Tất nhiên bạn có thể viết giao diện người dùng với Flex và chỉ cần gọi các dịch vụ web rất nhẹ như bạn sẽ sử dụng chúng cho AJAX và thậm chí bạn có thể lưu một số nội dung của trang web cục bộ để không truyền tải nhiều dữ liệu hơn khi cần thiết cho tương tác người dùng (giao diện người dùng chỉ được truyền một lần). Nhưng bạn cũng có thể làm điều đó với JavaScript. Bạn có thể viết giao diện người dùng của mình bằng HTML và JavaScript, tải nó một lần và sau đó chỉ cần kéo dữ liệu JSON thông thường từ các máy chủ và hiển thị nó bằng JavaScript.Bạn cũng có thể tìm nạp nhiều dữ liệu này trước để nhận được số lượng yêu cầu giảm xuống. Nhưng vẫn còn một cách tiếp cận như vậy có khuyết điểm của nó. Bạn đã bao giờ nhận thấy rằng khi bạn gõ một câu trả lời trên stackoverflow và ai đó khác gửi một câu trả lời bạn nhận được thông báo trong khi gõ câu trả lời của bạn. Các tính năng thời gian thực như vậy rất hay và bạn có thể muốn điều này tại một thời điểm nào đó có nghĩa là tương tác với máy chủ hơn.

Nhưng bất cứ điều gì bạn làm cho máy chủ của mình vẫn phải mở rộng quy mô nếu trang web của bạn phát triển. Ngay cả khi bạn giảm thiểu số lượng yêu cầu GET đạt đến máy chủ của mình, chúng sẽ vẫn phát triển rất nhiều khi trang web của bạn trở nên phổ biến và bạn sẽ cần nhiều máy chủ để xử lý, bạn sẽ chỉ cải thiện tỷ lệ người dùng/máy chủ của mình.

Điểm thú vị nhất là Flex dễ lập trình hơn AJAX (suy nghĩ về tính không tương thích của trình duyệt) và AJAX vẫn không chỉ được phát minh mà cả thế giới lẫn lộn với tất cả những vấn đề đi kèm với nó thay vì sử dụng Flex. Tôi nghĩ rằng điều này cho biết rất nhiều về giá trị của kết quả bạn nhận được khi tạo một trang web đầy đủ trong Flash.

4

Truy cập vào facebook và xem nguồn ... bạn có thấy tất cả JavaScript đó không? Tất cả điều đó chạy phía máy khách

+0

Nhưng những thứ như đa luồng là như xa như tôi biết chỉ được hỗ trợ bằng cách sử dụng GoogleGears. Điều này có nghĩa là việc sử dụng máy khách sẽ phức tạp hơn nhiều. – David

+0

@David, tôi tin rằng mã phía khách hàng sử dụng quá mức của bạn sau đó .. Bạn không nên cần mã đa luồng để chạy trong trình duyệt cho tất cả các mục đích thực tế. (bạn có biết mình không giả sử tạo các truy vấn SQL ở phía máy khách không?) – Earlz

+0

khách hàng của bạn sẽ gọi một dịch vụ trên máy chủ có thể song song ở đó..cho tất cả các bạn biết máy khách vẫn đang chạy một hộp PIII 600 MHZ. . – SQLMenace

2

Flex là GUI cho ứng dụng khách. Bạn vẫn cần lưu trữ phía máy chủ và đó là những gì phải mở rộng. Giao diện người dùng có thể ở Flex, trong khi hầu hết người dùng của bạn sẽ không thích giao diện như vậy.

+0

Điều quen thuộc, là một điểm tốt. – David

+0

Tôi không nhận được các downvotes ở đây (có lẽ các tuyên bố tranh luận về "người dùng sẽ không thích giao diện như vậy"?) Vấn đề cơ bản của khách hàng so với máy chủ là một điểm rất hợp lệ. – jeroenh

1

Bạn sẽ phải thực hiện phiên bản tùy chỉnh của trang web cho iPad/iPhone.

Có nhiều cách khác để di chuyển tải về phía máy khách. Javascript sẽ cung cấp cho bạn những cơn đau đầu, nhưng ít hơn là di chuyển ra khỏi toàn bộ kiến ​​trúc như Flex.

OTOH khi bạn nhận được một triệu người dùng, bạn sẽ có tài nguyên để triển khai lại trang web của mình.

+0

Hỗ trợ Ipad/iphone là một điểm tuyệt vời. Thực hiện lại một trang web không bao giờ thuận lợi, ngay cả với các tài nguyên gần như không giới hạn. – David

+0

Xin lỗi, tôi đã được một chút facetious :-) Câu trả lời đúng là, khi bạn có "triệu người dùng", bạn sẽ có thể trả tiền cho người khác để reimplement nó cho bạn, hoặc bán nó cho Google :-) –

+0

Bằng cách này tôi nghĩ rằng facetious là một tên tuyệt vời cho một bản sao Facebook :-) –

4

Johannes có quyền chỉ ra sự khác biệt cho máy chủ so với khách hàng. Các công cụ phía máy chủ là những gì cần phải quy mô.

Ví dụ: nhóm Microsoft Silverlight đã lắp ráp facebook client app in silverlight (sử dụng API công khai của Facebook). Quan điểm của tôi là, sử dụng công nghệ ngày nay, hoàn toàn có thể viết một ứng dụng web nhắm vào nhiều loại công nghệ khách hàng khác nhau: trình duyệt web cổ điển (HTML/javascript), 'ứng dụng internet phong phú' (flex, silverlight), ...

Xem thêm vô số ứng dụng khách Twitter trên mạng.

+0

Tôi thích quan điểm của bạn về việc sử dụng nhiều khách hàng. Mặc dù vậy, tính năng này phức tạp hơn. – David

4

Công ty tôi làm việc cho có một ứng dụng lớn trong Flash được Chính phủ sử dụng. Nó là rất khó để duy trì và không đôi khi thất bại. Vấn đề là tất cả các tệp .fla và .as phải được thay đổi chỉ để thực hiện một thay đổi nhỏ. Có, ứng dụng có thể đã được xây dựng tốt hơn nhưng ngay cả như vậy, vẫn khó duy trì hơn so với giao diện người dùng HTML/JavaScript.

Trong khi tôi thích viết ứng dụng Flash/Flex, tôi tin rằng họ nên bổ sung một trang web và không phải là trang web.

Sử dụng khung JavaScript tốt như jQuery sẽ đưa ra câu hỏi về tính tương thích của trình duyệt ngoài ảnh (phần lớn) và cho phép nhiều chức năng.

+0

Tại sao nhiều tệp phải được cập nhật khi trang web được triển khai trong Flex? Điểm của bạn là việc tạo ra một kiến ​​trúc tốt trong Flex có khó khăn hơn trong HTML/Javascript không? – David

+0

Đây là trong Flash nhưng tương tự có thể xảy ra trong Flex. Có các tệp SWF chứa giao diện người dùng và logic giao diện người dùng, sau đó là các tệp AS chứa logic nghiệp vụ. Các tệp AS này phải liên lạc với lớp cơ sở dữ liệu phía máy chủ (trong trường hợp này là PHP). Điều đó có nghĩa là nếu bạn gặp sự cố, nó là trong PHP, AS hoặc SWF. Trong khi một ứng dụng PHP thường chỉ có một lớp PHP cho dữ liệu và một trang giao diện người dùng để giao tiếp với lớp đó. –

1

Tôi không nghĩ bạn sẽ thấy lợi thế về hiệu suất với trang web như Facebook, vì nội dung rất năng động, đến từ nhiều nơi khác nhau và được tạo bởi nhiều thực thể độc lập. Flash (và do đó Flex) là tốt hơn cho các ứng dụng nguyên khối từ một nguồn duy nhất mà không cần phải thay đổi rất thường xuyên.

Mặc định trong Flash là xây dựng mọi thứ thành một tệp .swf duy nhất chứa mọi thứ. Có thể thoát ra khỏi hành vi mặc định này, tất nhiên. Bạn có thể thực hiện cuộc gọi dịch vụ web, kéo các thành phần bên ngoài thông qua cơ chế SWC, tải nội dung tĩnh qua HTTP, v.v. Tuy nhiên, nó không phải là mẫu mặc định, ảnh hưởng đến cách các thư viện và công cụ phát triển Flash hoạt động. Bên cạnh đó, bạn càng làm được điều này, thì càng ít lợi ích "chạy mọi thứ chúng tôi có thể ở phía khách hàng" bạn sẽ nhận được. Nó được hấp thụ trong chi phí kết nối HTTP.

Giá trị mặc định trên trang web dựa trên chuẩn cũ đơn giản là lưu trữ tất cả nội dung một cách riêng biệt và lắp ráp chúng một cách linh hoạt tại máy khách. Đây là một lý do khiến web chậm - một lần nữa, tất cả các kết nối HTTP đó đều hoạt động - nhưng cũng là lý do tại sao nó linh hoạt và năng động. Nó phối hợp tốt với một trang web như Facebook đòi hỏi sự tiến hóa liên tục bởi rất nhiều nhà phát triển độc lập.

Tôi nói điều này đã phát triển một ứng dụng Flex, mà tôi hài lòng với. Chỉ có một người - tôi - phải duy trì nó, và nó tự nhiên là một ứng dụng nguyên khối. Nó chơi ngay vào thế mạnh của Flex.

+0

Điểm tuyệt vời. Cảm ơn – David

Các vấn đề liên quan