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

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

3
วิธีที่ดีที่สุดในการทำ failover ออฟไลน์ของไคลเอ็นต์ที่ใช้เดสก์ท็อปที่ใช้บริการเว็บคืออะไร
ฉันมีสามโครงการที่เข้ามาซึ่งมีปัญหาร่วมกัน: พวกเขาจำเป็นต้องมีเหตุผลในระบบเว็บและพวกเขาต้องการแอปพลิเคชันท้องถิ่น (เช่นจุดขาย) ที่สื่อสารกับระบบดังกล่าวผ่านบริการเว็บสงบ โซลูชันของฉัน ผมแก้ปัญหาการจัดการที่จะเกิดขึ้นกับการที่จะใช้ในโปรแกรมคอมพิวเตอร์เข้าคิวข้อความที่จะดำเนินการจัดเก็บในขณะที่การบริการที่เป็นแบบออฟไลน์อย่างแม่นยำมากขึ้นการจัดคิวข้อความไม่ตรงกัน อย่างไรก็ตามนั่นเป็นส่วนที่ง่าย (หากเป็นวิธีที่ดีที่สุด) ฉันยังเกี่ยวข้องกับการซิงค์ข้อมูลและการแก้ไขข้อขัดแย้ง ระบบหลักต้องใช้เว็บเนื่องจากแอปพลิเคชันเว็บเป็นสิ่งจำเป็นสำหรับรายงานและการตรวจสอบโดยผู้มีส่วนได้ส่วนเสียและบริการเว็บจะจัดการคำขอสำหรับสถานประกอบการหลายแห่ง เดสก์ท็อปไคลเอ็นต์ (บางกว่า) จะถูกนำไปใช้กับ Java (โดยเฉพาะ Netbeans) และระบบเว็บที่มี Symfony2 โครงการสองโครงการต้องการการรวมฮาร์ดแวร์สำหรับลูกค้าดังนั้นการสร้างแอปพลิเคชันเดสก์ท็อปด้วยเทคโนโลยีเว็บ (เช่น Appcelerator Titanium) อาจเป็นปัญหาใหญ่ คำถามของฉัน อะไรคือโซลูชันที่ดีกว่าที่ปรับขนาดซึ่งหมายถึงประสิทธิภาพสูงสุดด้วยความพยายามขั้นต่ำ (และไม่มีค่าใช้จ่ายเพิ่มเติมเช่นการซื้อเซิร์ฟเวอร์สำรองสำหรับการใช้งานในพื้นที่) มีใครบ้างที่จัดการเรื่องนี้มาก่อน คุณแก้ปัญหาอย่างไร คุณสามารถแบ่งปันบทเรียนอะไรได้บ้าง คุณจัดการกับการซิงโครไนซ์อย่างไร? แก้ไข: เพิ่มส่วนที่ขาดหายไปในคำถามของฉันในจุด # 3

