คำถามติดแท็ก third-party-libraries

10
ใช้ไลบรารีของบุคคลที่สาม - ใช้ wrapper เสมอหรือไม่
โครงการส่วนใหญ่ที่ฉันเกี่ยวข้องกับการใช้ส่วนประกอบโอเพ่นซอร์สหลาย ๆ ตามหลักการทั่วไปเป็นความคิดที่ดีเสมอหรือไม่ที่จะหลีกเลี่ยงการผูกส่วนประกอบทั้งหมดของรหัสกับห้องสมุดบุคคลที่สามและแทนที่จะใช้กระดาษห่อหุ้มห่อหุ้มเพื่อป้องกันความเจ็บปวดจากการเปลี่ยนแปลง ตัวอย่างโครงการ PHP ส่วนใหญ่ของเราโดยตรงใช้ log4php เป็นเฟรมเวิร์กการบันทึกนั่นคือยกตัวอย่างผ่าน \ Logger :: getLogger () พวกมันใช้ -> info () หรือ -> warn () วิธีอื่น ๆ ในอนาคต อย่างไรก็ตามกรอบการบันทึกข้อมูลสมมุติฐานอาจปรากฏขึ้นซึ่งจะดีกว่าในบางวิธี โครงการทั้งหมดที่เข้าคู่กับลายเซ็นเมธอด log4php จะต้องเปลี่ยนแปลงในหลาย ๆ แห่งเพื่อให้เหมาะสมกับลายเซ็นใหม่ สิ่งนี้จะส่งผลกระทบอย่างกว้างขวางต่อ codebase และการเปลี่ยนแปลงใด ๆ อาจเป็นปัญหาได้ ในการพิสูจน์โค้ดใหม่ในอนาคตจากสถานการณ์ประเภทนี้ฉันมักจะพิจารณา (และบางครั้งใช้) คลาส wrapper เพื่อห่อหุ้มฟังก์ชั่นการบันทึกและทำให้ง่ายขึ้นแม้ว่าจะไม่เข้าใจผิดเพื่อเปลี่ยนวิธีการบันทึกในอนาคตโดยมีการเปลี่ยนแปลงน้อยที่สุด ; รหัสเรียกเสื้อคลุม, เสื้อคลุมผ่านการเรียกร้องให้กรอบการเข้าสู่ระบบแบบหวือหวา โปรดจำไว้ว่ามีตัวอย่างที่ซับซ้อนมากขึ้นกับห้องสมุดอื่น ๆ ฉันเป็นวิศวกรรมมากเกินไปหรือนี่เป็นข้อควรระวังที่ชาญฉลาดในกรณีส่วนใหญ่? แก้ไข: ข้อควรพิจารณาเพิ่มเติม - การใช้การฉีดพึ่งพาและการทดสอบสองเท่าต้องการให้เราสรุป …

