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

การออกแบบระดับสูงและคำอธิบายของระบบซอฟต์แวร์ การออกแบบสถาปัตยกรรมกลั่นรายละเอียดของการใช้งานอัลกอริทึมและการแสดงข้อมูลเพื่อมุ่งเน้นการโต้ตอบของส่วนประกอบ "กล่องดำ"

6
ใน microservice เป็นฐานข้อมูลเดียวหรือฐานข้อมูลเดียวสำหรับแต่ละบริการหรือไม่
ฉันเข้าใจว่าแต่ละบริการในสถาปัตยกรรม microservice ควรมีฐานข้อมูลของตัวเอง อย่างไรก็ตามด้วยการมีฐานข้อมูลของตัวเองมันหมายถึงการมีฐานข้อมูลอื่นในอินสแตนซ์ฐานข้อมูลเดียวกันหรือมีอินสแตนซ์ฐานข้อมูลอื่นอยู่ใช่หรือไม่ โดยสิ่งนี้ฉันไม่ได้หมายถึงการแชร์ฐานข้อมูลซึ่งไม่ใช่ข้อยกเว้น แต่เป็นอินสแตนซ์ฐานข้อมูล ตัวอย่างเช่นถ้าฉันใช้ AWS และมีบริการ 3 รายการฉันจะสร้างฐานข้อมูล 3 รายการสำหรับบริการแต่ละรายการในอินสแตนซ์ RDS เดียวหรือฉันจะสร้างอินสแตนซ์ RDS 3 รายการแต่ละรายการมีฐานข้อมูลซึ่งใช้บริการแต่ละบริการอย่างอิสระหรือไม่ หากการใช้ฐานข้อมูลหลาย ๆ ตัวบนอินสแตนซ์ RDS เดียวเป็นความคิดที่ดีกว่ามันจะเอาชนะวัตถุประสงค์ของการมีบริการที่เป็นอิสระเพราะ: ทรัพยากรของอินสแตนซ์ RDS จะถูกแชร์ระหว่างบริการต่างๆ Service A ซึ่งอาจมีการใช้งานฐานข้อมูลจำนวนมากในบางช่วงเวลาจะส่งผลกระทบต่อบริการ B ซึ่งใช้ฐานข้อมูลอื่น แต่ในอินสแตนซ์ RDS เดียวกันหรือไม่ บริการทั้งหมดจะขึ้นอยู่กับรุ่นฐานข้อมูลของอินสแตนซ์ RDS นั้น

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

9
คลาสผู้จัดการสามารถเป็นสัญลักษณ์ของสถาปัตยกรรมที่ไม่ดีได้หรือไม่?
เมื่อเร็ว ๆ นี้ฉันเริ่มคิดว่าการมีคลาสผู้จัดการจำนวนมากในการออกแบบของคุณเป็นสิ่งที่ไม่ดี ความคิดนั้นไม่เพียงพอสำหรับฉันที่จะโต้แย้งที่น่าสนใจ แต่นี่คือประเด็นทั่วไปบางประการ: ฉันพบว่ามันยากมากสำหรับฉันที่จะเข้าใจระบบที่ต้องพึ่งพา "ผู้จัดการ" เป็นอย่างมาก นี่เป็นเพราะนอกเหนือจากองค์ประกอบของโปรแกรมที่เกิดขึ้นจริงคุณต้องเข้าใจวิธีการและเหตุผลที่จะใช้ผู้จัดการ ผู้จัดการหลายครั้งดูเหมือนว่าจะใช้เพื่อบรรเทาปัญหาในการออกแบบเช่นเมื่อโปรแกรมเมอร์ไม่สามารถหาวิธีที่จะทำให้โปรแกรม Just Work TMและต้องอาศัยคลาสผู้จัดการเพื่อให้ทุกอย่างทำงานได้อย่างถูกต้อง แน่นอนผู้จัดการได้ดี ตัวอย่างที่ชัดเจนคือโครงสร้างที่EventManagerฉันโปรดปรานตลอดกาล : P ประเด็นของฉันคือผู้จัดการดูเหมือนจะใช้เวลามากเกินไปและไม่มีเหตุผลที่ดีไปกว่าการปิดบังปัญหากับสถาปัตยกรรมของโปรแกรม คลาสผู้จัดการเป็นสัญลักษณ์ของสถาปัตยกรรมที่ไม่ดีจริง ๆ หรือไม่?

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

