Làm thế nào mà các ứng dụng máy tính để bàn giao tiếp với máy chủ từ xa trước khi dịch vụ web?


11

Tôi không có nhiều ứng dụng với máy tính để bàn, nhưng nếu tôi phải tạo một ứng dụng máy tính để bàn của máy khách, việc truy cập dữ liệu sẽ được thực hiện thông qua dịch vụ web. Tôi tin rằng việc truy cập dữ liệu thông qua dịch vụ web cung cấp bảo mật - Tôi không cần phải nhập tên người dùng và mật khẩu của máy chủ db, v.v.

Trước khi có dịch vụ web, các ứng dụng cơ sở dữ liệu đã làm điều này như thế nào? Có phải tất cả các thông tin db quan trọng được chuyển vào phần cài đặt của ứng dụng máy tính để bàn? Nếu vậy làm thế nào các lập trình viên quản lý các khía cạnh bảo mật? Hay các lập trình viên đã sử dụng một cái gì đó tương tự như dịch vụ web?


5
Có những điều thú vị cho các cuộc gọi thủ tục từ xa, chẳng hạn như DCOM (COM phân phối), CORBA, Java RMI ... Tôi chưa bao giờ hiểu đầy đủ về bất kỳ ai trong số họ, trong khi yêu cầu một số dữ liệu qua HTTP có ý nghĩa ngay lập tức. Tôi đoán việc sử dụng trình duyệt web hàng ngày khiến dịch vụ web trở nên dễ dàng hơn :-)
marcus

3
@marcus: có thể vì HTTP có phản hồi yêu cầu được tích hợp trong đó, trong khi "một số giao thức qua ổ cắm" dẫn đến việc mọi người phát minh ra bánh xe đó có hình dạng hơi khác nhau.
Steve Jessop

Câu trả lời:


11

Tùy thuộc vào những gì bạn gọi một dịch vụ web.

Trước WSDL và REST, vẫn còn HTTP, vì vậy về cơ bản mọi thứ bạn có thể làm bây giờ cũng có thể được thực hiện trước đó.

Thiếu tính đồng nhất (đó là lý do tại sao WSDL và REST được tạo ra ngay từ đầu), nhưng nó cung cấp cùng một mức độ bảo mật và bảo mật dữ liệu mà bạn đang nói đến.

Bạn thực sự có thể tránh sử dụng HTTP: bạn có thể phác thảo giao thức của riêng mình và sử dụng máy chủ tùy chỉnh và máy khách tùy chỉnh sẽ mở một ổ cắm cho máy chủ này và lấy dữ liệu họ cần (hoặc đăng dữ liệu). Tại đây, bạn mất tất cả lợi ích tiêu chuẩn hóa của HTTP, nhưng một lần nữa, bạn không cấp quyền truy cập vào cơ sở dữ liệu cho khách hàng.


17

Ah, trở lại khi chúng tôi có gậy và đá.

Trước khi có Internet, chúng tôi đã có một thứ gọi là kiến ​​trúc "máy khách / máy chủ" và Mạng cục bộ. Nếu bạn không cố gắng để thiết lập kết nối với một máy chủ nhiều dặm, các mạng này làm việc hoàn toàn tốt đẹp để hoàn thành bất cứ điều gì nhất. Bạn thậm chí có thể thiết lập các ký tự ổ đĩa và sử dụng các kết nối đến các máy chủ tệp như một ổ cứng từ xa, nếu bạn muốn. Nếu bạn một vài dặm, bạn có thể sử dụng một Wide Area Network để làm cơ bản là điều tương tự, mặc dù với tốc độ chậm hơn và với chi phí cao hơn.

Cách rẻ tiền để nói chuyện từ xa là truyền thông tin qua các đường dây điện thoại bằng cách sử dụng các thiết bị được gọi là modem và nếu bạn muốn xử lý một cái gì đó mà hai máy tính nói chuyện với nhau thông qua các ứng dụng máy tính, bạn đã làm nó giống như cách bạn làm hôm nay: bằng cách thiết lập một giao thức truyền thông. Không có gì kỳ diệu về điều đó; cả hai bên phải đồng ý về ý nghĩa của tất cả các byte.

Từ những giai đoạn đầu tiên của Internet, đã có nhiều cách để máy móc giao tiếp với nó. Dịch vụ web chỉ là hương vị mới nhất trong tuần.


5
"Không có gì kỳ diệu cả về điều đó; cả hai bên chỉ cần đồng ý về tất cả các byte có nghĩa là gì." Và endian :)
hjk

2
@hjk, điều đó thật dễ dàng: Little endian rõ ràng là vượt trội so với tất cả các tùy chọn khác :-)
Đánh dấu

3
Tôi thậm chí còn đi xa hơn để nói định nghĩa về internet đòi hỏi phải có cách để máy móc giao tiếp qua nó. Nếu họ không thể làm điều đó, thì đó không phải là internet, đó là một loạt các dây cáp với ảo tưởng về sự vĩ đại.
Steve Jessop

2
@SteveJessop: Bạn đã sai, " Đó là một loạt các ống ".
Ded repeatator

3

Chỉ cần làm sáng tỏ một số khái niệm đầu tiên ...

Tôi tin rằng việc truy cập dữ liệu thông qua dịch vụ web cung cấp bảo mật - Tôi không cần phải nhập tên người dùng và mật khẩu của máy chủ db, v.v.

Tôi nghĩ rằng bạn đang kết hợp các khái niệm của (1) Kiểm soát truy cập lớp bảo mật (TLS) và (2) trong tuyên bố trên ... Việc cung cấp tên người dùng và mật khẩu có liên quan hay không không liên quan đến việc dịch vụ web có phải là được cung cấp thông qua (1) kênh được mã hóa và (2) xác thực (ví dụ: khóa API).

Một dịch vụ web được viết rất kém vẫn có thể yêu cầu mật khẩu được gửi trong bản rõ qua HTTP. Một người viết kém có thể làm điều đó qua HTTPS (an toàn, nhưng một khi đã bị phá vỡ, ví dụ như thông qua một cuộc tấn công trung gian , mở ra để lạm dụng). Một dịch vụ web được viết tốt hơn sẽ xử lý kết nối cơ sở dữ liệu trong nội bộ dựa trên các đầu vào khác, ví dụ ID phiên, sau khi các điều khiển xác thực và quyền được xác thực.

Quay lại điểm chính, nhận xét của @ marcus về câu hỏi của bạn về cơ bản là nó. Các khía cạnh bảo mật được xử lý không khác gì các công nghệ "hiện đại" và bao gồm các câu hỏi triển khai như:

  • Liệu giao thức liên lạc của bạn (mượn một chút từ câu trả lời của @ RobertHarvey) có hỗ trợ việc truyền dữ liệu được mã hóa hay không.
  • Các thông điệp tải trọng cấu trúc đó được chuyển tiếp giữa máy chủ và máy khách.
    • Có phải khách hàng chỉ cần yêu cầu máy chủ duy trì địa chỉ cư trú của người dùng này hoặc kết nối với cơ sở dữ liệu tại IP X.X.X.Xbằng tên người dùng và mật khẩu, sau đó chạy truy vấnINSERT INTO user_address ... ?
  • Làm thế nào máy chủ quản lý kết nối cơ sở dữ liệu của nó (mà thực sự tách biệt với máy khách, xem đoạn đầu tiên).

Để biết thêm thông tin:

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.