13
เจ้านายของฉันมีคดีไม่ดีที่“ ไม่ได้คิดค้นที่นี่” [ปิด]
แผนกของฉันมีความเชี่ยวชาญในการแปลงข้อมูลลูกค้าเป็นสคีมาฐานข้อมูลของเราเพื่อให้พวกเขาสามารถใช้ซอฟต์แวร์ของเราได้ ตอนนี้เรามีแอปพลิเคชั่น C # ที่ใช้เวลาIDataReader(99% ของเวลาทั้งหมดSqlDataReader) ทำการทำความสะอาดและทำแผนที่แทรกเข้าไปในDataRowวัตถุแล้วใช้ a SqlBulkCopyเพื่อแทรกเข้าไปในฐานข้อมูลของเรา บางครั้ง (โดยเฉพาะอย่างยิ่งเมื่อฐานข้อมูลต้นทางมีรูปภาพเป็นvarbinaryวัตถุ) กระบวนการนี้สามารถชะงักงันได้ด้วยการถ่ายโอน SQL จากเซิร์ฟเวอร์ไปยังแอปเพื่อให้เลี้ยวขวาแล้วกลับไปที่เซิร์ฟเวอร์ ฉันรู้สึกว่าถ้าเราเขียนการแปลงใหม่เป็นแพ็คเกจ SSISมันสามารถเพิ่มความเร็วได้มากขึ้น อย่างไรก็ตามสิ่งกีดขวางที่ใหญ่ที่สุดที่ฉันยังคงดำเนินต่อไปคือเมื่อเจ้านายของฉันในแบบที่ไม่ได้รับการประดิษฐ์ที่นี่ผลักดันกลับและพูดว่า "จะเกิดอะไรขึ้นถ้า Microsoft หยุดให้การสนับสนุน SSIS เราจะมีรหัสล้าสมัย นี่ไม่ใช่ครั้งแรกที่ฉันกด "จะเกิดอะไรขึ้นถ้าพวกเขาลบคุณลักษณะนั้น ... ?" ตอบจากหัวหน้าของฉัน ฉันไม่มีเวลาเขียนการแปลงแบบเก่าสอนตัวเอง SSIS และเขียนวิธีใหม่ในการสาธิต / ทดสอบผลประโยชน์ (เราไม่มีคนใช้ SSIS ดังนั้นจะมีช่วงเวลาที่เราจะ ต้องเรียนรู้วิธีใช้) ฉันควรทำอย่างไรในสถานการณ์เช่นนี้? หยุดผลักดันเทคโนโลยีใหม่หรือไม่ รอจนกว่าเขาจะออกจากแผนก (ฉันเป็นคนที่สองมากที่สุดในแผนกหลังจากเขา แต่อาจเป็นปีก่อนที่เขาจะลาออก / เกษียณ)? ค้นหาวิธีใหม่ในการทำให้เขาหยุดกลัวเครื่องมือของบุคคลที่สามใช่ไหม

6
วิธีจัดการกับความกลัวในการพึ่งพา
ทีมของฉันในการสร้างส่วนประกอบที่พันธมิตรของ บริษัท สามารถใช้เพื่อรวมเข้ากับแพลตฟอร์มของเรา ดังนั้นฉันเห็นด้วยที่เราควรใช้ความระมัดระวังเป็นอย่างยิ่งเมื่อแนะนำบุคคลที่สาม (อ้างอิง) ขณะนี้เราไม่มีการพึ่งพาของบุคคลที่สามและเราต้องอยู่ในระดับ API ต่ำสุดของกรอบงาน ตัวอย่างบางส่วน: เราถูกบังคับให้อยู่ในระดับ API ต่ำสุดของกรอบงาน (. NET Standard) เหตุผลเบื้องหลังสิ่งนี้คือว่าแพลตฟอร์มใหม่อาจมาถึงวันหนึ่งที่รองรับเฉพาะระดับ API ที่ต่ำมากเท่านั้น เราได้ดำเนินการส่วนประกอบของเราเองสำหรับ (de) การทำให้เป็นอันดับ JSON และอยู่ในกระบวนการของการทำเช่นเดียวกันสำหรับ JWT สิ่งนี้มีอยู่ในเฟรมเวิร์ก API ที่สูงขึ้น เราได้นำ wrapper ไปใช้กับเฟรมเวิร์ก HTTP ของไลบรารี่มาตรฐานเพราะเราไม่ต้องการพึ่งพาการใช้ HTTP ของไลบรารี่มาตรฐาน รหัสทั้งหมดสำหรับการจับคู่กับ / จาก XML ถูกเขียน "ด้วยมือ" อีกครั้งด้วยเหตุผลเดียวกัน ฉันรู้สึกว่าเรากำลังจะไปไกลเกินไป ฉันสงสัยว่าจะจัดการกับเรื่องนี้อย่างไรตั้งแต่นี้ฉันคิดว่าสิ่งนี้มีผลกระทบอย่างมากต่อความเร็วของเรา