10
การแยกแอพพลิเคชั่นแบบเสาหินออกเป็นส่วนเล็ก ๆ หลาย ๆ อันช่วยป้องกันข้อผิดพลาดหรือไม่? [ปิด]
วิธีการถามนี้ก็คือ; ทำไมโปรแกรมมีแนวโน้มที่จะเป็นเสาหิน? ฉันกำลังคิดถึงบางสิ่งเช่นแพ็คเกจอนิเมชั่นเช่น Maya ซึ่งผู้คนใช้สำหรับเวิร์กโฟลว์ต่างๆ หากความสามารถในการเคลื่อนไหวและการสร้างแบบจำลองถูกแบ่งออกเป็นแอปพลิเคชันแยกต่างหากของตนเองและพัฒนาแยกต่างหากเมื่อไฟล์ถูกส่งผ่านระหว่างกันจะไม่สามารถดูแลรักษาได้ง่ายขึ้นหรือไม่

9
เหตุใดจึงเกิดการวน (จริง) ในตัวสร้างที่ไม่ดีจริง ๆ
แม้ว่าคำถามทั่วไปขอบเขตของฉันจะค่อนข้าง C # เพราะฉันรู้ว่าภาษาอย่าง C ++ มีความหมายที่แตกต่างกันเกี่ยวกับการเรียกใช้คอนสตรัคเตอร์การจัดการหน่วยความจำพฤติกรรมที่ไม่ได้กำหนด ฯลฯ บางคนถามคำถามที่น่าสนใจซึ่งไม่ได้รับคำตอบสำหรับฉันง่ายๆ ทำไม (หรือเลยหรือ?) ถือได้ว่าเป็นการออกแบบที่ไม่ดีเพื่อให้ตัวสร้างคลาสเริ่มการวนซ้ำไม่สิ้นสุด (เช่นลูปเกม) มีแนวคิดบางอย่างที่แตกหักโดยสิ่งนี้: เช่นเดียวกับหลักการที่สร้างความประหลาดใจน้อยที่สุดผู้ใช้ไม่คาดหวังว่านวกรรมิกจะทำงานแบบนี้ การทดสอบหน่วยยากขึ้นเนื่องจากคุณไม่สามารถสร้างคลาสนี้หรือฉีดได้เนื่องจากไม่เคยออกจากลูป จุดสิ้นสุดของลูป (จบเกม) เป็นแนวคิดในเวลาที่คอนสตรัคสร้างเสร็จซึ่งก็แปลก ในทางเทคนิคแล้วคลาสนี้ไม่มีสมาชิกสาธารณะยกเว้นนวกรรมิกซึ่งทำให้เข้าใจได้ยากขึ้น (โดยเฉพาะภาษาที่ไม่มีการใช้งาน) แล้วมีปัญหาทางเทคนิค: คอนสตรัคเตอร์ไม่เคยเสร็จสิ้นดังนั้นจะเกิดอะไรขึ้นกับ GC ที่นี่? วัตถุนี้มีอยู่แล้วใน Gen 0 หรือไม่ การได้มาจากคลาสนั้นเป็นไปไม่ได้หรืออย่างน้อยก็ซับซ้อนมากเนื่องจากข้อเท็จจริงที่ว่าคอนสตรัคเตอร์ไม่ส่งคืน เห็นได้ชัดว่ามีบางสิ่งที่ไม่ดีหรือคดเคี้ยวมากกว่านี้หรือไม่?
47 c#  architecture 

11
ความหมายของอะซิงโครนัส vs ซิงโครนัส [ปิด]
ความหมายของคำว่าอะไรคือสิ่งที่ไม่ตรงกันและซิงโครในสาขาวิทยาศาสตร์คอมพิวเตอร์? หากคุณ google ความหมายของคำที่คุณจะได้รับต่อไปนี้: Asynchronous: ไม่ได้ที่มีอยู่หรือเกิดขึ้นในเวลาเดียวกัน ซิงโคร: ที่มีอยู่หรือเกิดขึ้นในเวลาเดียวกัน แต่ดูเหมือนว่าพวกเขาจะใช้ในการถ่ายทอดความหมายตรงข้ามในการเขียนโปรแกรมหรือวิทยาศาสตร์คอมพิวเตอร์: คุณลักษณะ HTML asyncหมายความว่าสคริปต์จะถูกดำเนินการทันทีที่มีการดาวน์โหลดแม้ว่า HTML จะยังคงมีการแยกวิเคราะห์หรือดาวน์โหลดซึ่งหมายความว่าทั้งกระบวนการสคริปต์และ HTML นั้นมีอยู่และเกิดขึ้นพร้อมกันกับฉัน คำศัพท์เหล่านี้ใช้เพื่อถ่ายทอดความหมายตรงกันข้ามในวิทยาการคอมพิวเตอร์หรือฉันไม่มีจุดหรือไม่