2
คุณจะทำให้คลัสเตอร์ทำงานเพียงครั้งเดียวได้อย่างไร
หากคุณมีงานที่คุณต้องการเรียกใช้เพียงครั้งเดียวในคลัสเตอร์ของเซิร์ฟเวอร์ในช่วงเวลาปกติสิ่งที่จะเป็นวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้ นิยามของคลัสเตอร์ในกรณีนี้คือเซิร์ฟเวอร์ที่เหมือนกัน 2 ตัวขึ้นไปที่มีเซสชันแบบกระจายซึ่งนั่งอยู่ด้านหลังตัวโหลดบาลานซ์ ใช้กรณี:คุณมีงานที่มีราคาแพงในการทำงานที่ควรรันเพียงครั้งเดียวต่อหนึ่งชั่วโมง X งานนี้สามารถทำซ้ำได้หลายระเบียนและอัพเดทสถานะของพวกเขา สถานการณ์กรณีที่เลวร้ายที่สุดคือการให้งานรันสองครั้งทำให้ข้อมูลของคุณไม่ถูกต้อง สถานการณ์กรณีที่ดีที่สุดคืองานใช้ทรัพยากรในเซิร์ฟเวอร์ของคุณทั้งหมด สรุปความต้องการ: งานจะต้องยังคงทำงานแม้ว่าหนึ่งในโหนดจะไม่ทำงาน งานต้องถูกเรียกใช้หนึ่งครั้งต่อหนึ่งตารางเวลาเท่านั้น หากมีการกำหนดเวลางานหลายงานในเวลาเดียวกันหรือในเวลาที่ทับซ้อนกันจำนวนงานที่รันจะถูกกระจายระหว่างเซิร์ฟเวอร์อย่างเท่าเทียมกัน เครื่องจะต้องมีรหัสฐานเดียวกันและจะทำข้อมูลให้ตรงกันผ่าน NTP การกำหนดค่าอาจแตกต่างกันระหว่างโหนดและโหนดโดยตัวแปรสภาพแวดล้อม งานต้องเริ่มตรงเวลาหรือภายในช่วงเวลาที่กำหนดของเวลาที่กำหนด (เช่นพูด 5 นาที) การแก้ปัญหาที่เป็นไปได้ ตั้งค่าหนึ่งโหนดเป็นโหนดหลักซึ่งจะไม่ทำงานเนื่องจากมีการละเมิด 1 ด้านบน สร้างคำร้องขอให้ load balancer สร้างยอดคงเหลือเพื่อเริ่มต้นงาน น่าเสียดายที่นี่มีผลข้างเคียงที่ถ้าคุณมีงานหลายงานที่ทำงานในเวลาเดียวกันพวกเขาทั้งหมดอาจถูกเรียกใช้โดยเครื่องเดียวกัน สิ่งนี้จะต้องทำงานใน Java ในภาชนะ servlet อย่างไรก็ตามมันไม่ได้เข้ารหัสงานที่ฉันกำลังมองหา แน่นอนว่านี่เป็นปัญหาที่แก้ไขแล้วด้วยทางออกที่ดีที่สุดที่รู้จัก คำถามที่เกี่ยวข้อง /programming/5949038/schedule-job-executes-twice-on-cluster สิ่งนี้ไม่ซ้ำกันเนื่องจากโซลูชันไม่เพียงพอตามข้อกำหนด 5 ข้อที่ระบุด้านบน วิธีแก้ปัญหาที่ upvote มากที่สุดนั้นเกิดจากปัญหาการแข่งขันและวิธีที่สองนั้นเป็นการละเมิดข้อกำหนด 3

4
รูปแบบ“ ศูนย์การแจ้งเตือน” ส่งเสริมการออกแบบโปรแกรมที่ดีหรือไม่ดีหรือไม่?
บางครั้งฉันเจอ API สไตล์ฮับข้อความเช่น Cocoa NSNotificationCenter: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html โดยปกติแล้ว API เหล่านี้จะให้จุดเชื่อมต่อส่วนกลางที่คุณสมัครหรือเผยแพร่ข้อความ / กิจกรรม ฉันคิดว่านี่เป็นปัญหาเพราะมันสนับสนุนสถาปัตยกรรมโปรแกรมแบบแบนและไม่มีโครงสร้างซึ่งการพึ่งพาไม่ชัดเจนใน API แต่ซ่อนอยู่ในซอร์สโค้ด คุณไม่ได้ถูกบังคับให้คิดเกี่ยวกับการเป็นเจ้าของวัตถุและลำดับชั้น แต่สามารถทำให้วัตถุใด ๆ ในโปรแกรมของคุณส่งผลให้มีรหัสใด ๆ ที่ถูกเรียก แต่นี่อาจเป็นสิ่งที่ดี? โดยทั่วไปแล้วรูปแบบนี้ส่งเสริมการออกแบบโปรแกรมที่ดีหรือไม่ดีและทำไมถึงเป็นเช่นนั้น มันทำให้รหัสยากขึ้นหรือง่ายขึ้นในการทดสอบ? ยกโทษให้ฉันถ้าคำถามนี้คลุมเครือหรือกว้างเกินไป ฉันพยายามคาดไม่ถึงผลที่ตามมาจากการใช้ API อย่างกว้างขวางและวิธีต่างๆที่คุณสามารถใช้ได้ แก้ไข: ฉันเดาว่าปัญหาที่ใหญ่ที่สุดของฉันในรูปแบบนี้คือ API "โกหก" เกี่ยวกับการพึ่งพาและข้อต่อวัตถุและสามารถแสดงด้วยตัวอย่างนี้: myObj = new Foo(); myOtherObj = new Bar(); print myOtherObj.someValue; // prints 0 myObj.doSomething(); print myOtherObj.someValue; // prints …

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

