คำถามติดแท็ก repository

ที่เก็บมีกลไกการจัดเก็บสำหรับผลิตภัณฑ์ดิจิทัล อาจหมายถึง [version-control] เช่น [git] หรือ [svn] ควรใช้แท็กเฉพาะแอปพลิเคชันกับแท็กนี้เพื่อระบุอินเทอร์เฟซการจัดการที่เก็บเฉพาะที่กำลังใช้เว้นแต่คำถามจะเป็นเรื่องทั่วไป ดูเพิ่มเติมที่: [repository-pattern]

5
เหตุใดผู้คนจึงแยกที่เก็บบน GitHub [ปิด]
ฉันสังเกตเห็นว่าบัญชีGitHubจำนวนมากมีที่เก็บซึ่งแยกจากบัญชีอื่นเท่านั้น นอกจากนี้คนที่ทำสิ่งนี้มักจะไม่ให้ความช่วยเหลือใด ๆ กับที่เก็บแยก ฉันเคยได้ยินคนเก็บแสตมป์และเปลือกหอย แต่ทำไมทุกคนถึงต้องการเก็บที่เก็บ โดยส่วนตัวแล้วฉันจะแยกที่เก็บเฉพาะถ้าฉันต้องการเปลี่ยนแปลงบางอย่าง

3
มันเป็นวิธีปฏิบัติที่ไม่ถูกต้องที่ตัวควบคุมเรียกที่เก็บแทนการบริการ
มันเป็นวิธีปฏิบัติที่ไม่ถูกต้องที่ตัวควบคุมเรียกที่เก็บแทนการบริการ เพื่ออธิบายเพิ่มเติม: ฉันคิดว่าในการควบคุมการออกแบบที่ดีโทรบริการและพื้นที่เก็บข้อมูลการใช้บริการ แต่บางครั้งในคอนโทรลเลอร์ฉันไม่มี / ต้องการตรรกะใด ๆ และเพียงแค่ต้องดึงข้อมูลจาก db และส่งต่อให้ดู และฉันสามารถทำได้โดยเพียงแค่เรียกที่เก็บ - ไม่จำเป็นต้องโทรหาบริการ - มันเป็นการปฏิบัติที่ไม่ดี?

4
ควรใช้รูปแบบพื้นที่เก็บข้อมูลเมื่อใด
ฉันได้อ่านเมื่อเร็ว ๆ นี้ว่าไม่ใช่วิธีปฏิบัติที่ดีในการใช้รูปแบบพื้นที่เก็บข้อมูลร่วมกับ ORM จากความเข้าใจของฉันนี้เป็นเพราะนามธรรมที่พวกเขาให้มากกว่าฐานข้อมูล SQL รั่วไหลเกินกว่าที่จะอยู่ในรูปแบบ ฉันมีคำถามสองสามข้อเกี่ยวกับเรื่องนี้: คุณจะทำอย่างไรถ้าคุณต้องการเปลี่ยน ORM คุณจะมีรหัสเฉพาะ ORM ในแอปพลิเคชันของคุณหากคุณไม่มีในที่เก็บ รูปแบบที่เก็บยังคงใช้ได้เมื่อไม่ได้ใช้ ORM และคุณใช้ ADO.NET สำหรับการเข้าถึงข้อมูลและการเติมข้อมูลวัตถุด้วยตัวเอง? หากคุณใช้ ORM แต่ไม่ใช่รูปแบบที่เก็บที่คุณเก็บแบบสอบถามที่ใช้บ่อย จะเป็นการดีหรือไม่ที่จะแสดงแต่ละแบบสอบถามเป็นคลาสและมีโรงงานแบบสอบถามบางประเภทเพื่อสร้างอินสแตนซ์