7
Application layer กับ domain layer?
ฉันกำลังอ่านการออกแบบที่ขับเคลื่อนด้วยโดเมนโดยอีแวนส์และฉันก็เป็นส่วนหนึ่งที่พูดถึงสถาปัตยกรรมแบบเลเยอร์ ฉันเพิ่งรู้ว่าแอปพลิเคชันและโดเมนเลเยอร์แตกต่างกันและควรแยกจากกัน ในโครงการที่ฉันกำลังทำอยู่พวกเขาเป็นแบบผสมผสานและฉันไม่สามารถบอกความแตกต่างได้จนกว่าฉันจะอ่านหนังสือ (และฉันไม่สามารถบอกได้ว่าตอนนี้ฉันชัดเจนมาก) จริงๆ คำถามของฉันเนื่องจากทั้งคู่เกี่ยวข้องกับตรรกะของแอปพลิเคชันและควรจะสะอาดในด้านเทคนิคและการนำเสนอข้อดีของการวาดขอบเขตทั้งสองนี้คืออะไร

9
ถือว่าเป็นอันตรายหรือไม่? รหัสสามารถทำงานได้โดยไม่ได้หรือไม่
ตกลงดังนั้นชื่อเรื่องนั้นเป็นเรื่อง clickbaity เล็ก ๆ น้อย ๆ แต่อย่างจริงจังฉันได้รับการบอกไม่ต้องถามสักครู่ ฉันชอบที่มันส่งเสริมวิธีการที่จะใช้เป็นข้อความในแบบเชิงวัตถุจริง แต่นี่เป็นปัญหาที่จู้จี้ที่คร่ำครวญในหัวของฉัน ฉันสงสัยว่ารหัสที่เขียนได้ดีสามารถปฏิบัติตามหลักการ OO และหลักการทำงานได้ในเวลาเดียวกัน returnฉันพยายามที่จะกระทบความคิดเหล่านี้และจุดเกาะใหญ่ที่ผมเคยมีที่ดินบน ฟังก์ชั่นบริสุทธิ์มีสองคุณสมบัติ: การเรียกซ้ำ ๆ ด้วยอินพุตเดียวกันจะให้ผลลัพธ์เดียวกันเสมอ นี่ก็หมายความว่ามันไม่เปลี่ยนรูป สถานะของมันถูกตั้งค่าเพียงครั้งเดียว มันไม่มีผลข้างเคียง การเปลี่ยนแปลงเพียงอย่างเดียวที่เกิดจากการเรียกมันคือการสร้างผลลัพธ์ ดังนั้นวิธีการอย่างใดอย่างหนึ่งเกี่ยวกับการทำงานอย่างหมดจดถ้าคุณได้สาบานว่าจะใช้returnเป็นวิธีการสื่อสารผลลัพธ์ของคุณ? บอกไม่ได้ถามผลงานความคิดโดยใช้สิ่งที่บางคนจะพิจารณาผลข้างเคียง เมื่อฉันจัดการกับวัตถุฉันไม่ถามเกี่ยวกับสถานะภายในของวัตถุนั้น ฉันบอกสิ่งที่ฉันต้องทำและใช้สถานะภายในเพื่อหาว่าจะทำอย่างไรกับสิ่งที่ฉันบอกให้ทำ เมื่อฉันบอกมันฉันไม่ได้ถามว่ามันทำอะไร ฉันแค่หวังว่ามันจะทำอะไรบางอย่างเกี่ยวกับสิ่งที่มันถูกบอกให้ทำ ฉันคิดว่า Tell, Don't Ask เป็นมากกว่าชื่อที่แตกต่างกันสำหรับการห่อหุ้ม เมื่อฉันใช้returnฉันไม่มีความคิดในสิ่งที่เรียกว่าฉัน ฉันไม่สามารถพูดได้ว่าเป็นโปรโตคอลฉันต้องบังคับให้จัดการกับโปรโตคอลของฉัน ซึ่งในหลายกรณีได้รับการแสดงออกเป็นสถานะภายใน แม้ว่าสิ่งที่ได้รับการเปิดเผยไม่ได้ระบุอย่างชัดเจน แต่โดยทั่วไปแล้วการคำนวณบางอย่างที่ทำกับสถานะและอินพุต args มีอินเทอร์เฟซสำหรับการตอบสนองผ่านกำบังโอกาสที่จะนวดผลลัพธ์เป็นสิ่งที่มีความหมายมากกว่าสถานะภายในหรือการคำนวณ นั่นคือข้อความผ่าน ดูตัวอย่างนี้ ย้อนกลับไปในวันที่เมื่อดิสก์ไดรฟ์มีดิสก์อยู่ในนั้นและไดรฟ์หัวแม่มือคือสิ่งที่คุณทำในรถเมื่อล้อเย็นเกินไปที่จะสัมผัสด้วยนิ้วมือของคุณฉันได้รับการสอนว่าคนที่น่ารำคาญพิจารณาฟังก์ชั่น void swap(int *first, int *second)ดูเหมือนมีประโยชน์มาก แต่เราได้รับการสนับสนุนให้เขียนฟังก์ชันที่ส่งคืนผลลัพธ์ ดังนั้นฉันจึงใส่ใจเรื่องความเชื่อและเริ่มติดตามมัน แต่ตอนนี้ฉันเห็นผู้คนกำลังสร้างสถาปัตยกรรมที่วัตถุให้วิธีที่พวกเขาสร้างการควบคุมที่พวกเขาส่งผลลัพธ์ของพวกเขา …