2
สถาปัตยกรรมที่สะอาด: โมเดลการดูคืออะไร
ในหนังสือของเขาที่ชื่อว่า 'Clean Architecture' ลุงบ๊อบบอกว่าผู้นำเสนอควรใส่ข้อมูลที่ได้รับมาในสิ่งที่เขาเรียกว่า 'ดูแบบจำลอง' นี่เป็นสิ่งเดียวกันกับ 'ViewModel' จากรูปแบบการออกแบบ Model-View-ViewModel (MVVM) หรือเป็น Data Transfer Object (DTO) แบบง่ายหรือไม่? ถ้าไม่ใช่ DTO แบบง่ายมันเกี่ยวข้องกับมุมมองอย่างไร มุมมองได้รับการปรับปรุงจากความสัมพันธ์ผ่านผู้สังเกตการณ์หรือไม่ ฉันเดาว่ามันเป็นเหมือน ViewModel จาก MVVM เพราะในบทที่ 23 ของหนังสือของเขา Robert Martin กล่าวว่า: [งานของผู้นำเสนอ] คือการยอมรับข้อมูลจากแอปพลิเคชันและจัดรูปแบบสำหรับงานนำเสนอเพื่อให้มุมมองสามารถย้ายไปที่หน้าจอได้ ตัวอย่างเช่นหากแอปพลิเคชันต้องการวันที่แสดงในเขตข้อมูลมันจะมอบวัตถุวันที่นำเสนอ ผู้นำเสนอจะจัดรูปแบบข้อมูลนั้นลงในสตริงที่เหมาะสมและวางไว้ในโครงสร้างข้อมูลอย่างง่ายที่เรียกว่ารุ่นมุมมองซึ่งมุมมองสามารถค้นหาได้ นี่ก็หมายความว่ามุมมองนั้นเชื่อมต่อกับ ViewModel แทนการรับฟังก์ชั่นอาร์กิวเมนต์เป็นตัวอย่าง อีกเหตุผลหนึ่งที่ฉันคิดว่านี่เป็นเพราะถ้าคุณดูที่ภาพผู้นำเสนอใช้โมเดลมุมมอง แต่ไม่ใช่มุมมอง ในขณะที่ผู้นำเสนอใช้ทั้งขอบเขตการส่งออกและข้อมูลการส่งออก DTO หากไม่ใช่ DTO หรือ ViewModel จาก MVVM โปรดอธิบายอย่างละเอียดว่ามันคืออะไร

