ทำไมเรื่องราวของ MS Data Access จึงแตกหัก? เป็นลักษณะของการเข้าถึงข้อมูลหรือเป็นเพียง MS?


11

คำถาม StackOverflow นี้ถามว่า "ฉันจะหา Microsoft.Data.Objects ได้ที่ไหน"

ปรากฎว่าคำตอบอาจเป็นไปได้ว่าใน CTP4 (รหัสแรก) การเปิดตัวของ Entity Framework 4 อย่างไรก็ตามมีการคาดเดามากมาย รวมไปถึง

  • System.Data
  • Entity Framework
  • Microsoft.ApplicationBlocks.Data
  • Microsoft.Practices.EnterpriseLibrary.Data

10 ปีที่แล้วถ้ามีคนถามคำถามที่คล้ายกันพวกเขาอาจจะได้ DAO, RDO, ADO

นี่เป็นเพียงลักษณะของสัตว์ร้ายหรือเป็น MS

รูปแบบนี้เกิดขึ้นกับผู้ขายรายอื่นหรือไม่ กลยุทธ์การเข้าถึงข้อมูลพื้นฐานถูกห่อหรือเปลี่ยนแปลงอย่างไร

คำตอบ:


11

มันเป็นการรวมกันของเหตุผลทางประวัติศาสตร์ / วิวัฒนาการและแรงตลาด

ในขณะที่ทำงานกับ Microsoft เมื่อหลายปีก่อนเป็นที่ชัดเจนว่ามีการพัฒนาข้อมูลที่แตกต่างกันหลายอย่าง แต่ละข้อเสนอนั้นมุ่งเป้าไปที่ตลาดเฉพาะหรือกรณีการใช้งานเช่น:

  1. การเข้าถึงนั้นมุ่งเป้าไปที่ผู้ใช้เดสก์ท็อปที่คุ้นเคยกับระบบการจัดทำดัชนีบัตรที่สามารถสร้างแอปพลิเคชันโดยใช้แบบฟอร์มและรายงาน SQL เป็นส่วนเสริมตามธรรมชาติ ทั้งหมดนี้ใช้ 'เครื่องมือฐานข้อมูลในเครื่องของตัวเองชื่อ' JET ' ในที่สุด JET ก็ถูกกีดกัน - คำบนเถาองุ่นคือการขาดการควบคุมแหล่งที่เชื่อถือได้หมายความว่าพวกเขาสูญเสียแหล่งข้อมูลขนาดใหญ่

  2. FoxPro มุ่งเป้าไปที่ผู้ใช้เดสก์ท็อปที่ต้องการความเร็วมากกว่าข้อมูลเชิงสัมพันธ์

  3. SQL Server เป็นระบบฐานข้อมูล 'ใหญ่' ด้านองค์กร / เซิร์ฟเวอร์ที่มีขนาด / กำลังไฟ / ความพร้อมใช้งาน ฯลฯ ที่องค์กรต้องการ IIRC, MS อนุญาต Sybase 6 รุ่นที่สร้าง MSSQL

เมื่อเวลาผ่านไปขอบเขตบางส่วนมีความไม่ชัดเจนเช่น SQL Server สามารถทำงานบนเครื่องเดสก์ท็อปได้ในขณะนี้ แต่กรณีการใช้งานยังคงอยู่

ดังนั้นสิ่งนี้ทำให้เรามี 3 'back end' - ผลิตภัณฑ์ฐานข้อมูลที่ผลิตโดย Microsoft

หากต้องการเพิ่มในส่วนประสมนั้นมี API ระดับผู้พัฒนาที่แตกต่างกันเพื่อให้เข้าถึงระบบเหล่านี้:

  1. เริ่มแรกมี API ไม่มากนัก - คุณเขียนโค้ดของคุณลงในแอปพลิเคชัน (FoxPro / Access) VBA เป็นวิธีหนึ่ง

  2. Microsoft ใช้ MS ODBC เพื่อเชื่อมต่อกับระบบคู่แข่งเพื่อให้ Windows สามารถพูดคุยกับฐานข้อมูลขนาดใหญ่เช่น Oracle, Sybase และอื่น ๆ Excel เป็นหนึ่งในแอพที่โดดเด่นในการรับเครื่องมือ ODBC - ดึงข้อมูลจากฐานข้อมูลขนาดใหญ่ของคุณจัดการและแผนภูมิผลิตภัณฑ์ / กราฟ ฯลฯ ผู้ค้าฐานข้อมูลจำนวนมากลงเอยด้วยการนำ ODBC ไปใช้เพื่อให้ไคลเอนต์ที่แตกต่างสามารถเชื่อมต่อได้ดังนั้นกลยุทธ์นี้จึงประสบความสำเร็จ .. ถึงระดับ - ODBC ถือได้ว่าเป็นตัวแทนส่วนร่วมที่ต่ำที่สุด

  3. ทีมต่าง ๆ เริ่มสร้างวิธีการของตนเองในการเข้าถึงเครื่องมือฐานข้อมูลเช่น DAO (Data Access Objects) สำหรับท้องถิ่นและ RDO (วัตถุข้อมูลระยะไกล) สำหรับระยะไกลเข้าถึงได้ผ่าน VB ซึ่งเป็นผลิตภัณฑ์นักพัฒนา MS ที่ได้รับความนิยมมากที่สุดในเวลานั้น

  4. ความพยายามภายในเพื่อหาเหตุผลเข้ากับ API ที่มีความหลากหลายเหล่านี้และให้ API การเข้าถึงฐานข้อมูลที่มีความยืดหยุ่นสูง / แบบรวมศูนย์เดียวทำให้เรามี OLEDB แต่มันก็ยากมากที่จะเข้าไป (แม่แบบ C ++ จำนวนมาก)

  5. ไม่สามารถใช้ OLEDB จาก VB ได้ดังนั้น ADO จึงได้รับการพัฒนาโดยใช้เทคนิค ActiveX ดังนั้นจึงสามารถใช้งานได้อีกครั้งโดยใช้ COM / OLE / ActiveX ซึ่งหมายถึง Access, Excel, VB และ ASP จึงกลายเป็นฐานข้อมูลที่เปิดใช้งาน

  6. ในขณะที่เราย้ายเข้าสู่ยุค. NET, ADO ก็ย้ายเข้าสู่สภาพแวดล้อม. NET ซึ่งก่อให้เกิดประโยชน์มากมาย

  7. ด้วยการกำเนิดของ LINQ กลไกการเข้าถึงฐานข้อมูลจริงกลายเป็นปัญหาน้อย


