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

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

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

2
ประโยชน์ของการใช้เซิร์ฟเวอร์ API และ UI แยกต่างหากสำหรับเว็บแอปพลิเคชัน
ที่ทำงานเรามีแอปพลิเคชั่นภายในขนาดใหญ่ซึ่งอยู่ระหว่างการพัฒนามาเกือบ 2 ปีแล้ว ฉันเพิ่งเข้าร่วมโครงการและสถาปัตยกรรมบางอย่างทำให้ฉันงุนงงเล็กน้อยดังนั้นฉันหวังว่าจะมีใครบางคนที่นี่สามารถให้คำแนะนำก่อนที่ฉันจะออกไปถามสถาปนิกกับคำถามเหล่านี้ได้ ) คำขอโทษของฉันถ้าด้านล่างยาวหน่อยฉันแค่อยากจะลองวาดภาพที่ดีว่าระบบคืออะไรก่อนที่ฉันจะถามคำถาม :) วิธีการติดตั้งระบบคือเรามีเว็บแอปพลิเคชั่นหลักหนึ่งตัว (asp.net, AngularJS) ซึ่งส่วนใหญ่จะรวบรวมข้อมูลจากบริการอื่น ๆ ดังนั้นโดยทั่วไปมันเป็นโฮสต์สำหรับแอปพลิเคชัน AngularJS มีตัวควบคุม MVC หนึ่งตัวที่บูตด้านไคลเอนต์จากนั้นตัวควบคุมอื่น ๆ คือตัวควบคุม WebAPI การโทรจากฝั่งไคลเอ็นต์นั้นควบคุมโดยตัวควบคุมเหล่านี้ซึ่งจะปรับใช้กับกล่องที่ไม่ทำอะไรเลยนอกจากโฮสต์เว็บแอปพลิเคชัน ขณะนี้เรามี 4 กล่องดังกล่าว อย่างไรก็ตามการโทรนั้นจะถูกส่งไปยังแอปพลิเคชั่น WebAPI อีกชุดหนึ่งในท้ายที่สุด (โดยทั่วไปจะเป็นการต่อพื้นที่ธุรกิจเช่นความปลอดภัยข้อมูลลูกค้าข้อมูลผลิตภัณฑ์ ฯลฯ ) WebAPIs เหล่านี้ทั้งหมดได้รับการปรับใช้ร่วมกันกับกล่องเฉพาะเช่นกัน เรายังมี 4 กล่องเหล่านี้ ด้วยข้อยกเว้นเดียว WebAPIs เหล่านี้จะไม่ถูกใช้โดยส่วนอื่น ๆ ขององค์กรของเรา ในที่สุด WebAPIs เหล่านี้ก็ยังเรียกใช้บริการ "back end" อีกชุดซึ่งโดยทั่วไปจะเป็นบริการ asmx หรือ wcf แบบดั้งเดิมที่ตบอยู่ด้านบนของระบบ …