4
มีข้อได้เปรียบในการเข้ารหัสค่าข้อมูลในโปรแกรมหรือไม่?
ฉันเป็น coder สามเณร - ish ที่เรียนรู้ด้วยตนเองดังนั้นฉันต้องขออภัยถ้าฉันไม่ตอกโปรแกรมภาษา ฉันกำลังทำงานในโครงการที่ฉันให้ข้อมูลซึ่งจะได้รับการปรับปรุงอย่างต่อเนื่องสำหรับนักพัฒนาที่จะสร้างเครื่องมือเพื่อสร้างรายงานจากแบบสอบถามบนข้อมูล ดูเหมือนว่าทุกคนที่เกี่ยวข้องคิดว่าพวกเขาต้องการค่าข้อมูลรหัสฮาร์ดโค้ด (ไม่ใช่สกีมา แต่เป็นโดเมน / ค่าตัวเอง) ในโปรแกรมสร้างรายงาน ตัวอย่างเช่นสมมติว่าเรากำลังรายงานเกี่ยวกับบุคลากร รายงานจะถูกแบ่งออกเป็นหมวดหมู่โดยมีหัวข้อสำหรับแต่ละแผนกและจากนั้นภายใต้หัวข้อแต่ละแผนกจะเป็นหัวเรื่องย่อยของตำแหน่งงานและจากนั้นหัวข้อย่อยแต่ละหัวข้อจะเป็นรายการของพนักงาน นักพัฒนาต้องการเขียนโค้ดของแผนกและตำแหน่งงานอย่างหนัก ในทางกลับกันฉันคิดว่าพวกเขาสามารถ / จะค้นหาสิ่งเหล่านั้นที่รันไทม์เรียงลำดับระเบียนโดยพวกเขาและสร้างส่วนหัวรายงานแบบไดนามิกโดยยึดตามค่าที่มี เนื่องจากรายการของค่าที่อาจเกิดขึ้นจะมีการเปลี่ยนแปลงเมื่อเวลาผ่านไป (เช่นแผนกจะถูกสร้าง / เปลี่ยนชื่อตำแหน่งงานใหม่จะถูกเพิ่ม) รหัสจะต้องมีการปรับปรุงอย่างต่อเนื่อง สำหรับฉันดูเหมือนว่าเราสามารถข้ามขั้นตอนการบำรุงรักษารหัสและจัดระเบียบรายงานแบบไดนามิก เนื่องจากฉันไม่ใช่นักพัฒนาฉันจึงสงสัยว่าฉันทำอะไรหายไป มีข้อได้เปรียบอะไรบ้างในการเข้ารหัสค่าลงในเครื่องมือเช่นนี้ นี่เป็นวิธีการออกแบบโปรแกรมหรือไม่?

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

2
จะทราบได้อย่างไรว่าต้องทำอะไรในการออกแบบเชิงวัตถุ
ข้อสงวนสิทธิ์แรก: ฉันไม่รู้จริงๆว่าคำถามนี้เหมาะกับเว็บไซต์นี้หรือไม่ แต่ฉันก็ยังพบว่าเป็นคำถามที่เกี่ยวข้องไม่ใช่เฉพาะกับฉัน แต่สำหรับคนอื่น ๆ ที่เป็นผู้เริ่มต้น หากคำถามสามารถปรับปรุงให้เหมาะกับที่นี่โปรดชี้ให้เห็นความคิดเห็น int หากมันไม่พอดีโปรดแจ้งให้ฉันทราบด้วยและหากเป็นไปได้โปรดแจ้งให้เราทราบว่าสามารถพูดคุยเรื่องนี้ได้ที่ไหนเพราะฉันไม่พบฟอรัมที่ดีสำหรับเรื่องนี้ ฉันเรียนรู้ที่จะเขียนโปรแกรมในปี 2009 เมื่อฉันเรียน PHP ต่อมาในปี 2012 ฉันย้ายไปที่ C # และ. NET อย่างไรก็ตามการเขียนโค้ดไม่ใช่ปัญหาการจดอัลกอริธึมไม่ใช่ปัญหาของฉัน ปัญหาที่เกิดขึ้นจริงของฉันคือการรู้ว่าสิ่งที่จะต้องมีการเข้ารหัสเพื่อให้บรรลุความต้องการและการที่มันจะต้องมีการเข้ารหัส หลักสูตรส่วนใหญ่ที่มีอยู่บนเว็บจัดการวิธีการเขียนโค้ดในภาษาบางภาษาวิธีใช้ API บางชุด ฯลฯ นั่นไม่ใช่ประเด็นของฉันที่นี่ ในปีที่ผ่านมาฉันได้อ่านสิ่งต่างๆมากมาย: การวิเคราะห์และออกแบบเชิงวัตถุรูปแบบการออกแบบการออกแบบโดยใช้โดเมนเป็นต้น ฉันเข้าใจตัวอย่างเช่นหลักการ SOLID แนวคิดหลักบางประการของ DDD เช่นความจำเป็นในการมีส่วนร่วมของผู้เชี่ยวชาญด้านโดเมนการพัฒนาภาษาที่แพร่หลายและอื่น ๆ ฉันจะกล้าพูดว่าฉันมีพื้นฐานทางทฤษฎีอย่างน้อยเหมาะสม แต่เมื่อพูดถึงการฝึกฝนฉันรู้สึกว่าฉันเป็นหายนะ เมื่อไม่นานมานี้ฉันจำเป็นต้องพัฒนาระบบการเงินที่ถูกพัฒนาโดยบุคคลอื่นต่อไป มันเป็น "ระบบเก่า" ที่พัฒนาด้วย C # และ WinForms นี่เป็นครั้งแรกที่ฉันเลือกโครงการที่มีความซับซ้อนของโดเมนจริงด้วยกฎเกณฑ์ทางธุรกิจมากมายและอื่น ๆ ฉันยอมรับว่าเมื่อฉันได้รับข้อกำหนดเกือบตลอดเวลาฉันคิดว่า "จะทำอย่างไรในโลกนี้?" - …

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

