Mengapa kisah MS Data Access begitu retak? Apakah itu sifat Akses Data atau hanya MS?

11

Pertanyaan StackOverflow ini menanyakan "di mana saya bisa mendapatkan Microsoft.Data.Objects"

Ternyata jawabannya mungkin bahwa itu dalam rilis CTP4 (kode pertama) Entity Framework 4 Namun ada di mana banyak tebakan. Termasuk

  • System.Data
  • Kerangka Entitas
  • Microsoft.ApplicationBlocks.Data
  • Microsoft.Practices.EnterpriseLibrary.Data

10 tahun yang lalu jika seseorang mengajukan pertanyaan serupa karena mereka mungkin mendapatkan DAO, RDO, ADO.

Apakah ini sifat binatang atau MS.

Apakah pola ini terjadi pada vendor lain? Di mana strategi akses data dasar dibungkus atau diubah?

Conrad Frix
sumber

Jawaban:

11

Ini adalah kombinasi dari alasan Sejarah / Evolusi dan Kekuatan Pasar

Saat bekerja di Microsoft beberapa tahun yang lalu, jelas bahwa ada beberapa penawaran data berbeda dalam pengembangan. Masing-masing penawaran ditujukan pada pasar atau kasus penggunaan tertentu, misalnya:

  1. Akses ditujukan untuk pengguna desktop yang nyaman dengan sistem pengindeksan kartu yang dapat membangun aplikasi menggunakan formulir dan laporan. SQL adalah tambahan alami. Ini semua menggunakan 'mesin database mesin lokal sendiri bernama' JET '. Akhirnya JET dikesampingkan - kata pada anggur anggur adalah bahwa kurangnya kontrol sumber (dapat diandalkan) berarti mereka telah kehilangan sebagian besar sumber.

  2. FoxPro ditujukan untuk pengguna desktop yang menginginkan kecepatan dibandingkan data relasional.

  3. SQL Server adalah sistem basis data 'besar' perusahaan / sisi server dengan semua skala / daya / ketersediaan, dll yang dibutuhkan perusahaan. IIRC, MS melisensikan versi Sybase 6 untuk membangun MSSQL.

Seiring waktu, beberapa batasan telah menjadi kabur - misalnya SQL Server dapat berjalan pada mesin desktop sekarang, tetapi kasus penggunaan tetap.

Jadi ini memberi kita 3 'ujung belakang' - produk basis data yang diproduksi oleh Microsoft.

Untuk menambah campuran, ada berbagai tingkat API pengembang yang disediakan untuk mendapatkan akses ke sistem ini:

  1. Awalnya, API tidak banyak - Anda menulis kode di dalam aplikasi (FoxPro / Access). VBA adalah salah satu metode.

  2. Microsoft menerapkan MS ODBC untuk terhubung ke sistem yang bersaing sehingga Windows dapat berbicara dengan database besar seperti Oracle, Sybase, dll. Excel adalah salah satu aplikasi terkemuka untuk mendapatkan alat ODBC - tarik data dari DB besar Anda, memanipulasi dan bagan produk / grafik, dll. Banyak vendor database akhirnya menerapkan ODBC untuk memungkinkan klien yang berbeda untuk terhubung, sehingga strategi ini berhasil .. sampai taraf tertentu - ODBC dapat dianggap mewakili penyebut umum terendah.

  3. Tim yang berbeda mulai menghasilkan cara mereka sendiri untuk mengakses mesin basis data seperti DAO (Data Access Objects) untuk lokal dan RDO (Remote Data Objects) untuk jarak jauh, dapat diakses melalui VB, yang merupakan produk pengembang MS paling populer saat itu.

  4. Upaya internal untuk merasionalisasi beragam API ini dan menyediakan API akses basis data tunggal / unified yang sangat fleksibel memberi kami OLEDB, tetapi sangat sulit untuk masuk (banyak template C ++).

  5. OLEDB tidak dapat digunakan dari VB, jadi ADO dikembangkan menggunakan teknik ActiveX, sehingga menjadi dapat digunakan kembali oleh apa pun yang dapat melakukan COM / OLE / ActiveX, yang berarti Access, Excel, VB dan karenanya ASP menjadi berbasis-database.

  6. Ketika kami pindah ke era .NET, ADO secara alami dipindahkan ke lingkungan .NET yang membawa berbagai manfaat.

  7. Dengan munculnya LINQ, mekanisme akses database yang sebenarnya menjadi lebih sedikit masalah.


Peringatan - Saya meninggalkan beberapa waktu lalu sekarang, jadi ingatan saya agak kabur

JBRWilkinson
sumber
+1 Penjelasan yang bagus tentang bagian DAO, RDO, ADO, tetapi pertanyaannya tetap, mengapa polanya mengulangi?
Conrad Frix
Saya selalu berpikir itu adalah departemen MS yang berbeda datang dengan teknologi mereka sendiri (NIH). Tentu ada sejumlah besar dari mereka -dan Anda lupa LINQ2SQL, karena digantikan oleh EF!
gbjbaanb
5

Agar adil semua yang Anda sebutkan dibangun di atas ADO.NET. Sebelum itu ADO adalah rute yang disukai untuk sementara waktu tetapi DAO hanya semacam berkeliaran karena itu asli untuk Microsoft Access Database. RDO sudah mati pada saat kedatangan dari apa yang bisa saya katakan.

Dengan semua kerangka kerja yang berbeda yang Anda sebutkan, saya pikir masalahnya adalah mereka mencoba memberikan solusi untuk semua orang dan bersaing dengan setiap platform lainnya. Jika Anda ingin cara sederhana untuk hanya menggunakan SQL dalam kode Anda kemudian pergi untuk System.Data. Jika Anda ingin ORM menggunakan Entity Framework. Untuk sesuatu di antaranya gunakan Data Perpustakaan Perusahaan. Semua orang menginginkan sesuatu yang berbeda.

Ada juga masalah bahwa MS adalah perusahaan yang sangat besar dengan tim yang berbeda dengan agenda yang berbeda. Misalnya mengapa mereka juga memiliki 3 pengolah kata (yang saya tahu).

Craig
sumber
ini. Tidak ada satu pun yang cocok untuk semua orang sehingga mereka mencoba untuk tetap membuka semua opsi.
stijn
2

Secara pribadi saya pikir ini lebih merupakan hasil dari pengaruh pemasaran dalam Microsoft. Dengan semua hak, sebagian besar teknologi ini dapat dengan mudah dirilis begitu saja sebagai peningkatan versi dari versi yang lebih lama, tetapi tampaknya ada kebutuhan besar untuk memakai gambar ini untuk terus menciptakan kembali bahkan sesuatu yang mendasar seperti lapisan akses data.

JohnFx
sumber
4
Fire And Motion
Mason Wheeler
0

Inilah sifat dari IT! Hal-hal MENGUBAH! Di dunia Jawa, mereka memiliki hal yang sama ... JDBC, EJB 1.0, EJB 2.0, Hibernate, EJB 3.0 dan seterusnya.

LeWoody
sumber
1
Saya bukan ahli Java tetapi Hibernate bukan dari Sun jadi bukan perbandingan yang saya cari. EJB tampaknya lebih tentang SOA daripada akses data, yang lebih merupakan tumpukan perangkat lunak. Tumpukan perangkat lunak yang saya dapatkan. Beberapa cara berbeda untuk melakukan hal yang sama tanpa integrasi tampaknya seperti pendekatan tongkat apa.
Conrad Frix