4
สถาปัตยกรรมข้อมูลสำหรับการวัดบันทึกเหตุการณ์?
บริการของฉันมีกิจกรรมของผู้ใช้จำนวนมากอย่างต่อเนื่องและเราต้องการทำสิ่งต่าง ๆ เช่น "การนับเหตุการณ์ประเภทTตั้งแต่วันที่D " เรากำลังพยายามตัดสินใจขั้นพื้นฐานสองประการ: จะเก็บอะไรดี? การจัดเก็บทุกเหตุการณ์เทียบกับการจัดเก็บมวลรวมเท่านั้น (สไตล์บันทึกเหตุการณ์) บันทึกทุกเหตุการณ์และนับในภายหลังกับ (สไตล์อนุกรมเวลา) จัดเก็บ "การนับเหตุการณ์อีสำหรับวันที่D " ที่รวบรวมไว้ทุกวัน จะเก็บข้อมูลที่ไหน ในฐานข้อมูลเชิงสัมพันธ์ (โดยเฉพาะ MySQL) ในฐานข้อมูลที่ไม่ใช่เชิงสัมพันธ์ (NoSQL) ในไฟล์บันทึกการทำงานแบบแบน (รวบรวมจากส่วนกลางผ่านเครือข่ายผ่านทางsyslog-ng) มาตรฐานการปฏิบัติคืออะไรที่ฉันสามารถอ่านเพิ่มเติมเกี่ยวกับการเปรียบเทียบระบบประเภทต่าง ๆ ได้ รายละเอียดเพิ่มเติม: สตรีมเหตุการณ์ทั้งหมดมีขนาดใหญ่อาจมีหลายแสนรายการต่อวัน แต่ความต้องการในปัจจุบันของเราเพียงเพื่อนับเหตุการณ์บางประเภทที่อยู่ภายใน เราไม่จำเป็นต้องเข้าถึงข้อมูลดิบหรือผลการรวบรวมแบบเรียลไทม์ IMHO "บันทึกเหตุการณ์ทั้งหมดไปยังไฟล์รวบรวมข้อมูลในภายหลังเพื่อกรองและรวมสตรีม" เป็นวิธีมาตรฐาน UNIX ที่สวยงาม แต่เพื่อนร่วมทาง Rails-y ของฉันดูเหมือนจะคิดว่าไม่มีอะไรจริงเว้นแต่ว่ามันจะอยู่ใน MySQL

2
คำสั่งที่ควรละเอียดในรูปแบบของ CQ [R] S เป็นอย่างไร
ฉันกำลังพิจารณาโครงการเพื่อเป็นส่วนหนึ่งของ SOA โยกย้ายตาม WCF ของเรามากกว่าที่จะเป็นรูปแบบรถบัสบริการ (อาจ nServiceBus) และการใช้บางขั้นพื้นฐานผับย่อยเพื่อให้บรรลุการแยกคำสั่ง Query ฉันไม่ใช่คนใหม่สำหรับ SOA หรือแม้แต่กับโมเดลบัสเซอร์วิส แต่ฉันยอมรับว่าจนกระทั่งเมื่อเร็ว ๆ นี้แนวคิดเรื่อง "การแยก" ของฉันนั้น จำกัด อยู่ที่การสะท้อนและการจำลองฐานข้อมูล แต่ถึงกระนั้นฉันก็ยังดึงดูดความคิดเพราะมันดูเหมือนจะให้ประโยชน์ทั้งหมดของระบบที่สอดคล้องกันในที่สุดในขณะที่หลีกเลี่ยงข้อเสียที่เห็นได้ชัดหลายประการ (โดยเฉพาะอย่างยิ่งการขาดการสนับสนุนการทำธุรกรรมที่เหมาะสม) ฉันได้อ่านเรื่องราวมากมายจากอุดีดาฮันซึ่งโดยทั่วไปเป็นปรมาจารย์ในสถาปัตยกรรม ESB (อย่างน้อยในโลก Microsoft) แต่สิ่งหนึ่งที่เขาบอกว่าทำให้ฉันปริศนา: เมื่อเรามีเอนทิตีที่ใหญ่ขึ้นและมีฟิลด์มากขึ้นเราก็มีนักแสดงมากขึ้นที่ทำงานกับเอนทิตี้เดียวกันเหล่านั้นและยิ่งมีโอกาสมากขึ้นที่บางสิ่งจะสัมผัสคุณลักษณะบางอย่างของพวกเขาในเวลาใดก็ตาม [ ... ] องค์ประกอบหลักของ CQRS กำลังคิดทบทวนการออกแบบส่วนต่อประสานกับผู้ใช้เพื่อให้เราสามารถจับภาพความตั้งใจของผู้ใช้ของเราได้ว่าการทำให้ลูกค้าเป็นที่ต้องการนั้นเป็นหน่วยงานที่แตกต่างกันสำหรับผู้ใช้มากกว่าการบ่งชี้ว่าลูกค้าย้ายไปแล้ว แต่งงาน การใช้ UI ที่มีลักษณะคล้าย Excel สำหรับการเปลี่ยนแปลงข้อมูลไม่ได้หมายถึงเจตนาตามที่เราเห็นด้านบน - Udi Dahan ชี้แจง CQRS จากมุมมองที่อธิบายไว้ในใบเสนอราคาเป็นการยากที่จะโต้แย้งกับตรรกะนั้น แต่ดูเหมือนว่าจะขัดแย้งกับธัญพืชด้วยความเคารพต่อ SOA SOA (และการบริการทั่วไปโดยทั่วไป) ควรจัดการกับข้อความหยาบๆ …

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