7
PM กำลังเลือกการตั้งค่าที่ซับซ้อนเกินไปซึ่งไม่มีใครมีประสบการณ์กับ [ปิด]
เมื่อเร็ว ๆ นี้ฉันเริ่มโครงการที่ดูไม่ยากเกินไปแนวคิดนี้เป็นแอปพลิเคชั่นที่ค่อนข้างง่ายที่ต้องยอมรับอินพุตทุกครั้งจากนั้น (อาจจะ 10 เท่าต่อวัน) และพยายามดำเนินการบางอย่างกับพวกเขาและรวบรวมผลลัพธ์ทั้งหมด ในตอนท้าย แอปพลิเคชันนี้จะได้รับเว็บพอร์ทัลส่วนหน้าที่ลูกค้าสามารถใช้เพื่อดูผลลัพธ์ไม่ใช่วิทยาศาสตร์ด้านจรวดอย่างแน่นอน สำหรับสิ่งนี้ฉันเริ่มต้นใช้ประโยชน์อย่างชาญฉลาดของไลบรารี่ของ Python ( ThreadPoolExecutor) และใช้ไลบรารี่ที่ใช้งานง่ายสำหรับ front-end (ฉันเลือก Flask เพราะมันง่ายสำหรับผู้เริ่มต้นและง่ายต่อการบำรุงรักษาและทดสอบ) เมื่อเราอยู่ครึ่งทางของโครงการ PM ระบุว่าเราต้องใช้ความสามารถในการจัดคิวข้อความของบุคคลที่สามแทนการใช้เธรดและต้องใช้การปรับสมดุลโหลด และบริการอื่น ๆ อีกมากมายที่ไม่เคยมีประสบการณ์มาก่อน ในที่สุดสิ่งนี้นำไปสู่รหัสสปาเก็ตตี้ซึ่งเป็นงานที่ไม่สามารถทดสอบได้ (เนื่องจากความซับซ้อนของห้องสมุดบุคคลที่สามการแก้ไขรหัสไม่ทำงาน) และอาการปวดหัวเพราะไม่มีใครรู้ว่ามูลค่าเพิ่มของบริการเหล่านี้คืออะไร . ก่อนที่คุณจะพูดว่า "ใช่คุณควรใช้บริการเหล่านั้น" โปรดจำไว้ว่าไม่มีใครรู้วิธีใช้สิ่งเหล่านี้หรือแม้กระทั่งรู้ว่าสิ่งที่พวกเขาทำนอกเหนือจากการแนะนำโค้ดที่มีเงื่อนไขการแข่งขัน ฉันควรทำอย่างไรเกี่ยวกับเรื่องนี้? ณ จุดนี้มันจะมีค่าใช้จ่ายสูงเกินไปที่จะกลับไปใช้สิ่งที่เรามีและ PM นั้นตายตัวในการใช้บริการเหล่านี้แม้ว่าผลิตภัณฑ์ขั้นสุดท้ายจะแย่ลงกว่าตอนแรก มีประโยชน์ในการพูดคุยกับเขาบ้างไหม? ฉันขอเวลาเพิ่มหรือไม่? หรือคำตอบที่โหดร้ายฉันแค่โง่เกินไปสำหรับงานของฉันหรือเปล่า

