ฉันค้นหาบนเว็บวิธีการเข้าถึงอย่างมีประสิทธิภาพในฐานข้อมูลกลางที่สถานที่ห่างไกลและฉันได้พบกับข้อเสนอแนะในการใช้บริการเว็บแทนการเข้าถึงโดยตรง (เช่น JDBC เป็นต้น) ไปยังฐานข้อมูลฉันสงสัยว่าเหตุผลนั้นและคำแนะนำอื่น ๆ .
ฉันค้นหาบนเว็บวิธีการเข้าถึงอย่างมีประสิทธิภาพในฐานข้อมูลกลางที่สถานที่ห่างไกลและฉันได้พบกับข้อเสนอแนะในการใช้บริการเว็บแทนการเข้าถึงโดยตรง (เช่น JDBC เป็นต้น) ไปยังฐานข้อมูลฉันสงสัยว่าเหตุผลนั้นและคำแนะนำอื่น ๆ .
คำตอบ:
การเพิ่มเลเยอร์บริการบนเว็บช่วยให้คุณมีโอกาสที่จะทำให้ไคลเอนต์ของคุณมีน้ำหนักเบามากขึ้นทั้งในแง่ของพลัง CPU ที่ต้องการและแบนด์วิดท์ที่ใช้ระหว่างการประมวลผล ปัจจัยทั้งสองมีความสำคัญอย่างยิ่งต่อผู้ใช้งาน:
ด้วยการแนะนำเว็บแอปพลิเคชันเลเยอร์คุณจะย้ายการประมวลผลจำนวนมากจากมือถือมือถือพลังงานต่ำแบนด์วิดท์ต่ำไคลเอนต์หน่วยความจำต่ำไปยังเซิร์ฟเวอร์ที่มีหน่วยความจำมากกว่าแบนด์วิธสูง ความต้องการ - สภาพแวดล้อมที่การประมวลผลและการสื่อสารมีค่าใช้จ่ายเพียงเศษเสี้ยวของค่าใช้จ่ายของลูกค้า
แต่เดี๋ยวก่อนก็มีบางอย่างสำหรับคุณเช่นกัน: โดยการแยกระบบคุณจะสามารถควบคุมกฎเกณฑ์ทางธุรกิจโครงสร้างฐานข้อมูลของคุณและเวอร์ชั่นของสิ่งที่อยู่ข้างนอกได้มากขึ้น เมื่อคุณปล่อยให้ไคลเอนต์มือถือเชื่อมต่อกับฐานข้อมูลโดยตรงการออกแบบของคุณคือ "แต่งงาน" กับโครงสร้างฐานข้อมูลนั้น: การเปลี่ยนแปลงเกือบทั้งหมดจะทำให้ความเข้ากันได้ย้อนหลังกับไคลเอนต์ที่อาจลังเลที่จะอัปเกรดแอปของเขา
ในทางตรงกันข้ามการเพิ่มบริการเว็บในระหว่างช่วยให้คุณพัฒนาอินเทอร์เฟซไปยังไคลเอนต์มือถือในวิธีการจัดการเพิ่มเติม: ตัวอย่างเช่นคุณสามารถเก็บอินเทอร์เฟซเก่าในสถานที่เพิ่มใหม่ที่ทำงาน "ขนาน" กับมัน ปรับโครงสร้างฐานข้อมูลของคุณโดยไม่ทำให้ไคลเอนต์เดียวหมด
หากคุณปฏิบัติตามหลักการออกแบบขั้นพื้นฐานที่สวยงามในขณะที่ออกแบบเว็บเซอร์วิสของคุณคุณอาจได้รับประโยชน์ที่สำคัญโดยการนำโครงสร้างพื้นฐานด้านเซิร์ฟเวอร์ที่มีอยู่แล้วมาใช้ใหม่ตัวอย่างเช่นคุณสามารถรับแคชและบริการพร็อกซี่ได้ฟรี
ในที่สุดนี้จะเปิดประตูให้นักพัฒนาอื่น ๆ เปิดเผยแอปพลิเคชันของคุณไปยังแพลตฟอร์มที่คุณไม่สามารถให้บริการด้วยตัวคุณเองในที่สุดเล่นเพื่อประโยชน์ของ บริษัท ของคุณ
มันทำให้ชั้นของสิ่งที่เป็นนามธรรมระหว่างแอพและฐานข้อมูล สิ่งนี้ให้ประโยชน์มากมายเช่น:
อีกเหตุผลหนึ่งที่ไม่เปิดเผย DB โดยตรง - การขนส่ง ฐานข้อมูลเชิงสัมพันธ์ส่วนใหญ่ประเภทของสิ่งที่หนึ่งพูดคุยกับ JDBC ไม่ได้ออกแบบมาสำหรับอินเทอร์เน็ตสาธารณะโดยทั่วไป อินเทอร์เน็ตไร้สายเป็นจุดจบที่ไม่น่าเชื่อถืออย่างน่าเหลือเชื่อของอินเทอร์เน็ตสาธารณะดังกล่าว การจัดการข้อยกเว้นจะน่ากลัวและคุณอาจต้องเขียนเลเยอร์บริการเว็บในแอพของคุณเพื่อหลีกเลี่ยงการทำธุรกรรมที่สูญหาย
มีฐานข้อมูลที่ใหม่กว่าบางประเภทที่พูด HTTP และอาจเหมาะกับสิ่งเหล่านี้ พวกเขายังมีแนวโน้มที่จะมีวิธีการใส่รหัสแอปพลิเคชันแปลก ๆ ในฐานข้อมูล คุณอาจต้องการดู CouchDb หรือ RavenDb - ทั้งคู่เป็น dbs เอกสารที่มีความสามารถในแผนที่ / ลดความสามารถในการทำงานกับ json และ http เช่นเดียวกับบริการเว็บที่ทันสมัยมากมาย