1
ฉันควรแยกการทดสอบหน่วยและการทดสอบการรวมเข้าด้วยกันหรือไม่
ฉันต้องเขียนการทดสอบหน่วยและการทดสอบการรวมสำหรับโครงการ ควรทำการทดสอบทั้งหมดในโฟลเดอร์การทดสอบเดียวหรือไม่? หรือการทดสอบหน่วยและการทดสอบการรวมเข้าด้วยกันควรอยู่ในโฟลเดอร์การทดสอบแยกกันหรือไม่? ฉันควรหรือแม้กระทั่งใส่ไว้ในโครงการแยก ? หากฉันรวมมันเข้าด้วยกันมีข้อดีหรือข้อเสียของวิธีการนี้หรือไม่?

2
บริบทและโดเมนที่ถูก จำกัด DDD?
ฉันทำงานในแอปพลิเคชั่นที่ค่อนข้างซับซ้อนด้วยตารางฐานข้อมูล 10 รายการ (Aggregates, Entities / Object Objects) และการใช้ DDD ณ จุดนี้ดูเหมือนว่าโดยทั่วไปแล้ว DDD-Lite หมายถึงมี Application / Domain Services, Domain Model (เอนทิตี, Object Value) และ Repositories ฉันหยิบหนังสือนำ DDD มาใช้และสิ่งแรกที่เขาพูดถึงคือ DDD-Lite และบริบทที่ถูกผูกไว้และเหตุการณ์โดเมนที่หายไปเป็นข้อผิดพลาดแรกซึ่งเป็นเรื่องปกติเมื่อเริ่มต้น DDD ขณะนี้ฉันพยายามจัดรูปแบบโดเมนโดยความสัมพันธ์แบบรวมและใช้เนมสเปซเพื่อสาธิต ฉันไม่เห็นประโยชน์ / ข้อผิดพลาดที่เกี่ยวข้องกับการแยกโครงการ Domain Model ออกเป็นบริบทที่ถูกผูกมัด (ยัง) บางทีมันอาจจะชัดเจนในภายหลัง แต่ฉันต้องการความคิดเห็นเกี่ยวกับชีวิตจริงในบริบทที่ถูกผูกไว้ (และอาจเป็นโดเมนย่อยเป็นต้นหากพวกเขาเชื่อมโยงเข้ากับมัน)

11
ทำไมคลาสทั้งหมดใน. NET ที่สืบทอดจากคลาส Object?
มันน่าสนใจมากสำหรับฉันซึ่งข้อดีให้แนวทาง "คลาสรูทระดับโลก" สำหรับกรอบงาน กล่าวง่ายๆว่าเหตุผลอะไรที่ทำให้. NET Framework ได้รับการออกแบบให้มีคลาสรูทหนึ่งอ็อบเจ็กต์พร้อมฟังก์ชันการทำงานทั่วไปที่เหมาะสมสำหรับคลาสทั้งหมด ทุกวันนี้เรากำลังออกแบบเฟรมเวิร์กใหม่สำหรับการใช้งานภายใน (กรอบภายใต้แพลตฟอร์ม SAP) และเราทั้งหมดแบ่งออกเป็นสองค่าย - อันดับแรกผู้ที่คิดว่ากรอบควรมีรูทส่วนกลางและที่สอง - ที่คิดตรงกันข้าม ฉันอยู่ที่ค่าย "global root" และเหตุผลของฉันสิ่งที่วิธีการดังกล่าวจะให้ความยืดหยุ่นที่ดีและลดต้นทุนการพัฒนาทำให้เราจะไม่พัฒนาฟังก์ชั่นทั่วไปอีกต่อไป ดังนั้นฉันสนใจมากที่จะรู้ว่าอะไรคือสาเหตุที่ผลักดันสถาปนิก. NET ให้ออกแบบเฟรมเวิร์กด้วยวิธีดังกล่าว