11
Robert C. Martin หมายถึงอะไรโดย SQL นั้นไม่จำเป็น? [ปิด]
ฉันอ่าน / ดูเนื้อหา Robert C. Martin มากมาย ฉันเจอเขาแล้วบอกว่า SQL นั้นไม่จำเป็นเพราะโซลิดสเตตไดรฟ์ เมื่อฉันค้นหาแหล่งข้อมูลอื่น ๆ เพื่อสำรองสิ่งนี้ฉันได้รับบทความสุ่มจำนวนมากที่อธิบายถึงความแตกต่างของประสิทธิภาพการทำงานของ SQL ระหว่างฮาร์ดไดรฟ์และโซลิดสเตทไดรฟ์ (ซึ่งเกี่ยวข้อง แต่ไม่ใช่สิ่งที่ฉันพยายามค้นคว้า) ท้ายที่สุดฉันไม่เข้าใจสิ่งที่เขาพยายามทำ เขากำลังพูดแทนที่ SQL ด้วยเทคโนโลยี No-SQL หรือไม่ เขาบอกว่าเก็บข้อมูลในไฟล์ในระบบไฟล์หรือไม่? หรือเขาต้องการให้คนหยุดใช้ SQL / ฐานข้อมูลเชิงสัมพันธ์เนื่องจากการโจมตีของ SQLi ฉันกลัวว่าฉันพลาดจุดที่เขาพยายามจะทำ ฉันจะให้ลิงก์บางส่วนที่นี่เพื่อให้คุณสามารถอ่านได้โดยตรงจากความคิดของเขา: Bobby Tables การบรรยายสถาปัตยกรรมที่สะอาด อันดับแรกเขาระบุว่าควรลบ SQL ออกจากระบบทั้งหมด การแก้ไขปัญหา. ทางออกเดียว คือการกำจัด SQL ออกจากระบบทั้งหมด หากไม่มีเอ็นจิ้น SQL จะไม่มีการโจมตี SQLi และแม้ว่าเขาจะพูดถึงการแทนที่ SQL ด้วย API …

11
ในฐานะสถาปนิกซอฟต์แวร์ฉันควรจะให้ความสำคัญกับการวิเคราะห์บันทึกและแก้ไขข้อบกพร่องของคนอื่นหรือไม่
ตั้งแต่เรียนจบ (ปลายปี 2548) ฉันทำงานกับ บริษัท เดียวกันกับวิศวกรซอฟต์แวร์ c ++ ปีที่แล้วฉันได้รับการเลื่อนตำแหน่งเป็นสถาปนิกซอฟต์แวร์ แต่ฉันพบว่าตัวเองมีส่วนร่วมมากขึ้นในด้านคุณสมบัติและการแก้ไขข้อบกพร่องการสนับสนุนระดับ 2 50% ของเวลาที่ฉันใช้ใน Notepad ++ วิเคราะห์บันทึกซอฟต์แวร์และพยายามหาสิ่งที่ผิดพลาด 30% การแก้ไขข้อผิดพลาดของผู้อื่นและส่วนที่เหลือ (ถ้ามี) ตรวจสอบสปาเก็ตตี้นักพัฒนา ฉันเริ่มเกลียดผลิตภัณฑ์นี้และคิดถึงกลยุทธ์การออกจาก บริษัท นี้ คุณคิดว่าฉันสามารถทำอะไรในสถานการณ์นี้ คุณสถาปนิกซอฟต์แวร์อื่นยังคงแก้ไขข้อบกพร่องในรหัสหรือไม่