2
ที่เก็บควรทำอะไรจริงๆ
ฉันได้ยินรูปแบบที่เก็บจำนวนมาก แต่ฉันไม่เข้าใจว่าที่เก็บควรทำอะไร เมื่อฉันพูดว่า "พื้นที่เก็บข้อมูลควรทำอะไรจริงๆ" ฉันกังวลเกี่ยวกับวิธีการที่ควรใช้เป็นหลัก ตัวอย่างเช่นที่เก็บควรให้วิธีการ CRUD หรือควรให้วิธีการที่แตกต่างกัน? ฉันหมายถึงที่เก็บควรมีตรรกะทางธุรกิจหรือควรประกอบด้วยตรรกะในการสื่อสารกับแหล่งข้อมูลและจัดการเอนทิตีที่จะบันทึกหรือโหลด? นอกจากนี้ฉันเคยได้ยินว่าที่เก็บเป็นหน่วยของการคงอยู่ของมวลรวม แต่นั่นเป็นอย่างไร ฉันล้มเหลวที่จะเข้าใจวิธีการทำงานในทางปฏิบัติ ฉันคิดว่าเราควรมีเพียงหนึ่งอินเตอร์เฟสIRepositoryที่มีเมธอด CRUD และสำหรับเอนทิตีใด ๆ การใช้งานจะมีตรรกะในการบันทึกและดึงข้อมูลประเภทนั้นจากแหล่งข้อมูล

1
เราใช้รูปแบบพื้นที่เก็บข้อมูลใช่มั้ย
เรากำลังใช้คลาสที่แยกจากกัน-repositoryเพื่อต่อท้ายเรียกข้อมูลจากฐานข้อมูล สำหรับแต่ละตารางที่เก็บของตนเอง ตัวอย่างเช่นเรามีcustomerrepositoryคลาสที่มีวิธีการทุกอย่างเพื่อดึงลูกค้าและvacancyrepositoryที่มีวิธีการทุกชนิดเพื่อดึงตำแหน่งที่ว่าง ฉันมีคำถามสองข้อเกี่ยวกับวิธีการทำสิ่งนี้: วิธีรับข้อมูลที่ครอบคลุมหลายตาราง ตัวอย่างเช่นฉันมีหน้าจอที่แสดงลูกค้าทั้งหมดที่ยังไม่ได้สร้างตำแหน่งว่าง ที่สามารถcustomerrepositoryใช้วิธีการจากvacancyrespositoryหรือทำทั้งสองอย่างที่เก็บกลับผลลัพธ์และจะมีระดับที่สูงขึ้นในลำดับชั้น (ชื่อให้ของมันdataservice) ที่ได้รับผลจากทั้งเก็บและรวมเป็น 1 ผล? พื้นที่เก็บข้อมูลสามารถจัดการตรรกะได้เท่าใด ฉันคิดว่ามันโอเคที่จะใช้ 'where active == true' ในที่เก็บเพื่อเรียกใช้เฉพาะเร็กคอร์ดที่ใช้งานอยู่หรือว่าควรจัดการตรรกะง่ายๆโดยคลาสที่สูงกว่าในลำดับชั้น (ลองตั้งชื่อ a dataservice)? ตัวอย่างที่ฉันพบตอนนี้ก็คืออันนี้: เรามีรายการคำถามซึ่งมีหนึ่งคำถามขึ้นไป คำถามสามารถมีผลลัพธ์ซึ่งถืออยู่ในตารางแยกต่างหาก ดังนั้นเมื่อคุณต้องการดึงผลลัพธ์รวมของรายการคำถามคุณต้องรวมข้อมูลจากquestionlistตารางตารางคำถามและquestionstatusตาราง ตอนนี้เรามีที่เก็บข้อมูล 3 แห่งสำหรับตารางเหล่านี้ ถ้าฉันจะถามquestionlistrepositoryสิ่งที่เป็นผลรวมสำหรับรายการหมายเลข 12 มันจะต้องได้รับข้อมูลจากสองที่เก็บอื่น ๆ และด้วยเหตุนี้มีตรรกะบางอย่างในนั้นที่ได้รับอนุญาต? หรือมีquestionlistdataserviceที่รู้ที่เก็บที่จะใช้? อีกอย่างหนึ่ง: ที่เก็บข้อมูลของเราสามารถส่งผลIQueryableให้บริการโทรศัพท์สามารถรวมผลลัพธ์ได้อย่างง่ายดาย แต่ถ้าเป็นกรณีนี้ฉันไม่คิดว่ามันเป็นความคิดที่ดีที่จะดึงเนื้อหาทั้งหมดของตารางทั้งสามจาก ฐานข้อมูล