Caveat - เมื่อไม่นานมานี้ความทรงจำของฉันค่อนข้างเลือนลาง


+1 คำอธิบายที่ดีของส่วน DAO, RDO, ADO แต่คำถามยังคงอยู่ทำไมรูปแบบซ้ำซ้อน
Conrad Frix

ฉันคิดเสมอว่าแผนกต่าง ๆ ของ MS มาพร้อมกับเทคโนโลยีของตัวเอง (NIH) มีจำนวนมากแน่นอน - และคุณลืม LINQ2SQL นับ แต่แทนที่ด้วย EF!
gbjbaanb

5

เพื่อความเป็นธรรมทุกสิ่งที่คุณพูดถึงจะถูกสร้างขึ้นบน ADO.NET ก่อนหน้านั้น ADO นั้นเป็นเส้นทางที่ได้รับความนิยมมาระยะหนึ่งแล้ว แต่ DAO ก็เพิ่งแฮงเอาท์เพราะมันเป็นฐานข้อมูล Microsoft Access RDO ตายเมื่อฉันมาถึงจากสิ่งที่ฉันสามารถบอกได้

ด้วยกรอบการทำงานที่แตกต่างกันทั้งหมดที่คุณพูดถึงฉันคิดว่าปัญหาคือพวกเขากำลังพยายามหาทางออกให้กับทุกคนและแข่งขันกับแพลตฟอร์มอื่น ๆ หากคุณต้องการวิธีง่ายๆในการใช้ SQL ในรหัสของคุณให้ไปที่ System.Data ถ้าคุณต้องการ ORM โดยใช้ Entity Framework สำหรับบางสิ่งในระหว่างนั้นให้ใช้ Enterprise Library Data ทุกคนต้องการสิ่งที่แตกต่าง

นอกจากนี้ยังมีปัญหาที่ MS เป็น บริษัท ขนาดใหญ่มากที่มีทีมต่าง ๆ ที่มีวาระการประชุมต่างกัน ตัวอย่างเช่นทำไมพวกเขายังมีโปรแกรมประมวลผล 3 คำ (ที่ฉันรู้)


นี้. ไม่มีใครที่เหมาะกับทุกคนดังนั้นพวกเขาจึงพยายามเปิดตัวเลือกทั้งหมด
stijn

2

โดยส่วนตัวฉันคิดว่ามันเป็นผลมาจากอิทธิพลของการตลาดภายใน Microsoft โดยสิทธิทั้งหมดเทคโนโลยีเหล่านี้ส่วนใหญ่สามารถเปิดตัวได้อย่างง่ายดายเพียงแค่อัพเกรดรุ่นของรุ่นเก่า แต่ดูเหมือนจะมีความจำเป็นอย่างยิ่งที่จะต้องใส่ภาพลักษณ์ของการสร้างนวัตกรรมใหม่อย่างต่อเนื่อง



0

นี่คือธรรมชาติของมัน! สิ่งที่เปลี่ยน! ในโลก Java พวกเขามีสิ่งเดียวกัน ... JDBC, EJB 1.0, EJB 2.0, Hibernate, EJB 3.0 และอื่น ๆ


1
ฉันไม่ใช่ผู้เชี่ยวชาญ Java แต่ไฮเบอร์เนตไม่ได้มาจากซันดังนั้นจึงไม่ใช่การเปรียบเทียบที่ฉันกำลังมองหา EJB น่าจะเกี่ยวกับ SOA มากขึ้นจากนั้นเข้าถึงข้อมูลซึ่งเป็นซอฟต์แวร์สแต็กมากกว่า สแต็คซอฟต์แวร์ที่ฉันได้รับ วิธีที่แตกต่างกันหลายวิธีในการทำสิ่งเดียวกันโดยไม่มีการบูรณาการดูเหมือนว่าจะเป็นวิธีการที่เกาะติด
Conrad Frix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.