10
ฉันจะได้รับเงินเพื่อลดหนี้ทางเทคนิคได้อย่างไร
ฉันกำลังทำงานให้กับ บริษัท ขนาดเล็กที่มีผลิตภัณฑ์ที่ซับซ้อนทางเทคนิคเล็กน้อย ฉันเป็นนักพัฒนาเพียงคนเดียวและหนึ่งในนั้น ประมาณหนึ่งปีที่ผ่านมาฉันได้รับผลิตภัณฑ์รุ่นเก่าและเริ่ม "สนับสนุน" ผลิตภัณฑ์ ลูกค้าพูดถึงคุณลักษณะใหม่มูลค่าทางธุรกิจและอื่น ๆ เท่านั้น ปัญหาคือแม้ว่ารหัสอยู่ใน C # มันค่อนข้างขั้นตอน ไม่มี abstractions จะใช้คลาสที่ Visual Studio ต้องการเท่านั้น - ฟอร์มเป็นต้น การใช้งานของคลาสเหล่านี้แย่จริงๆและรหัสยากที่จะรักษา ตลอดทั้งปีนี้ฉันใช้เวลาของตัวเองในการปรับโครงสร้าง ในเวอร์ชั่นล่าสุดมี abstractions ที่น่ารักและเป็นเช่นนั้น ฉันต้องนำส่วนประกอบมาใช้ใหม่ตั้งแต่เริ่มต้นและฉันรู้สึกว่าการเพิ่มคุณสมบัติใหม่หรือเปลี่ยนพฤติกรรมให้กับองค์ประกอบเหล่านี้นั้นง่ายกว่ามากสำหรับคนอื่น ๆ ปัญหาคือฉันใช้เวลาของตัวเอง ฉันชอบผลลัพธ์มาก แต่ฉันไม่ชอบทำงาน 12 ชั่วโมงต่อวัน คุณเคยอยู่ในสถานการณ์ที่คล้ายคลึงกันไหม? ฉันควรลองทำอะไร ฉันได้ลองคุยกันแล้ว แต่ก็ยังไม่ประสบความสำเร็จ ฉันแค่กลัวเมื่อเราตัดสินใจใช้คุณลักษณะใหม่ที่ต้องมีการเปลี่ยนแปลงรหัสเดิมมากมาย นั่นอาจทำให้ลูกค้าตกใจ: ทำไมคุณต้องใช้เวลา 8 ชั่วโมงในการเปลี่ยนไอคอนเหล่านี้ ลูกค้าไม่สนใจว่ามี 500 ตำแหน่งในรหัสที่ฉันต้องการเปลี่ยน และฉันควรจะหาสถานที่ทั้ง 500 แห่งนี้ก่อน ความคิดใด …

9
ฉันจะบอกได้อย่างไรว่าซอฟต์แวร์นั้นมีการทำงานร่วมกันสูง
ฉันคุ้นเคยกับคำว่า "เป็นอย่างยิ่งคู่" แต่ฉันอยากรู้ว่ามีสัญญาณ (รหัสกลิ่น) ที่สามารถระบุได้ว่าเป็นรหัสคู่ ปัจจุบันฉันทำงานกับ Java EE แต่สิ่งนี้สามารถใช้กับภาษาใดก็ได้ แก้ไข: ในกรณีที่ใครสนใจบทความนี้ฟังดูมีประโยชน์: ในการค้นหาคุณภาพของรหัส: ระวังคู่ที่แน่นหนา! (IBM)