4
ทำไมเนมสเปซมากมายเริ่มต้นด้วย com
ฉันสังเกตเห็นว่า บริษัท จำนวนมากใช้เนมสเปซ "ชื่อโดเมนย้อนกลับ" และฉันอยากรู้ว่าการฝึกฝนนั้นมาจากที่ใดและทำไมมันถึงดำเนินต่อไป มันเป็นเพียงการดำเนินการต่อเนื่องจากการฝึกท่องจำหรือมีแนวคิดสถาปัตยกรรมที่โดดเด่นที่ฉันอาจหายไปที่นี่หรือไม่? นอกจากนี้ยังทราบคำถามเช่น: https://stackoverflow.com/questions/189209/do-you-really-use-your-reverse-domain-for-package-naming-in-javaที่เรียงลำดับคำถามของฉัน แต่ไม่ใช่ 100 % (ถ้ามันทำให้คุณรู้สึกดีขึ้นฉันอยากรู้จริงๆว่าฉันควรจะใช้มันสำหรับความพยายามในการกำหนดชื่อ javascript ของฉัน แต่ฉันอยากรู้มากขึ้นเกี่ยวกับตอนนั้นและทำไมและนั่นคือสิ่งที่จะช่วยแนะนำฉันเกี่ยวกับคำตอบจาวาสคริปต์ คุณ: "หน้าต่าง") ตัวอย่างของการฝึกนี้ขยายไปถึงโฟลเดอร์และไฟล์:

4
บริการแบบดาวน์สตรีมและอัพสตรีมคือวิธีใด
สำหรับระบบที่ประกอบด้วยบริการหลายอย่างที่โทรหากัน (เช่น Front End -> Backend -> Storage) ฉันมักจะได้ยินคนที่ใช้คำศัพท์เช่นบริการ "downstream" หรือ "upstream" ฉันไม่ชัดเจนว่าทิศทางเหล่านี้หมายถึงอะไร กระแสข้อมูลในทั้งสองทิศทาง คำขอไหลจากการที่ผู้ใช้หันหน้าไปทางบริการแบ็กเอนด์มากขึ้น แต่การตอบสนองไหลไปในทิศทางตรงกันข้าม

