Vợ: Roy Fielding là ai?
Ryan: Một số người. Anh ấy thông minh.
Vợ: Ồ? Anh ấy đã làm gì?
Ryan: Anh ấy đã giúp viết các máy chủ web đầu tiên và sau đó thực hiện rất nhiều nghiên cứu giải thích lý do tại sao web hoạt động theo cách đó. Tên của anh ấy là trên đặc điểm kỹ thuật của giao thức được sử dụng để đưa các trang từ máy chủ đến trình duyệt của bạn.
Vợ: Nó hoạt động thế nào?
Ryan: Trang web?
Vợ: Ừ.
Ryan: Hừm. Vâng, đó là tất cả khá tuyệt vời thực sự. Và điều buồn cười là tất cả đều bị đánh giá thấp. Giao thức mà tôi đang nói đến, HTTP, nó có khả năng cho tất cả các loại công cụ gọn gàng mà mọi người bỏ qua vì một số lý do.
Vợ: Ý anh là http giống như bắt đầu những gì tôi gõ vào trình duyệt?
Ryan: Vâng. Đó là phần đầu tiên cho trình duyệt sử dụng giao thức nào. Những thứ bạn gõ vào đó là một trong những bước đột phá quan trọng nhất trong lịch sử điện toán.
Vợ: Tại sao?
Ryan: Bởi vì nó có khả năng mô tả vị trí của một cái gì đó trên thế giới từ bất cứ nơi nào trên thế giới. Đó là nền tảng của web. Bạn có thể nghĩ về nó như tọa độ GPS cho kiến thức và thông tin.
Vợ: Cho các trang web?
Ryan: Đối với bất cứ điều gì thực sự. Anh chàng đó, Roy Fielding, anh ta nói rất nhiều về những điều mà những điều đó chỉ ra trong nghiên cứu mà tôi đang nói đến. Web được xây dựng theo phong cách kiến trúc gọi là REST. REST cung cấp một định nghĩa về tài nguyên, đó là những gì những điều đó chỉ ra.
Vợ: Một trang web là một tài nguyên?
Ryan: Loại. Một trang web là một đại diện của một tài nguyên. Tài nguyên chỉ là khái niệm. URL - những thứ mà bạn nhập vào trình duyệt ...
Vợ: Tôi biết những gì một URL là ..
Ryan: Ồ, phải rồi. Những người nói với trình duyệt rằng có một khái niệm ở đâu đó. Một trình duyệt sau đó có thể yêu cầu một đại diện cụ thể của khái niệm này. Cụ thể, trình duyệt yêu cầu đại diện trang web của khái niệm này.
Vợ: Có những loại đại diện nào khác không?
Ryan: Thật ra, đại diện là một trong những thứ không được sử dụng nhiều. Trong hầu hết các trường hợp, một tài nguyên chỉ có một đại diện duy nhất. Nhưng chúng tôi hy vọng rằng các đại diện sẽ được sử dụng nhiều hơn trong tương lai vì có một loạt các định dạng mới xuất hiện ở khắp mọi nơi.
Vợ: Thích gì?
Ryan: Hừm. Vâng, có khái niệm này rằng mọi người đang gọi Dịch vụ web. Nó có nghĩa là rất nhiều thứ khác nhau đối với nhiều người khác nhau nhưng khái niệm cơ bản là máy móc có thể sử dụng web giống như mọi người.
Vợ: Đây có phải là một thứ robot khác?
Ryan: Không, không thực sự. Tôi không có nghĩa là máy móc sẽ ngồi xuống bàn và duyệt web. Nhưng các máy tính có thể sử dụng các giao thức tương tự để gửi tin nhắn qua lại với nhau. Chúng tôi đã làm điều đó trong một thời gian dài nhưng không có kỹ thuật nào chúng tôi sử dụng ngày nay hoạt động tốt khi bạn cần có thể nói chuyện với tất cả các máy trên toàn thế giới.
Vợ: Tại sao không?
Ryan: Bởi vì chúng không được thiết kế để được sử dụng như thế. Khi Fielding và những người bạn của mình bắt đầu xây dựng web, việc có thể nói chuyện với bất kỳ máy nào ở bất cứ đâu trên thế giới là mối quan tâm hàng đầu. Hầu hết các kỹ thuật chúng tôi sử dụng tại nơi làm việc để khiến máy tính nói chuyện với nhau không có những yêu cầu đó. Bạn chỉ cần nói chuyện với một nhóm nhỏ máy móc.
Vợ: Và bây giờ anh cần nói chuyện với tất cả các máy?
Ryan: Có - và hơn thế nữa. Chúng ta cần có thể nói chuyện với tất cả các máy về tất cả những thứ trên tất cả các máy khác. Vì vậy, chúng ta cần một số cách để có một máy nói với một máy khác về một tài nguyên có thể có trên một máy khác.
Vợ: Cái gì?
Ryan: Hãy nói rằng bạn đang nói chuyện với em gái của bạn và cô ấy muốn mượn người quét rác hoặc một cái gì đó. Nhưng bạn không có nó - Mẹ bạn có nó. Vì vậy, bạn nói với em gái của bạn để có được nó từ mẹ của bạn thay vào đó. Điều này xảy ra mọi lúc trong cuộc sống thực và nó xảy ra mọi lúc khi máy móc cũng bắt đầu nói chuyện.
Vợ: Vậy làm thế nào để máy móc nói với nhau mọi thứ ở đâu?
Ryan: URL, tất nhiên. Nếu mọi thứ mà máy cần nói về đều có một URL tương ứng, bạn đã tạo ra máy tương đương với một danh từ. Rằng bạn và tôi và phần còn lại của thế giới đã đồng ý nói về danh từ theo một cách nào đó là khá quan trọng, nhỉ?
Vợ: Ừ.
Ryan: Máy móc không có một danh từ chung - đó là lý do tại sao chúng hút. Mỗi ngôn ngữ lập trình, cơ sở dữ liệu hoặc loại hệ thống khác có một cách nói khác nhau về danh từ. Đó là lý do tại sao URL rất quan trọng. Nó để tất cả các hệ thống này nói với nhau về danh từ của nhau.
Vợ: Nhưng khi tôi đang xem một trang web, tôi không nghĩ về nó như thế.
Ryan: Không có ai. Ngoại trừ Fielding và một số ít người khác. Đó là lý do tại sao máy vẫn hút.
Vợ: Thế còn động từ và đại từ và tính từ?
Ryan: Bạn đã hỏi vui vì đó là một khía cạnh lớn khác của REST. Vâng, động từ là anyway.
Vợ: Tôi chỉ nói đùa.
Ryan: Đó là một trò đùa vui nhưng thực ra nó không phải là một trò đùa. Động từ rất quan trọng. Có một khái niệm mạnh mẽ trong lập trình và lý thuyết CS gọi là đa hình. Đó là một cách nói táo bạo mà các danh từ khác nhau có thể có cùng một động từ được áp dụng cho chúng.
Vợ: Tôi không hiểu.
Ryan: Chà .. Nhìn vào bàn cà phê. Các danh từ là gì? Cốc, khay, báo, từ xa. Bây giờ, một số điều bạn có thể làm cho tất cả những điều này là gì?
Vợ: Tôi không hiểu ...
Ryan: Bạn có thể có được chúng, phải không? Bạn có thể chọn chúng. Bạn có thể đánh bật chúng. Bạn có thể đốt chúng. Bạn có thể áp dụng những động từ chính xác tương tự cho bất kỳ đối tượng ngồi ở đó.
Vợ: Được rồi ... vậy sao?
Ryan: Điều đó quan trọng. Điều gì sẽ xảy ra nếu thay vì tôi có thể nói với bạn, "lấy cốc" và "lấy báo" và "lấy điều khiển từ xa"; Điều gì xảy ra nếu thay vì chúng ta cần phải đưa ra các động từ khác nhau cho mỗi danh từ? Tôi không thể sử dụng từ "get" một cách phổ biến, nhưng thay vào đó phải nghĩ ra một từ mới cho mỗi kết hợp động từ / danh từ.
Vợ: Chà! Lạ nhỉ.
Ryan: Vâng, đúng vậy. Bộ não của chúng ta đủ thông minh để biết rằng các động từ tương tự có thể được áp dụng cho nhiều danh từ khác nhau. Một số động từ cụ thể hơn những động từ khác và chỉ áp dụng cho một nhóm danh từ nhỏ. Chẳng hạn, tôi không thể lái một chiếc cốc và tôi không thể uống xe hơi. Nhưng một số động từ gần như phổ biến như GET, PUT và DELETE.
Vợ: Bạn không thể XÓA một cốc.
Ryan: Được, được, nhưng bạn có thể vứt nó đi. Đó là một trò đùa khác, phải không?
Vợ: Ừ.
Ryan: Dù sao đi nữa, HTTP - giao thức này Fielding và bạn bè của anh ấy đã tạo ra - tất cả là về việc áp dụng các động từ cho danh từ. Chẳng hạn, khi bạn truy cập một trang web, trình duyệt sẽ thực hiện HTTP GET trên URL bạn nhập và quay lại một trang web.
Các trang web thường có hình ảnh, phải không? Đó là những tài nguyên riêng biệt. Trang web chỉ định URL cho hình ảnh và trình duyệt đi và thực hiện thêm HTTP GET cho chúng cho đến khi tất cả các tài nguyên được lấy và trang web được hiển thị. Nhưng điều quan trọng ở đây là các loại danh từ rất khác nhau có thể được đối xử giống nhau. Cho dù danh từ là hình ảnh, văn bản, video, mp3, trình chiếu, bất cứ điều gì. Tôi có thể NHẬN tất cả những điều đó theo cùng một cách được cung cấp một URL.
Vợ: Âm thanh như GET là một động từ khá quan trọng.
Ryan: Đúng vậy. Đặc biệt là khi bạn đang sử dụng trình duyệt web vì trình duyệt khá nhiều công cụ justGET. Họ không thực hiện nhiều loại tương tác khác với tài nguyên. Đây là một vấn đề bởi vì nó đã khiến nhiều người cho rằng HTTP chỉ dành cho NHẬN. Nhưng HTTP thực sự là giao thức mục đích chung để áp dụng các động từ cho danh từ.
Vợ: Mát mẻ. Nhưng tôi vẫn không thấy điều này thay đổi như thế nào. Những loại danh từ và động từ bạn muốn?
Ryan: Các danh từ ở đó nhưng không đúng định dạng.
Hãy suy nghĩ về khi bạn duyệt qua amazon.com để tìm những thứ để mua cho tôi vào Giáng sinh. Hãy tưởng tượng mỗi sản phẩm là danh từ. Bây giờ, nếu chúng có sẵn trong một đại diện mà một cỗ máy có thể hiểu, bạn có thể làm rất nhiều thứ gọn gàng.
Vợ: Tại sao máy không thể hiểu một trang web bình thường?
Ryan: Bởi vì các trang web được thiết kế để mọi người hiểu. Một cỗ máy không quan tâm đến bố cục và kiểu dáng. Máy cơ bản chỉ cần dữ liệu. Lý tưởng nhất, mỗi URL sẽ có một đại diện có thể đọc được và con người có thể đọc được. Khi một máy NHẬN tài nguyên, nó sẽ yêu cầu máy có thể đọc được. Khi một trình duyệt NHẬN tài nguyên cho con người, nó sẽ yêu cầu tài nguyên có thể đọc được.
Vợ: Vậy mọi người sẽ phải tạo định dạng máy cho tất cả các trang của họ chứ?
Ryan: Nếu nó có giá trị.
Hãy nhìn xem, chúng ta đã nói về điều này với rất nhiều sự trừu tượng. Làm thế nào về chúng tôi lấy một ví dụ thực tế. Bạn là giáo viên - ở trường, tôi cá là bạn có một hệ thống máy tính lớn, hoặc nhiều hơn ba hoặc bốn hệ thống máy tính, cho phép bạn quản lý học sinh: họ học lớp nào, lớp nào họ nhận được, liên hệ khẩn cấp, thông tin về những cuốn sách bạn dạy, v.v. Nếu các hệ thống dựa trên web, thì có lẽ có một URL cho mỗi danh từ liên quan ở đây: học sinh, giáo viên, lớp, sách, phòng, v.v. Ngay bây giờ, hãy lấy URL qua trình duyệt cung cấp cho bạn một trang web. Nếu có một đại diện có thể đọc được bằng máy cho mỗi URL, thì việc chốt các công cụ mới vào hệ thống sẽ là chuyện nhỏ vì tất cả thông tin đó sẽ được tiêu thụ theo cách tiêu chuẩn. Nó cũng sẽ làm cho nó dễ dàng hơn một chút để mỗi hệ thống nói chuyện với nhau. Hoặc, bạn có thể xây dựng một hệ thống toàn tiểu bang hoặc quốc gia có thể nói chuyện với từng hệ thống trường học riêng lẻ để thu thập điểm kiểm tra. Các khả năng là vô tận.
Mỗi hệ thống sẽ nhận thông tin từ nhau bằng cách sử dụng HTTP GET đơn giản. Nếu một hệ thống cần thêm một cái gì đó vào hệ thống khác, nó sẽ sử dụng HTTP POST. Nếu một hệ thống muốn cập nhật một cái gì đó trong một hệ thống khác, nó sử dụng PUT HTTP. Điều duy nhất còn lại để tìm ra là dữ liệu sẽ trông như thế nào.
Vợ: Vậy đây là những gì bạn và tất cả những người máy tính đang làm việc bây giờ? Quyết định dữ liệu nên như thế nào?
Ryan: Đáng buồn thay, không. Thay vào đó, phần lớn đang bận rộn viết các lớp thông số kỹ thuật phức tạp để thực hiện công cụ này theo một cách khác gần như không hữu ích hoặc hùng hồn. Danh từ không phổ biến và động từ không đa hình. Chúng tôi đang đưa ra hàng thập kỷ sử dụng thực tế và kỹ thuật đã được chứng minh và bắt đầu lại với thứ gì đó trông rất giống các hệ thống khác đã thất bại trong quá khứ. Chúng tôi đang sử dụng HTTP nhưng chỉ vì nó giúp chúng tôi nói chuyện với mạng và những người bảo mật ít hơn. Chúng tôi đang giao dịch đơn giản cho các công cụ và thuật sĩ hào nhoáng.
Vợ: Tại sao?
Ryan: Tôi không có ý tưởng.
Vợ: Sao anh không nói gì?
Ryan: Có lẽ tôi sẽ làm.