Tại sao câu chuyện MS Data Access lại bị rạn nứt như vậy? Đó có phải là bản chất của Truy cập dữ liệu hay chỉ là MS?


11

Câu hỏi StackOverflow này hỏi "tôi có thể lấy Microsoft.Data.Objects ở đâu"

Hóa ra câu trả lời có lẽ là trong bản phát hành CTP4 (mã đầu tiên) của Entity Framework 4 Tuy nhiên, nơi có rất nhiều dự đoán. Kể cả

  • Dữ liệu hệ thống
  • Khuôn khổ thực
  • Microsoft.ApplicationBlocks.Data
  • Microsoft.Practices. EntrypriseL Library.Data

10 năm trước nếu ai đó hỏi một câu hỏi tương tự cho họ có thể đã nhận được DAO, RDO, ADO.

Đây chỉ là bản chất của con thú hay là MS.

Liệu mô hình này xảy ra với các nhà cung cấp khác? Trường hợp chiến lược truy cập dữ liệu cơ sở được gói hoặc thay đổi?

Câu trả lời:


11

Đó là sự kết hợp của các lý do lực lượng Lịch sử / Tiến hóa và Thị trường

Trong khi làm việc tại Microsoft vài năm trước, rõ ràng có một số dịch vụ dữ liệu khác nhau đang được phát triển. Mỗi dịch vụ được nhắm đến một thị trường hoặc trường hợp sử dụng cụ thể, ví dụ:

  1. Access nhắm đến người dùng máy tính để bàn thoải mái với các hệ thống lập chỉ mục thẻ có thể xây dựng các ứng dụng bằng cách sử dụng các biểu mẫu và báo cáo. SQL là một bổ sung tự nhiên. Tất cả điều này đã sử dụng 'công cụ cơ sở dữ liệu máy cục bộ của riêng mình có tên là' JET '. Cuối cùng, JET đã bị loại bỏ - từ trên cây nho là việc thiếu kiểm soát nguồn (đáng tin cậy) có nghĩa là họ đã mất một phần lớn nguồn.

  2. FoxPro đã nhắm đến người dùng máy tính để bàn, những người muốn tốc độ trên dữ liệu quan hệ.

  3. SQL Server là hệ thống cơ sở dữ liệu 'lớn' của phía Doanh nghiệp / Máy chủ với tất cả quy mô / sức mạnh / tính khả dụng, v.v. mà doanh nghiệp cần. IIRC, MS đã cấp phép một phiên bản Sybase 6 để xây dựng MSSQL.

Theo thời gian, một số ranh giới đã bị mờ - ví dụ: SQL Server có thể chạy trên máy tính để bàn ngay bây giờ, nhưng trường hợp sử dụng vẫn còn.

Vì vậy, điều này mang lại cho chúng ta 3 'back end' - các sản phẩm cơ sở dữ liệu do Microsoft sản xuất.

Để thêm vào hỗn hợp, khi đó đã có các cấp API nhà phát triển khác nhau được cung cấp để có quyền truy cập vào các hệ thống này:

  1. Ban đầu, không có nhiều cách thức API - bạn đã viết mã của mình bên trong ứng dụng (FoxPro / Access). VBA là một phương pháp.

  2. Microsoft đã triển khai MS ODBC để kết nối với các hệ thống cạnh tranh để Windows có thể nói chuyện với các cơ sở dữ liệu lớn như Oracle, Sybase, v.v. Excel là một trong những ứng dụng đáng chú ý để có các công cụ ODBC - lấy dữ liệu từ DB lớn của bạn, thao tác với nó và biểu đồ sản phẩm / đồ thị, v.v ... Nhiều nhà cung cấp cơ sở dữ liệu đã kết thúc triển khai ODBC để cho phép các khách hàng khác nhau kết nối, vì vậy chiến lược này đã thành công .. ở một mức độ nào đó - ODBC có thể được coi là đại diện cho mẫu số chung thấp nhất.

  3. Các nhóm khác nhau bắt đầu tạo ra các cách riêng để truy cập công cụ cơ sở dữ liệu như DAO (Đối tượng truy cập dữ liệu) cho cục bộ và RDO (Đối tượng dữ liệu từ xa) cho điều khiển từ xa, có thể truy cập thông qua VB, là sản phẩm dành cho nhà phát triển MS phổ biến nhất vào thời điểm đó.

  4. Một nỗ lực nội bộ để hợp lý hóa các API đa dạng này và cung cấp API truy cập cơ sở dữ liệu rất linh hoạt / thống nhất cho chúng tôi OLEDB, nhưng rất khó để có được (rất nhiều mẫu C ++).

  5. OLEDB không thể được sử dụng từ VB, do đó ADO được phát triển bằng kỹ thuật ActiveX, do đó, nó có thể được sử dụng lại bởi bất kỳ thứ gì có thể làm COM / OLE / ActiveX, nghĩa là Access, Excel, VB và do đó, ASP đã kích hoạt cơ sở dữ liệu.

  6. Khi chúng ta bước vào kỷ nguyên .NET, ADO tự nhiên được chuyển sang môi trường .NET mang lại nhiều lợi ích khác nhau.

  7. Với sự ra đời của LINQ, cơ chế truy cập cơ sở dữ liệu thực tế đã trở thành một vấn đề.