11
วิธีปฏิบัติที่ดีที่สุดหรือรูปแบบการออกแบบสำหรับการดึงข้อมูลสำหรับการรายงานและแดชบอร์ดในแอปพลิเคชันที่มีโดเมนมากมาย
ก่อนอื่นฉันอยากจะบอกว่านี่เป็นคำถาม / ประเด็นที่ถูกทอดทิ้งดังนั้นหากคำถามนี้ต้องการการปรับปรุงให้ช่วยฉันทำสิ่งนี้ให้เป็นคำถามที่ดีที่จะเป็นประโยชน์ต่อผู้อื่น! ฉันกำลังมองหาคำแนะนำและความช่วยเหลือจากผู้ที่ใช้งานโซลูชันที่แก้ไขปัญหานี้ไม่ใช่แค่แนวคิดที่จะลอง จากประสบการณ์ของฉันมีแอพพลิเคชั่นสองด้าน - ด้าน "งาน" ซึ่งส่วนใหญ่ขับเคลื่อนด้วยโดเมนและเป็นที่ที่ผู้ใช้โต้ตอบอย่างล้นหลามกับโมเดลโดเมน ("เอ็นจิ้น" ของแอปพลิเคชัน) และด้านการรายงาน รับข้อมูลตามสิ่งที่เกิดขึ้นในงาน ในด้านงานเป็นที่ชัดเจนว่าแอปพลิเคชันที่มีรูปแบบโดเมนที่หลากหลายควรมีตรรกะทางธุรกิจในรูปแบบโดเมนและฐานข้อมูลควรใช้เป็นหลักในการคงอยู่เป็นส่วนใหญ่ การแยกข้อกังวลหนังสือทุกเล่มเขียนเกี่ยวกับเรื่องนี้เรารู้ว่าต้องทำอะไรดีเลิศ แล้วด้านรายงานล่ะ คลังข้อมูลยอมรับได้หรือไม่หรือมีการออกแบบที่ไม่ดีเพราะรวมตรรกะทางธุรกิจไว้ในฐานข้อมูลและข้อมูลเอง ในการรวบรวมข้อมูลจากฐานข้อมูลลงในข้อมูลคลังข้อมูลคุณต้องใช้ตรรกะทางธุรกิจและกฎกับข้อมูลและตรรกะและกฎนั้นไม่ได้มาจากรูปแบบโดเมนของคุณมาจากกระบวนการรวบรวมข้อมูลของคุณ มันผิดหรือเปล่า? ฉันทำงานกับแอปพลิเคชันการจัดการทางการเงินและโครงการขนาดใหญ่ซึ่งมีตรรกะทางธุรกิจที่กว้างขวาง เมื่อรายงานข้อมูลนี้ฉันมักจะมีการรวมจำนวนมากที่ต้องทำเพื่อดึงข้อมูลที่จำเป็นสำหรับรายงาน / แดชบอร์ดและการรวมมีตรรกะทางธุรกิจจำนวนมาก เพื่อประสิทธิภาพฉันได้ทำกับตารางรวมที่สูงและขั้นตอนการจัดเก็บ ตัวอย่างเช่นสมมติว่ารายงาน / แดชบอร์ดจำเป็นต้องแสดงรายการของโครงการที่ใช้งานอยู่ (จินตนาการ 10,000 โครงการ) แต่ละโครงการจะต้องมีชุดของตัวชี้วัดที่แสดงพร้อมตัวอย่างเช่น: งบประมาณรวม ความพยายามในวันที่ อัตราการเผาไหม้ วันหมดงบประมาณที่อัตราการเขียนปัจจุบัน เป็นต้น แต่ละรายการเกี่ยวข้องกับตรรกะทางธุรกิจจำนวนมาก และฉันไม่เพียงแค่พูดถึงการคูณตัวเลขหรือตรรกะง่ายๆ ฉันกำลังพูดถึงเพื่อที่จะได้รับงบประมาณคุณต้องใช้แผ่นอัตราที่มี 500 อัตราที่แตกต่างกันหนึ่งรายการสำหรับเวลาพนักงานแต่ละคน (ในบางโครงการโครงการอื่น ๆ มีตัวคูณ) ใช้ค่าใช้จ่ายและมาร์กอัปที่เหมาะสม ฯลฯ ตรรกะนั้นกว้างขวาง การรวบรวมและการปรับแต่งแบบสอบถามใช้เวลามากในการรับข้อมูลนี้ในเวลาที่เหมาะสมสำหรับลูกค้า ควรดำเนินการผ่านโดเมนก่อนหรือไม่ แล้วประสิทธิภาพล่ะ …

3
สถาปัตยกรรมสะอาดของลุงบ๊อบ - คลาสเอนทิตี้ / โมเดลสำหรับแต่ละเลเยอร์
พื้นหลัง : ฉันกำลังพยายามใช้สถาปัตยกรรมที่สะอาดของลุงบ็อบในแอพ Android ของฉัน ฉันศึกษาโครงการโอเพนซอร์ซจำนวนมากที่พยายามแสดงวิธีการที่ถูกต้องและฉันพบว่ามีการนำไปใช้ที่น่าสนใจโดยใช้ RxAndroid สิ่งที่ฉันสังเกตเห็น: ในทุกเลเยอร์ (งานนำเสนอโดเมนและข้อมูล) มีคลาสโมเดลสำหรับเอนทิตีเดียวกัน (พูดถึง UML) นอกจากนี้ยังมีคลาส mapper ที่ดูแลการเปลี่ยนแปลงของวัตถุเมื่อใดก็ตามที่ข้อมูลข้ามเขตแดน (จากชั้นหนึ่งไปอีกชั้นหนึ่ง) คำถาม: มันจำเป็นต้องมีคลาสของโมเดลในทุกเลเยอร์หรือไม่เมื่อฉันรู้ว่าพวกมันทั้งหมดจะจบลงด้วยคุณลักษณะเดียวกันหากจำเป็นต้องใช้การดำเนินการ CRUD ทั้งหมดหรือไม่ หรือว่าเป็นกฎหรือแนวปฏิบัติที่ดีที่สุดเมื่อใช้สถาปัตยกรรมสะอาดหรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.