4
การเข้าถึงที่เก็บจากโดเมน
สมมติว่าเรามีระบบบันทึกงานเมื่อมีการบันทึกงานผู้ใช้จะระบุหมวดหมู่และค่าเริ่มต้นของงานเป็นสถานะ 'ดีเด่น' สมมติในกรณีนี้ว่าหมวดหมู่และสถานะจะต้องมีการใช้งานเป็นเอนทิตี ปกติฉันจะทำสิ่งนี้: แอพลิเคชันเลเยอร์: public class TaskService { //... public void Add(Guid categoryId, string description) { var category = _categoryRepository.GetById(categoryId); var status = _statusRepository.GetById(Constants.Status.OutstandingId); var task = Task.Create(category, status, description); _taskRepository.Save(task); } } Entity: public class Task { //... public static void Create(Category category, Status status, string description) { …

1
เมื่อทำการแก้ไขเพื่อคอมมิชชันก่อนหน้าฉันควรรีบูทหรือเพิ่มการแก้ไขอัพคอมมิชชันแยกกันหรือไม่?
สถานการณ์ทั่วไปในการพัฒนาซอฟต์แวร์คือการตรวจสอบรหัสของผู้อื่น เครื่องมือทั่วไปสำหรับการทำเช่นนี้คือการเปิดคำขอดึง คำถามของฉันคือเมื่อพบปัญหาในการตรวจสอบการเปลี่ยนแปลงควร จะแยกกัน (กระทำใหม่) หรือควรกระทำการที่มีอยู่ได้รับการแก้ไข (สมมติว่าไม่มีใครแยกจากการกระทำก่อนหน้าของคุณ ... เนื่องจากการเขียนประวัติศาสตร์จากสาขาที่ใช้ร่วมกันเป็นข่าวร้าย) สำหรับสถานการณ์แรกนั้นง่ายต่อการติดตามการเปลี่ยนแปลงที่เพิ่มขึ้นแม้ว่าจะเพิ่มเสียงรบกวนบางอย่างในประวัติการกระทำ ตัวเลือกที่สองมีข้อดีข้อเสีย

1
วิธีจัดการคำสั่งเพิ่ม / สร้าง * ในสถาปัตยกรรม CQRS + การจัดหากิจกรรม
ฉันต้องการใช้แอปพลิเคชันแรกของฉันโดยใช้รูปแบบ CQRS พร้อมกับการจัดหากิจกรรม ฉันสงสัยว่าการสร้างรากรวมควรได้รับการจัดการอย่างเหมาะสมอย่างไร สมมติว่ามีคนส่งคำสั่ง CreateItem ควรจัดการอย่างไร? รายการเหตุการณ์ที่สร้างขึ้นควรเก็บไว้ที่ไหน เป็นกิจกรรมแรกของรายการใหม่หรือไม่ หรือฉันควรจะมีรายการ ItemList บางอย่างที่รวมรายการทั้งหมดและรายการเหตุการณ์ประกอบด้วยรายการของ ItemCreated เท่านั้น Udi Dahan ไม่แนะนำให้สร้างรากรวมและมักจะใช้วิธีดึงข้อมูลบางอย่างแทน แต่วิธีที่ฉันสามารถดึงข้อมูลบางอย่างที่ใหม่และแน่นอนไม่มี ID ใด ๆ ที่ได้รับมอบหมาย ฉันเข้าใจความคิดที่อยู่เบื้องหลังและมันค่อนข้างสมเหตุสมผลที่จะคิดว่าวัตถุใหม่เป็นวัตถุที่มีสถานะเป็นศูนย์ซึ่งประกอบด้วยเหตุการณ์ที่ตอบกลับเป็นศูนย์ แต่ฉันจะใช้มันได้อย่างไร ฉันควรจะมีวิธีการที่แตกต่างกันในพื้นที่เก็บข้อมูลของฉันเช่นgetNewItem()หรือทำให้get(id)วิธีการของฉันยอมรับOptional<ItemId>แทน? แก้ไข: หลังจากการขุดสักพักฉันพบว่าการใช้รูปแบบดังกล่าวน่าสนใจจริง ๆโดยใช้นักแสดง ผู้เขียนแทนที่จะสร้างผลรวมดึงข้อมูลจากที่เก็บบางประเภทด้วย UUID ที่สร้างขึ้นใหม่ ข้อเสียเปรียบของวิธีนี้คือเขาอนุญาตให้มีสถานะที่ไม่สอดคล้องกันชั่วคราว ฉันยังสงสัยว่าฉันสามารถใช้deleteวิธีการด้วยวิธีดังกล่าวได้อย่างไร เพียงเพิ่มเหตุการณ์ที่ถูกลบไปยังรายการกิจกรรมของการรวมหรือไม่

1
GitHub องค์กรสำหรับโครงการที่ครอบคลุมหลาย ๆ ที่เก็บ?
ฉันเริ่มต้นโครงการที่เกี่ยวข้องกับที่เก็บอย่างน้อยสามแห่งบน GitHub หนึ่งในที่เก็บเป็นดัมพ์เอกสารประกอบและตัวอย่างทั่วไปและอีกสองรายการมีการนำไปใช้งานของสองโปรแกรมที่เป็นแกนหลักของโครงการ ฉันควรใช้ GitHub Organization เพื่อจัดการการกำหนดค่าดังกล่าวหรือไม่? หรือฉันควรทิ้งทุกอย่างไปยังบัญชีของตัวเองพร้อมกับที่เก็บอื่น ๆ ที่ไม่เกี่ยวข้องทั้งหมดโหล

2
. NET MVC สถาปัตยกรรมโครงการ / ชั้น
เมื่อวางแผนสถาปัตยกรรมสำหรับเว็บแอ็พพลิเคชัน MVC ขนาดกลางขนาดใหญ่คุณจะใช้เลเยอร์ให้เป็นแบบแยกย่อยได้มากที่สุดและง่ายต่อการทดสอบอย่างไร (โดยทั่วไปปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุด) สมมติว่าฉันใช้รหัสก่อนเพื่อเข้าถึงข้อมูลของฉัน ฉันต่อสู้กับสิ่งที่จะกำหนด "ตรรกะทางธุรกิจ" เป็นและวิธีที่มันหมายถึงการโต้ตอบกับชั้นข้อมูล ยกตัวอย่างเช่นแอปพลิเคชันการขายยานพาหนะตรรกะทางธุรกิจจะเป็นคลาสที่ทำงานเช่นการคำนวณวงภาษีสำหรับยานพาหนะที่กำหนดเปรียบเทียบสถิติไมล์ต่อแกลลอน ฯลฯ หรือไม่ สำหรับองค์กรธุรกิจ (เช่นรถยนต์รถตู้รถจักรยานยนต์) ฉันจะใส่สิ่งเหล่านี้ในชั้นข้อมูลพร้อมกับDataContextชั้นเรียนของฉัน นอกจากนี้สิ่งที่จะเป็นตรรกะของแอปพลิเคชันซึ่งตรงข้ามกับธุรกิจ - ฉันคาดเดาสิ่งต่าง ๆ เช่นการตรวจสอบการป้อนข้อมูลเซสชัน / ผู้ใช้? ตัวอย่างเช่นตัวควบคุมรถอาจส่งคืนผลลัพธ์การกระทำ / มุมมองที่แสดงรายการรถยนต์สิบอันดับแรกที่กรองตามประเภทและ mpg ที่ดีที่สุด ดังนั้นสมมติว่าฉันมีICarRepository'carRepo' ฉีดเข้าไปในคอนโทรลเลอร์ของฉัน (โดยใช้รูปแบบพื้นที่เก็บข้อมูล / DI) ฉันกรองรถยนต์ของฉันจากพารามิเตอร์วิธีการกระทำเช่นvar cars = carRepo.getCarsByType("hatchback"); ดังนั้นฉันจึงเก็บความรู้การเข้าถึงข้อมูลออกจากตัวควบคุมของฉันโดยใช้ที่เก็บตอนนี้เพื่อให้ตรรกะทางธุรกิจออกจากตัวควบคุมโดยใช้รูปแบบโดเมน - var result = new MpgCalculator (cars); - สมมติว่าฉันต้องการคลาสเครื่องคิดเลขเพราะมันต้องใช้ตรรกะเพิ่มเติมเพื่อคำนวณประสิทธิภาพการใช้เชื้อเพลิงที่ดีที่สุดมากกว่าแค่การโหลด / กรองเอนทิตีจาก DB ดังนั้นตอนนี้ฉันมีชุดข้อมูลสำหรับมุมมองของฉันในการเรนเดอร์ที่ใช้ที่เก็บเพื่อดึงข้อมูลจากเลเยอร์การเข้าถึงข้อมูลและวัตถุเฉพาะโดเมนเพื่อประมวลผลและดำเนินงานที่เกี่ยวข้องกับธุรกิจในข้อมูลนั้น ฉันทำผิดพลาดที่นี่ …

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

2
ไปยังที่เก็บหรือไม่ไปยังที่เก็บ
เมื่อครั้งแรกที่ฉันได้เรียนรู้เกี่ยวกับการออกแบบการขับเคลื่อนด้วยโดเมนฉันยังได้รับการแนะนำให้รู้จักกับที่เก็บและรูปแบบการทำงานที่ครั้งหนึ่งดูเหมือนจะเป็นอันดับต้น ๆ สำหรับเด็กสุดเท่ห์ที่ทำให้แบบสอบถาม SQL เช่น cavemans เทียบกับฐานข้อมูล ยิ่งฉันเข้าสู่หัวข้อนั้นมากเท่าไหร่ฉันก็ยิ่งรู้ว่าพวกเขาไม่จำเป็นอีกต่อไปเพราะORMsเช่นEFและNHibernateที่ใช้ทั้งสองหน่วยงานและพื้นที่เก็บข้อมูลไว้ใน API เดียวที่เรียกว่าเซสชันหรือบริบท ตอนนี้ฉันไม่แน่ใจว่าจะทำอย่างไร เพื่อเก็บหรือไม่ไปยังที่เก็บ ผมเข้าใจโต้แย้งว่าแนวคิดดังกล่าวรั่วเพียงสิ่งที่มากกว่าซับซ้อนขณะที่การเพิ่มอะไรอย่างที่อาจลดความซับซ้อนของการเข้าถึงข้อมูล แต่ก็ไม่ได้รู้สึกขวาคู่ทุกด้านที่เป็นไปได้ของการประยุกต์ใช้ของฉันไปเช่นEntity Framework โดยปกติฉันทำตามคำแนะนำง่ายๆ: เลเยอร์โดเมนคือหัวใจของระบบที่มีเอนทิตี, บริการ, ที่เก็บ ... ชั้นโครงสร้างพื้นฐานให้การใช้งานของส่วนต่อประสานโดเมนที่เกี่ยวข้องกับโครงสร้างพื้นฐานเช่นไฟล์ฐานข้อมูลโปรโตคอล ชั้นแอพลิเคชันเป็นเจ้าภาพรากองค์ประกอบที่เชื่อมโยงสิ่งต่างๆและประสานทุกอย่าง โซลูชันของฉันมักจะมีลักษณะเช่นนี้: Domain.Module1 Domain.Module2 IModule2Repo IModule2Service Module2 Infrastructure.Persistence Repositories EntityFrameworkRepositoryBase MyApp Boostrapper -> inject EntityFrameworkRepositoryBase into IRepository etc. ฉันรักษาเลเยอร์โดเมนของฉันให้สะอาดโดยใช้สิ่งIRepository<'T>ที่เป็นข้อกังวลเกี่ยวกับโดเมนไม่ขึ้นอยู่กับสิ่งอื่นใดที่บอกวิธีเข้าถึงข้อมูล เมื่อตอนนี้ฉันจะทำให้การใช้งานที่เป็นรูปธรรมของIModule2Serviceที่ต้องการเข้าถึงข้อมูลฉันจะต้องฉีดDbContextและโดยสิ่งนี้เชื่อมต่อโดยตรงกับชั้นโครงสร้างพื้นฐาน ( มาที่โครงการ Visual Studio สิ่งนี้อาจทำให้ยุ่งยากเพราะการอ้างอิงแบบวงกลม! ) นอกจากนี้สิ่งที่สามารถเป็นทางเลือกให้กับศูนย์รับฝากและงานfucktons ? CQRS? …

2
รูปแบบพื้นที่เก็บข้อมูลกับการสร้างวัตถุ DAL
เท่าที่ผมได้เรียนรู้ที่ควรมีIRepository CRUDจากนั้นเราจะสืบทอดสิ่งนี้IRepositoryในอินเทอร์เฟซอื่นของเราที่ชอบIProductและใช้IProductคลาสที่เป็นรูปธรรมProductRepositoryด้วยวิธีการเช่นGetAllProducts(), Top5Products(). เราสามารถทำเช่นเดียวกันกับสถาปัตยกรรมระดับ n เช่นการสร้างDAL Class Libraryและในนั้นกำหนดชั้นเรียนProductด้วยวิธีการเช่น,GetAllProducts()Top5Products() ทั้งในDAL.ProductและRepo.ProductRepositoryชั้นเรียนที่เราเริ่มต้นDB ContextของEntity Frameworkและสอบถามข้อมูลที่เกี่ยวข้องของเรา การโทรคล้ายกันทั้งในRepo.ProductRepositoryหรือDAL.ProductจากวิธีการBLL ในมุมมองของความคล้ายคลึงกันเหล่านี้คำถามของฉัน Repos มีประโยชน์อย่างไร? ฉันสามารถทำเช่นเดียวกันกับความสะดวกมากโดยใช้สถาปัตยกรรม n ชั้นด้วย ( Controller, BLL Class Library, DAL Class Library)

3
พื้นที่เก็บข้อมูลจำเป็นต้องใช้อีกต่อไปใน ASP.net 5 และ EF7 หรือไม่
ฉันโพสต์คำถามเกี่ยวกับ GitHub ให้กับทีม EF ฉันได้รับคำตอบว่าจะเป็นการดีกว่าถ้าถามคำถามนี้ที่นี่ดังนั้นฉันจะคัดลอกและวางไว้ที่นี่เนื่องจากเราเป็นลิงก์เพื่อให้คนอื่นเห็นการตอบกลับใน GitHub ไม่กี่ครั้ง คำถาม: ฉันกำลังทำการวิจัยและมีคนชี้ให้เห็นว่า Line 24 ของ DBContext Class กล่าว DbContext เป็นการรวมกันของรูปแบบของหน่วยงานและที่เก็บข้อมูล นี่หมายความว่าเราไม่จำเป็นต้องแยก EF ออกจากพื้นที่เก็บข้อมูลแล้วใช้และส่วนต่อประสานเพื่อแทรกเข้าไปในคอนโทรลเลอร์ โพสต์ต้นฉบับบน Github: https://github.com/aspnet/EntityFramework/issues/4899 เหตุผลที่ฉันถามนี่คือฉันดูเหมือนจะเข้าไปในจุดที่ฉันเพิ่มวิธีการมากมายในพื้นที่เก็บข้อมูลเช่น GetById, GetByName, GetWithIncludesABC, GetWithIncludes123 ฯลฯ และดูเหมือนจะทำให้ repo สกปรกในใจ

3
กำลังจัดเก็บเนื้อหาของไซต์ที่สามารถแก้ไขได้?
เรามีเว็บไซต์ที่ใช้ Django ซึ่งเราต้องการสร้างเนื้อหา (ข้อความและตรรกะทางธุรกิจเช่นแผนการกำหนดราคา) ที่สามารถแก้ไขได้อย่างง่ายดายภายในบริษัท ดังนั้นเราจึงตัดสินใจจัดเก็บไว้นอกรหัสเบส โดยปกติแล้วเหตุผลดังต่อไปนี้: เป็นสิ่งที่คนที่ไม่ใช่ด้านเทคนิคต้องการแก้ไข ตัวอย่างหนึ่งคือการเขียนคำโฆษณาสำหรับเว็บไซต์ - โปรแกรมเมอร์จัดทำแม่แบบพร้อมข้อความที่เป็นค่าเริ่มต้นเป็น "Lorem ipsum ... " และเนื้อหาจริงจะถูกแทรกในภายหลังไปยังฐานข้อมูล เป็นสิ่งที่เราต้องการที่จะสามารถเปลี่ยนแปลงได้อย่างรวดเร็วโดยไม่จำเป็นต้องปรับใช้รหัสใหม่ (ซึ่งปัจจุบันเราทำสองครั้งต่อสัปดาห์) ตัวอย่างจะเป็นคุณสมบัติที่มีให้กับลูกค้าในระดับราคาที่แตกต่างกัน แทนที่จะอ่านโค้ดเหล่านี้เราอ่านจากฐานข้อมูล โซลูชันที่อธิบายมีความยืดหยุ่น แต่มีสาเหตุบางอย่างที่ฉันไม่ชอบ เพราะเนื้อหาจะต้องมีการอ่านข้อมูลจากฐานข้อมูลมีค่าใช้จ่ายในการปฏิบัติงาน เราลดขนาดลงโดยใช้รูปแบบแคช แต่สิ่งนี้ยังเพิ่มความซับซ้อนให้กับระบบ นักพัฒนาซอฟต์แวร์ที่เรียกใช้รหัสภายในดูระบบในสถานะที่แตกต่างกันอย่างมากเมื่อเทียบกับวิธีการทำงานกับการผลิต การทดสอบอัตโนมัติยังใช้ระบบในสถานะที่แตกต่างกัน สถานการณ์เช่นการทดสอบคุณลักษณะใหม่บนเซิร์ฟเวอร์ staging ก็มีความยุ่งยากเช่นกันหากเซิร์ฟเวอร์ staging ไม่มีสำเนาของฐานข้อมูลล่าสุดอาจแตกต่างจากการผลิตโดยไม่คาดคิด เราสามารถลดได้โดยการยอมรับสถานะใหม่ไปยังที่เก็บเป็นครั้งคราว (เช่นโดยการเพิ่มการย้ายข้อมูล) แต่ดูเหมือนว่าวิธีการที่ผิด ใช่ไหม? ความคิดใดวิธีที่ดีที่สุดในการแก้ปัญหาเหล มีวิธีที่ดีกว่าสำหรับการจัดการเนื้อหาที่ฉันมองเห็นหรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.