4
อยู่ OO และทดสอบได้ในขณะที่ทำงานกับฐานข้อมูล
อะไรคือกลยุทธ์ของ OOP สำหรับการทำงานกับฐานข้อมูล แต่ทำให้สิ่งต่าง ๆ ที่หน่วยทดสอบได้? ว่าฉันมีคลาสผู้ใช้และสภาพแวดล้อมการผลิตของฉันทำงานกับ MySQL ฉันเห็นแนวทางที่เป็นไปได้สองสามข้อแสดงที่นี่โดยใช้ PHP: ส่งผ่าน $ data_source พร้อมอินเทอร์เฟซสำหรับload()และsave()เป็นนามธรรมแหล่งข้อมูลเบื้องหลัง เมื่อทำการทดสอบให้ส่งผ่านแหล่งข้อมูลอื่น $ user = ผู้ใช้ใหม่ ($ mysql_data_source); $ user-> load ('bob'); $ user-> setNickname ('Robby'); $ ที่ผู้ใช้> บันทึก (); ใช้โรงงานที่เข้าถึงฐานข้อมูลและส่งผ่านแถวผลลัพธ์ไปยังตัวสร้างของผู้ใช้ เมื่อทำการทดสอบให้สร้างพารามิเตอร์ $ row หรือจำลองวัตถุใน UserFactory :: $ data_source ด้วยตนเอง (ฉันจะบันทึกการเปลี่ยนแปลงในระเบียนได้อย่างไร) class UserFactory { static $data_source; public …

2
อะไรทำให้ผลิตภัณฑ์ซอฟต์แวร์ที่มีขนาดใหญ่และซับซ้อนช้า [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ด้วยเหตุผลที่ไม่เกี่ยวข้องส่วนใหญ่ฉันติดตั้ง Delphi 7 อีกครั้งในเวลานาน ฉันต้องบอกว่าฉันปลิวไปหมดแล้ว - ในแบบที่ฉันไม่เคยทำมานานแล้ว นี่ไม่ใช่วิธีที่ฉันจำสิ่งต่าง ๆ ได้เลย การติดตั้งใช้เวลาประมาณ 30 วินาที การเปิดตัวใช้เวลา 2 วินาทีและสามารถใช้งานได้ทันที ฉันสามารถกด "เรียกใช้" ครั้งที่สองหลังจากที่เริ่มต้นและน้อยกว่าหนึ่งวินาทีหลังจากนั้นโปรแกรมว่างจะปรากฏขึ้นและทำงานอยู่ Hurray สำหรับคอมพิวเตอร์เริ่มเร็วขึ้นมาก! แต่เหตุผลที่ฉันถูกปลิวไปอย่างนี้ก็เพราะว่าฉันมักจะใช้ Visual Studio 2010 ซึ่งก็ไม่ทำให้รู้สึกแย่แบบนี้เลย จริงอยู่ที่ Delphi 7 เป็นระบบที่เล็กกว่า Visual Studio 2010 มาก แต่มันมีลักษณะของการมีสิ่งที่จำเป็นจริงๆที่นั่น: palette control, design form, ตัวแก้ไขโค้ดพร้อมโค้ดที่สมบูรณ์ ฉันรู้ว่าภาษาอาจจะง่ายกว่าและการทำให้โค้ดสมบูรณ์อาจมีประสิทธิภาพน้อยกว่าและ IDE อาจจะไม่สามารถขยายได้และมีคุณสมบัติที่หลากหลาย …

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

3
แอปพลิเคชันผู้เช่าหลายคนคืออะไร
ตามคำจำกัดความที่มีออนไลน์คือ " Multi-tenancy เป็นสถาปัตยกรรมที่อินสแตนซ์เดียวของแอปพลิเคชันซอฟต์แวร์ให้บริการลูกค้าหลายราย " หมายถึงฉันมีเว็บไซต์ร้านอาหารหรือโรงเรียนและฉันให้การเข้าถึงร้านอาหารหรือโรงเรียนต่าง ๆ เพื่อใช้แอปพลิเคชันของฉันกับข้อมูลของตัวเองโดยใช้ข้อมูลประจำตัวของพวกเขาที่ฉันให้เมื่อพวกเขาซื้อผลิตภัณฑ์การจัดการโรงเรียน เช่นเดียวกับเว็บไซต์ของฉันเหมือนschoolmanagement.comและฉันมอบโดเมนย่อยที่แตกต่างให้กับลูกค้าโรงเรียนต่าง ๆ เช่นschool1.schoolmanagement.com & school2.schoolmanagement.comแต่รหัสนั้นเหมือนกันทั้งสองโดเมนย่อยเหล่านี้ โรงเรียนทั้งสองแห่งมีฟังก์ชั่นหรือธีมที่แตกต่างกันขึ้นอยู่กับฐานข้อมูลแยก ดังนั้นฉันต้องให้schoolmanagement.comเพื่อเข้าสู่ระบบและเมื่อเข้าสู่ระบบของลูกค้าของพวกเขาขึ้นอยู่กับการเข้าสู่ระบบการรับรองฉันเปลี่ยนเส้นทางไปยัง URL ของตนเช่นschool1.schoolmanagement.com นี่คือความเข้าใจของฉันเกี่ยวกับแอปพลิเคชันผู้เช่าหลายคน ความเข้าใจของฉันถูกต้องหรือไม่ มีแอปพลิเคชั่นหลายผู้เช่าออนไลน์ที่ฉันสามารถผ่านได้

6
Microservices อัตโนมัติคิวเหตุการณ์และการค้นหาบริการ
ฉันได้อ่านเกี่ยวกับบริการไมโครเมื่อไม่นานมานี้และนี่คือข้อสรุปบางอย่างที่ฉันได้รับ (โปรดแก้ไขฉันหากฉันผิดที่จุดใด) สถาปัตยกรรมบริการไมโครเป็นไปด้วยดีกับการออกแบบที่ขับเคลื่อนด้วยโดเมน โดยทั่วไปแล้วหนึ่ง MS หมายถึงบริบทที่มีขอบเขตหนึ่ง ถ้า micro-service Aต้องการฟังก์ชันที่อยู่ใน micro-service BโมเดลของฉันอาจผิดและAและB ควรเป็น micro-service / BC หนึ่งอัน การสื่อสารแบบซิงโครนัสระหว่างบริการไมโคร (คำขอ HTTP โดยตรง) ไม่ดีทำให้ขัดต่อวัตถุประสงค์ของบริการไมโครและแนะนำการมีเพศสัมพันธ์ระหว่างส่วนประกอบ การสื่อสารแบบอะซิงโครนัสระหว่างบริการเป็นที่ต้องการ บริการควรเผยแพร่กิจกรรมไปยังคิวข้อความเพื่อให้บริการอื่น ๆ สามารถสมัครและประมวลผลส่วนหนึ่งของเหตุการณ์หรือใช้เพื่อทำซ้ำส่วนของข้อมูลที่จำเป็นสำหรับบริบทของพวกเขา วิธีนี้บริการสามารถดำเนินการตามคำขอแม้บริการอื่น ๆ จะหยุดทำงานซึ่งไม่ได้เกิดขึ้นในการสื่อสารแบบซิงโครนัส ถ้า micro-service Aเผยแพร่เหตุการณ์, micro-service Bสมัครสมาชิกกับเหตุการณ์นั้นและสร้างเหตุการณ์ใหม่เป็นผลลัพธ์, micro-service Aไม่ควรเป็นการประมวลผลเหตุการณ์ที่สร้างขึ้นใหม่, ซึ่งจะเป็นการอ้างอิงแบบวงกลม ในกรณีนี้เราควรแนะนำบริการไมโครที่สามหรือรวมAและBเข้ากับบริการไมโครAB บริการไมโครเป็นจริงคำที่ทำให้เข้าใจผิด เราควรพยายามเพื่อบริบทขนาดเล็ก แต่ไม่จำเป็นต้องเป็นกรณี คำไม่ควรเป็น "บริการไมโคร" แต่ " ใหญ่พอที่จะทำงานบริการ " บริการไมโครช่วยให้เราสามารถแนะนำฟังก์ชั่นใหม่ได้อย่างง่ายดายและไม่ต้องกลัวว่าเราจะทำลายทั้งระบบ มันสามารถทำได้โดยการแนะนำบริการใหม่หรือ refactoring หนึ่งในที่มีอยู่ …

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