2
ความแตกต่างระหว่างความทนทานและการยอมรับข้อผิดพลาดคืออะไร?
ระบบ / โปรแกรม / อัลกอริทึมแบบกระจาย / ... มักถูกอธิบายด้วยเพรดิเคตที่ทนทานหรือข้อผิดพลาดที่ยอมรับได้ อะไรคือความแตกต่าง? รายละเอียด: เมื่อฉัน google สำหรับ + ​​strong + "fault-tolerant" ฉันจะได้รับสองครั้งเท่านั้นทั้งไม่ช่วยเหลือ เมื่อฉันไปหาคำศัพท์ฉันพบเอกสารจำนวนมากที่มีทั้งสองคำอยู่ในชื่อของพวกเขา น่าเสียดายที่พวกเขาไม่ได้กำหนดคำอย่างแม่นยำ :( แต่เนื่องจากพวกเขาใช้ทั้งสองคำดูเหมือนว่าทั้งสองไม่มีนัยใด ๆ

1
ฟังก์ชั่นการโต้ตอบ / การเขียนโปรแกรมเชิงสัมพันธ์ - มีความแตกต่างหรือไม่?
ฉันใช้Reactive Cocoa (โดย GitHub) ซึ่งเป็นAPI การเขียนโปรแกรมเชิงโต้ตอบสำหรับใช้กับห้องสมุด Cocoa มาระยะหนึ่งแล้ว แต่เพิ่งอ่าน"Out of the Tar Pit"กระดาษที่นำเสนอแนวคิดเบื้องหลัง และฉันก็สับสนเล็กน้อย บทความนำเสนอ (ตามที่ฉันเข้าใจ) การเขียนโปรแกรมเชิงสัมพันธ์เชิงหน้าที่ซึ่งความสัมพันธ์ระหว่างข้อมูลถูกสร้างขึ้นด้วยเงื่อนไขที่ควรมีการบังคับใช้โดยระบบ FRP เพื่อลดจำนวนตรรกะและสถานะ 'อุบัติเหตุ' ที่จำเป็น คำถามของฉันคือแนวคิดทั้งสองนี้คือ FR (eactive) P และ FR (elational) P โดยพื้นฐานแล้วเป็นสิ่งเดียวกัน (โดยที่ก่อนหน้านี้เพิ่งจะนำไปใช้หลัง) หรือมีความแตกต่างที่สำคัญระหว่างทั้งสองหรือไม่ น่าเสียดายที่ในขณะนี้ความรู้เกี่ยวกับพื้นที่ของฉันไม่ดีพอสำหรับฉันที่จะแยกแยะพวกเขาให้มากพอ หากมีความแตกต่างดูเหมือนว่าจะเป็นสิ่งที่ต้องทำด้วยชื่อแนะนำเพื่อตอบสนองต่อการเปลี่ยนแปลงของข้อมูล แน่นอนว่า Reactive Cocoa (และ Rx ใน C #) มีแนวคิดในการสร้างสัญญาณที่ถูกกระตุ้นจากการเปลี่ยนแปลงข้อมูลและสามารถใช้ในการปรับเปลี่ยนค่าอย่างต่อเนื่องตลอดเวลา นี่คือความแตกต่าง? ถ้าไม่เป็นอะไร (โปรดแก้ตัวการติดแท็กที่ไม่ดีฉันไม่สามารถหาแท็กที่เกี่ยวข้องและยังไม่สามารถสร้างได้ - โปรดอัปเดตแท็กเป็นสิ่งที่เหมาะสมกว่าถ้าคุณสามารถทำได้)

3
คุณสมบัติใดบ้างที่ควรทดสอบผ่านการทดสอบ UI อัตโนมัติ
เมื่อเร็ว ๆ นี้เรามีที่ปรึกษาแจ้งว่าหากคุณลักษณะสามารถทดสอบได้ผ่านการทดสอบ UI อัตโนมัติเท่านั้น (เช่น Selenium, Coded UI) แสดงว่ามีปัญหาสถาปัตยกรรมพื้นฐาน ในขณะที่คำสั่งนี้อาจจะสุดขีดเล็กน้อยมันเป็นไปตามแนวเดียวกันของปิรามิดการทดสอบในการทดสอบ UI นั้นควรประกอบขึ้นเป็นส่วนเล็ก ๆ ของชุดทดสอบอัตโนมัติโดยรวมของคุณ ดังนั้นคุณสมบัติใดบ้างที่ควรมีการทดสอบ UI อัตโนมัติ ระบบที่มีสถาปัตยกรรมตรงประเด็นจะยังคงมีคุณสมบัติที่สามารถตรวจสอบได้ผ่านการทดสอบ UI หรือการทดสอบเหล่านี้ควรทำหน้าที่เป็น "แบ็คอัพ" สำหรับชุดของการทดสอบหน่วยและบริการหรือไม่

3
IValidatableObject vs Single Responsibility
ฉันชอบจุดที่เพิ่มความสามารถของ MVC ช่วยให้มุมมองแบบจำลองใช้ IValidatableObject และเพิ่มการตรวจสอบความถูกต้องที่กำหนดเอง ฉันพยายามควบคุมให้ตัวควบคุมของฉันคงอยู่เพราะการใช้รหัสนี้เป็นเพียงตรรกะการตรวจสอบเท่านั้น: if (!ModelState.IsValid) return View(loginViewModel); ตัวอย่างเช่นโมเดลมุมมองล็อกอินใช้ IValidatableObject รับวัตถุ ILoginValidator ผ่านการสร้างคอนสตรัค: public interface ILoginValidator { bool UserExists(string email); bool IsLoginValid(string userName, string password); } ดูเหมือนว่า Ninject การฉีดอินสแตนซ์ในมุมมองแบบจำลองไม่ใช่วิธีปฏิบัติทั่วไปจริง ๆ อาจเป็นรูปแบบการต่อต้านหรือไม่ นี่เป็นวิธีที่ดีหรือไม่? มีดีกว่าไหม

2
วิธีทำให้การออกแบบนี้ใกล้เคียงกับ DDD ที่เหมาะสมมากขึ้น?
ฉันได้อ่านเกี่ยวกับ DDD มาหลายวันแล้วและต้องการความช่วยเหลือในการออกแบบตัวอย่างนี้ กฎทั้งหมดของ DDD ทำให้ฉันสับสนมากกับวิธีที่ฉันควรจะสร้างอะไรเลยเมื่อวัตถุโดเมนไม่ได้รับอนุญาตให้แสดงวิธีการในชั้นแอพลิเคชัน; มีที่ไหนอีกที่จะจัดการกับพฤติกรรม? ที่เก็บไม่ได้รับอนุญาตให้ถูกฉีดเข้าไปในเอนทิตีและเอนทิตี้ของตัวเองจึงต้องทำงานกับรัฐ ถ้าอย่างนั้นเอนทิตีต้องรู้อะไรจากโดเมน แต่วัตถุเอนทิตีอื่น ๆ ไม่ได้รับอนุญาตให้ฉีด? บางสิ่งเหล่านี้มีเหตุผลสำหรับฉัน แต่บางอย่างไม่ ฉันยังไม่พบตัวอย่างที่ดีของวิธีสร้างคุณลักษณะทั้งหมดเนื่องจากทุกตัวอย่างเกี่ยวกับคำสั่งซื้อและผลิตภัณฑ์ทำซ้ำตัวอย่างอื่น ๆ ซ้ำแล้วซ้ำอีก ฉันเรียนรู้ได้ดีที่สุดจากการอ่านตัวอย่างและพยายามสร้างคุณสมบัติโดยใช้ข้อมูลที่ฉันได้รับเกี่ยวกับ DDD ในตอนนี้ ฉันต้องการให้คุณช่วยชี้ให้เห็นสิ่งที่ฉันทำผิดและวิธีการแก้ไขโดยเฉพาะอย่างยิ่งกับรหัสว่า "ฉันจะไม่ recomment ทำ X และ Y" ยากที่จะเข้าใจในบริบทที่ทุกอย่างเพิ่งกำหนดชัดเจนแล้ว ถ้าฉันไม่สามารถฉีดเอนทิตี้เข้าไปในที่อื่นได้จะง่ายกว่าที่จะเห็นวิธีการทำอย่างถูกต้อง ในตัวอย่างของฉันมีผู้ใช้และผู้ดูแล ผู้ดำเนินรายการสามารถแบนผู้ใช้ แต่ด้วยกฎธุรกิจ: เพียง 3 ต่อวัน ฉันพยายามตั้งค่าคลาสไดอะแกรมเพื่อแสดงความสัมพันธ์ (รหัสด้านล่าง): interface iUser { public function getUserId(); public function getUsername(); } class User implements …

6
แนวทางสถาปัตยกรรมสำหรับ“ หน้าเว็บแอปเดียว”
ฉันจะเริ่มโครงการด้านข้างเพื่อสร้างแอปพลิเคชันเว็บ "หน้าเดียว" แอปพลิเคชันต้องเป็นแบบเรียลไทม์ส่งการอัปเดตไปยังลูกค้าเมื่อมีการเปลี่ยนแปลงเกิดขึ้น มีแหล่งข้อมูลที่ดีสำหรับแนวทางการปฏิบัติที่ดีที่สุดหรือไม่สถาปัตยกรรมสำหรับการใช้งานประเภทนี้ แหล่งข้อมูลที่ดีที่สุดที่ฉันเคยพบคือบทความเกี่ยวกับสถาปัตยกรรม trello ที่นี่: http://blog.fogcreek.com/the-trello-tech-stack/ สำหรับฉันแล้วสถาปัตยกรรมนี้ถึงแม้ว่าจะเซ็กซี่มาก แต่ก็อาจจะเกินความต้องการเฉพาะของฉัน - แม้ว่าฉันจะมีข้อกำหนดที่คล้ายกัน ฉันสงสัยว่าฉันต้องรำคาญกับ sub / pub ที่ฝั่งเซิร์ฟเวอร์ฉันไม่เพียงแค่ผลักดันการอัปเดตจากเซิร์ฟเวอร์เมื่อมีบางอย่างเกิดขึ้น (เช่นเมื่อไคลเอ็นต์ส่งการอัปเดตไปยังเซิร์ฟเวอร์เขียนอัปเดตไปยัง db จากนั้นส่งการอัปเดตไปยังลูกค้า) เป็นเรื่องที่ชาญฉลาดฉันอาจต้องการสร้างสิ่งนี้ใน Node.JS หรืออาจเป็น Ruby แม้ว่าแนวทางสถาปัตยกรรมควรมีผลบังคับใช้กับเทคโนโลยีเซิร์ฟเวอร์พื้นฐานใด ๆ

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