12
จะทำให้ห้องสมุดบุคคลที่สามเป็นปัจจุบันได้อย่างไร?
สมมติว่าฉันมีโครงการที่ขึ้นอยู่กับห้องสมุด 10 แห่งและภายในโครงการของฉันฉันสามารถใช้ไลบรารี่รุ่นใดก็ได้ ดังนั้นฉันเริ่มต้นด้วยรุ่นล่าสุด จากนั้นแต่ละไลบรารีจะได้รับการอัพเดตเดือนละครั้ง (โดยเฉลี่ย) ตอนนี้การรักษาลำตัวของฉันให้ทันสมัยอยู่เสมอจะต้องอัพเดตการอ้างอิงห้องสมุดทุกสามวัน เห็นได้ชัดว่ามันมากเกินไป ถึงแม้ว่าโดยปกติแล้วรุ่น 1.2.3 จะเป็นแบบดรอปดาวน์แทนรุ่น 1.2.2 แต่คุณก็ยังไม่มีทางรู้ว่าจะทำการทดสอบ การทดสอบหน่วยไม่เพียงพอ ถ้าเป็นโปรแกรมฐานข้อมูล / ไฟล์คุณต้องตรวจสอบให้แน่ใจว่ามันทำงานอย่างถูกต้องกับไฟล์ที่สร้างขึ้นด้วยเวอร์ชันที่เก่ากว่าและอาจกลับกัน ถ้ามันมีบางอย่างเกี่ยวกับ GUI คุณต้องตรวจสอบทุกอย่างด้วยสายตา และอื่น ๆ คุณจัดการกับสิ่งนี้ได้อย่างไร แนวทางที่เป็นไปได้บางประการ: ถ้าไม่ได้ยากจนไม่สามารถแก้ไขได้ อยู่กับไลบรารี่รุ่นปัจจุบันของคุณตราบใดที่คุณไม่สังเกตเห็นอะไรผิดปกติกับไลบรารี่ที่ใช้ในแอปพลิเคชั่นของคุณ การเปลี่ยนแปลงเล็ก ๆ น้อย ๆ ที่เพิ่มขึ้นนั้นเป็นเพียงของเสีย อัปเดตบ่อยครั้งเพื่อให้การเปลี่ยนแปลงเล็ก ๆ เนื่องจากคุณจะต้องอัปเดตทุกวันไม่ว่ากรณีใด ๆ จึงเป็นการดีกว่าที่จะอัปเดตบ่อยครั้งเพื่อให้คุณสังเกตเห็นปัญหาก่อนเวลาเมื่อแก้ไขได้ง่ายแทนที่จะกระโดดข้ามหลายเวอร์ชันและปล่อยให้ปัญหาที่อาจเกิดขึ้นสะสม บางสิ่งบางอย่างในระหว่าง มีจุดหวานหรือไม่?

1
Vanilla JS ยังถือว่าเป็นห้องสมุดหรือไม่?
เมื่อไม่นานมานี้ฉันพบว่า VanillaJS (document?) เป็นไลบรารีที่รวมกับเบราว์เซอร์ 99% เท่านั้นและไม่ใช่ JavaScript ดั้งเดิม ในขณะที่เขียน lib ของฉันฉันมักจะหลีกเลี่ยงสิ่งที่เป็นประโยชน์ทั้งหมด libs ส่วนใหญ่ ตอนนี้ฉันมีสามคำถาม: VanillaJS ยังถือว่าเป็น lib หรือไม่? มีวิธีทำอะไรกับ DOM ที่ไม่มี VanillaJS หรือไม่? libs ที่สำคัญนั้นใช้ VanillaJS หรือ native JS (ไม่มีสิ่งของ)

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

5
ฉันควรเขียน API อินเตอร์เฟสก่อนการใช้งานหรือไม่
ฉันได้ทำการค้นคว้าเพิ่มเติมเกี่ยวกับการเขียนโปรแกรม "ที่เป็นระเบียบ" เมื่อเร็ว ๆ นี้และฉันได้เรียนรู้ว่าฉันควรจะเขียนโปรแกรมไปยังอินเทอร์เฟซไม่ใช่การใช้งาน โดยที่ในใจมันจะดีกว่าหรือไม่ที่จะ "ร่าง" โครงการในส่วนต่อประสานก่อนที่จะเขียนการนำไปปฏิบัติในที่ที่เป็นไปได้? และถ้าเป็นกรณีนี้ในกรณีของการใช้ไลบรารี่ของบุคคลที่สาม (เช่น Lidgren) ฉันควรจะห่อมันไว้ในส่วนต่อประสานและแก้ไขมันผ่านคอนเทนเนอร์ IOC หรือไม่

1
ข้อกำหนดสิทธิการใช้งานสำหรับการรวมซอฟต์แวร์โอเพนซอร์ซ
ในโครงการโอเพ่นซอร์สมีการรวมไลบรารีโอเพ่นซอร์สอื่นไว้จำนวนหนึ่งเพื่อใช้งานฟังก์ชันที่จำเป็นบางอย่างเป็นไลบรารี (LGPL) และบางส่วนเป็นซอร์สโค้ด (ไม่ใช่ LGPL) สิทธิ์ใช้งาน BSD ใหม่ถูกเลือกสำหรับโครงการ ไลบรารี่โอเพ่นซอร์สที่รวมมานั้นได้รับอนุญาตภายใต้ใบอนุญาต BSD, MIT, Apache และ LGPL ใหม่ แต่ไม่มีรหัสลิขสิทธิ์ GPL ควรให้เครดิตไลบรารีโอเพนซอร์สอื่น ๆ เหล่านี้อย่างไร จำเป็นต้องมีไลเซนส์ไลบรารีทั้งหมดในไฟล์ไลเซนส์โครงการหลักหรือไม่? มันเพียงพอแล้วหรือไม่ที่จะให้ลิงค์ไปยังเว็บไซต์โครงการในกล่องโต้ตอบความช่วยเหลือ -> เกี่ยวกับและเอกสารประกอบ? เป็นเครดิตใด ๆจริงๆจำเป็น?