Hãy cẩn thận - Tôi đã rời đi một thời gian trước đây, vì vậy bộ nhớ của tôi hơi mờ


+1 Giải thích hay về phần DAO, RDO, ADO, nhưng câu hỏi vẫn còn, tại sao mô hình lại lặp lại?
Conrad Frix

Tôi luôn nghĩ rằng đó là các phòng MS khác nhau với các công nghệ (NIH) của riêng họ. Chắc chắn có một số lượng lớn trong số họ - và bạn đã quên LINQ2SQL, kể từ khi được thay thế bởi EF!
gbjbaanb

5

Để công bằng, tất cả những cái bạn đề cập đều được xây dựng trên ADO.NET. Trước đó, ADO là tuyến được ưa thích trong một thời gian nhưng DAO chỉ loanh quanh vì nó có nguồn gốc từ Cơ sở dữ liệu Microsoft Access. RDO đã chết khi đến nơi từ những gì tôi có thể nói.

Với tất cả các khung khác nhau mà bạn đề cập, tôi nghĩ vấn đề là họ đang cố gắng đưa ra giải pháp cho mọi người và cạnh tranh với mọi nền tảng khác. Nếu bạn muốn một cách đơn giản để chỉ sử dụng SQL trong mã của mình thì hãy truy cập System.Data. Nếu bạn muốn có ORM bằng Entity Framework. Đối với một cái gì đó ở giữa sau đó sử dụng Dữ liệu Thư viện Doanh nghiệp. Mọi người đều muốn một cái gì đó khác nhau.

Cũng có vấn đề rằng MS là một công ty rất lớn với các nhóm khác nhau với các chương trình nghị sự khác nhau. Ví dụ tại sao họ cũng có 3 bộ xử lý văn bản (mà tôi biết).


điều này. Không có một cái nào phù hợp với tất cả mọi người nên họ cố gắng giữ tất cả các tùy chọn mở.
stijn

2

Cá nhân tôi nghĩ rằng đó là kết quả của sự ảnh hưởng của tiếp thị trong Microsoft. Theo tất cả các quyền, hầu hết các công nghệ này có thể dễ dàng được phát hành dưới dạng nâng cấp phiên bản của các phiên bản cũ hơn, nhưng dường như cần phải đưa vào hình ảnh này liên tục phát minh lại ngay cả một thứ cơ bản như lớp truy cập dữ liệu.



0

Đây là bản chất của CNTT! Nhiều thứ thay đổi! Trong thế giới Java, họ có cùng một thứ ... JDBC, EJB 1.0, EJB 2.0, Hibernate, EJB 3.0, v.v.


1
Tôi không phải là chuyên gia Java nhưng Hibernate không đến từ Sun nên không phải là sự so sánh mà tôi đang tìm kiếm. EJB dường như liên quan nhiều hơn đến SOA sau đó là truy cập dữ liệu, phần lớn là một chồng phần mềm. Ngăn xếp phần mềm tôi nhận được. Một số cách khác nhau để làm điều tương tự mà không tích hợp có vẻ như xem cách tiếp cận gậy.
Conrad Frix
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.