3
วิธีการเก็บรักษาอาร์กิวเมนต์นับเป็นวิธีที่ต่ำและยังคงแยกการพึ่งพาของบุคคลที่สามได้อย่างไร
ฉันใช้ห้องสมุดบุคคลที่สาม พวกเขาส่งPOJOให้ฉันซึ่งอาจนำไปใช้ในจุดประสงค์และวัตถุประสงค์ของเราเช่นนี้: public class OurData { private String foo; private String bar; private String baz; private String quux; // A lot more than this // IMPORTANT: NOTE THAT THIS IS A PACKAGE PRIVATE CONSTRUCTOR OurData(/* I don't know what they do */) { // some stuff } public String getFoo() …

6
ในฐานะผู้เริ่มต้นฉันควรจะสร้างห้องสมุดของตัวเองโดยใช้ห้องสมุดบุคคลที่สามหรือไม่?
ในฐานะที่เป็นโปรแกรมเมอร์ Python เริ่มต้นคุณควรสร้างและทำความเข้าใจกับไลบรารีของตัวเองก่อนที่จะข้ามไปยังห้องสมุดบุคคลที่สามขั้นสูงที่มีฟังก์ชั่นที่ฉันต้องการหรือไม่? บางโครงการ (เช่นกรอบเว็บเช่น Django) อาจมีขนาดใหญ่เกินไปสำหรับแนวทางนี้ แต่โครงการอื่น ๆ (เช่นโปรแกรมรวบรวมข้อมูลเว็บไลบรารีกราฟตัวแยกวิเคราะห์ HTML) เป็นไปได้ ฉันกังวลว่าการพึ่งพาห้องสมุดของบุคคลที่สามจะทำให้การเติบโตของฉันล่าช้า หมายเหตุ: คำถามนี้และคำถามนี้ดูเหมือนจะเน้นโปรแกรมเมอร์ที่มีประสบการณ์มากขึ้นซึ่งอาจมุ่งเน้นไปที่ประสิทธิภาพของการใช้ซ้ำมากกว่าประโยชน์การเรียนรู้ ฉันคิดว่าคำถามของฉันมุ่งเน้นไปที่ผู้เริ่มต้น

2
หากมีสองวิธีในการเข้าใกล้งานวิธีหนึ่งควรเลือกระหว่างพวกเขา?
ฉันมีกรณีการใช้งานเฉพาะและพบ 3 วิธีในการทำผ่านอินเทอร์เน็ตซึ่งกำหนดไว้สำหรับกรณีการใช้งานที่คลุมเครือ ฉันกำลังจ้องมองที่สามคนนี้สงสัยว่าจะใช้ ฉันมักจะนั่งที่นั่นไม่รู้จะทำอะไร - แล้วไม่ทำอะไรเลย ... มีวิธีเลือกอย่างดีไหม? ฉันควรลองพวกเขาทั้งหมดหรือไม่ เพื่อให้มีความเฉพาะเจาะจงมากขึ้นสำหรับบริบทฉันพยายามสร้างเกมกระดานที่มีน้ำหนักเบามากซึ่งฉันต้องการส่วนของหน้าจอที่ฉันสามารถหมุนตารางเกมกระดานซูมเข้าไปในตารางและย้ายชิ้นส่วนบนตารางนี้ ฉันไม่รู้ว่าจะทำอย่างไร แต่ฉันพบสิ่งต่าง ๆ ออนไลน์เช่น Core Animation, Core Graphics, Sprite Kit และฉันเห็นข้อโต้แย้งและต่อต้านพวกเขา - ตัวอย่างเช่น Sprite kit อยู่ในระดับสูง แต่รักษาอัตราเฟรมไว้ที่ 60 ซึ่ง สิ้นเปลืองแบตเตอรี่เมื่อไม่มีอะไรเคลื่อนไหวในหน้าจอ Core Animation เป็น API ระดับต่ำกว่าซึ่งคัดค้านแนวทางของ Apple ในการ "ใช้ระดับสูงสุดของนามธรรม" ฉันไม่ต้องการเรียนรู้ 3 สิ่งที่ต้องใช้ 1 มีวิธีที่ฉันสามารถเลือกและรับ unstuck ได้หรือไม่ ฉันทิ้งคำถามนี้ไว้ค่อนข้างคลุมเครือเพราะฉันคิดว่ามันใช้ได้กับทุกด้านของซอฟต์แวร์

3
ใครคือบุคคลที่ 1 และ 2?
ดังนั้นนี่คือความอยากรู้อย่างแท้จริง ฉันได้ยินคำว่าบุคคลที่สามเหมือนใน "ห้องสมุดบุคคลที่สาม" สักพัก ฉันสงสัยว่าทำไมเราถึงพูดอันดับ 3 ไม่ใช่ 2nd (หรือ 4)? ใครคือบุคคลที่หนึ่งและสองและคำนี้มาจากไหน?

3
ส่วนประกอบสองอย่างที่เสนอฟังก์ชันการทำงานเดียวกันซึ่งเป็นไปตามความต้องการที่แตกต่างกัน
ฉันกำลังสร้างแอปพลิเคชันใน PHP โดยใช้ Zend Framework 1 และ Doctrine2 เป็นเลเยอร์ ORM ทุกอย่างเป็นไปด้วยดี ตอนนี้ฉันสังเกตเห็นว่าทั้ง ZF1 และ Doctrine2 มาพร้อมกับและใช้งานแคชของพวกเขาเอง ฉันได้ประเมินทั้งสองอย่างและในขณะที่แต่ละคนมีข้อดีและข้อเสียของตัวเองทั้งคู่ต่างก็โดดเด่นกว่าคนอื่นสำหรับความต้องการที่เรียบง่ายของฉัน ดูเหมือนว่าไลบรารีทั้งสองนั้นจะถูกเขียนลงบนอินเตอร์เฟสที่เกี่ยวข้องไม่ใช่การประยุกต์ใช้ เหตุผลที่ฉันรู้สึกว่านี่เป็นปัญหาคือในระหว่างการบูตแอปพลิเคชันของฉันฉันต้องกำหนดค่าแคชไดรเวอร์สองตัว - แต่ละอันมีไวยากรณ์ของตัวเอง ไม่ตรงกันถูกสร้างขึ้นอย่างง่ายดายด้วยวิธีนี้และรู้สึกไม่มีประสิทธิภาพในการตั้งค่าสองการเชื่อมต่อกับแบ็กเอนด์แคชเพราะสิ่งนี้ ฉันกำลังพยายามกำหนดว่าอะไรคือวิธีที่ดีที่สุดในการส่งต่อและยินดีรับข้อมูลเชิงลึกที่คุณสามารถเสนอได้ สิ่งที่ฉันคิดตอนนี้มีสี่ตัวเลือก: ไม่ทำอะไรเลยยอมรับว่ามีสองคลาสที่เสนอฟังก์ชันการแคช สร้างคลาส Facade เพื่อติดอินเทอร์เฟซของ Zend เข้ากับการใช้แคชของ Doctrine ตัวเลือก 2 วิธีอื่น ๆ - สร้าง Facade เพื่อแมปอินเทอร์เฟซของ Doctrine บนแบ็กเอนด์ Zend Framework ใช้หลายอินเทอร์เฟซการสืบทอดเพื่อสร้างอินเทอร์เฟซเดียวเพื่อปกครองทั้งหมดและอธิษฐานว่าไม่มีการซ้อนทับกัน (เช่น: หากทั้งคู่มีวิธี "บันทึก" พวกเขาจะต้องยอมรับพารามิเตอร์ในลำดับเดียวกันเนื่องจาก PHP ขาดความหลากหลายที่เหมาะสม) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.