ลดเวลาในการพัฒนาด้วยการพัฒนาแบบเน้น

ลดเวลาในการพัฒนาด้วยการพัฒนาแบบเน้น

วัตถุประสงค์ของบทความ

เพื่ออธิบายถึงข้อบกพร่องในสิ่งที่พิจารณาโดยทั่วไปว่าการพัฒนาแบบแผนและเพื่อแสดงวิธีการเอาชนะข้อบกพร่องเหล่านั้นโดยใช้วิธีการปรับแนวแบบริ้วรอยแบบ retooled

เน้นว่ารูปแบบการออกแบบที่ไม่เป็นทางการถือเป็นส่วนใหญ่ของรูปแบบที่ค้นพบในระหว่างการพัฒนาแบบมุ่งเน้น

เพื่อแสดงตัวอย่างตัวอย่างของรูปแบบการออกแบบบางส่วนของ Framework ที่พบในแอ็พพลิเคชันเว็บจำนวนหนึ่งที่ผู้เขียนสร้างขึ้น – เพิ่มคุณค่าในทางปฏิบัติให้กับบทสนทนาทางทฤษฎีอันบริสุทธิ์

เพื่อแสดงให้เห็นว่ารูปแบบการออกแบบสามารถและมักขึ้นอยู่กับรูปแบบการออกแบบอื่น ๆ

สรุปเพื่อให้มุมมองที่แตกต่างกันเล็กน้อยเกี่ยวกับรูปแบบการออกแบบให้เน้นความสำคัญของการพัฒนารูปแบบและด้วยเหตุนี้จึงต้องปลูกฝังให้ต้องดูรูปแบบการออกแบบและกรอบซอฟต์แวร์อย่างใกล้ชิดมากขึ้น

พื้นหลัง

“เราใช้ Agile / Scrum, Test-Driven Development และเรามีเป้าหมายเชิงวัตถุการผลิตของเราดีขึ้นอย่างมากเมื่อเปรียบเทียบกับสิ่งที่เราได้รับมาก่อน แต่ทำไมโครงการของเรายังคงถูกบุกรุกอยู่? ซึ่งน่าผิดหวังมากต้องมีอย่างอื่นที่เราเป็นอยู่ หายไป … ”

มีเหตุผลหลายประการ ตัวอย่างเช่นคุณมีไลน์ CSS หลายพันรายการหรือไม่เนื่องจากนักพัฒนาซอฟต์แวร์ไม่เข้าใจวิธีแยกตำแหน่งออกจากสไตล์และวิธีขยายคลาส CSS การขาดทักษะอย่างแน่นอนอาจเป็นส่วนสำคัญในการขาดความสำเร็จที่ทีมพัฒนาซอฟต์แวร์ประสบ

บ่อยครั้งมากที่จะไม่เน้นการพัฒนาแบบมุ่งเน้น โดยทั่วไปการพัฒนาแบบเน้นย่อมขาดความครอบคลุมที่เกี่ยวข้องและมีคุณค่าในพื้นที่เทคโนโลยีสารสนเทศ โดยไม่ต้องมีรูปแบบที่มุ่งเน้นระบบอาจสิ้นสุดที่มีสองบรรทัดหลายบรรทัดของรหัส นอกจากนี้เรายังทราบด้วยว่าการเพิ่มบรรทัดของรหัสจะทำให้ความซับซ้อนของระบบเพิ่มขึ้นอย่างมาก

หมายความว่าคุณต้องมองหาตำแหน่งที่คุณพลาด ฯลฯ ในระบบของคุณหรือไม่? มองหาที่คุณพลาดรูปแบบการออกแบบอย่างเป็นทางการอาจไม่ได้ที่คุณจะหาคำตอบ ปัญหานี้มีแนวโน้มที่จะขาดการค้นพบและมีผลต่อรูปแบบการออกแบบที่ไม่เป็นทางการในระบบของคุณ

การออกแบบรูปแบบการคัดค้าน

ลองดูข้อโต้แย้งเกี่ยวกับรูปแบบการออกแบบก่อนแล้วค่อยทำแบบนั้นให้ถูกต้อง

รูปแบบถูกวิพากษ์วิจารณ์อย่างกว้างขวางและถูกต้อง นี่คือการคัดค้านบางอย่าง:

1. ความต้องการรูปแบบการออกแบบเป็นผลมาจากการใช้ภาษาคอมพิวเตอร์หรือเทคนิคที่มีความสามารถในการลบข้อมูลไม่เพียงพอ ปีเตอร์ Norvig ให้อาร์กิวเมนต์ที่คล้ายกัน เขาแสดงให้เห็นว่า 16 ใน 23 รูปแบบในหนังสือรูปแบบการออกแบบ (ซึ่งเน้นหลักใน C + +) จะง่ายหรือถูกตัดออก (ผ่านการสนับสนุนภาษาโดยตรง) ในภาษาอื่น ๆ

2. รูปแบบการออกแบบไม่มีพื้นฐานอย่างเป็นทางการ ในการประชุมของ OOPSLA กลุ่ม Gang of Four ได้รับความร่วมมือเต็มรูปแบบภายใต้การพิจารณาคดีในคดีที่พวกเขาถูกตั้งข้อหาก่ออาชญากรรมมากมายเกี่ยวกับวิทยาการคอมพิวเตอร์ พวกเขาถูกตัดสินโดย 2/3 ของ “ลูกขุน” ที่เข้าร่วมการพิจารณาคดี

3. รูปแบบการออกแบบไม่แตกต่างจาก abstractions อื่น ๆ ผู้เขียนบางคนกล่าวหาว่ารูปแบบการออกแบบไม่แตกต่างจากรูปแบบนามธรรมอื่น ๆ และการใช้คำศัพท์ใหม่ (ยืมมาจากชุมชนสถาปัตยกรรม) เพื่ออธิบายปรากฏการณ์ที่มีอยู่ในด้านการเขียนโปรแกรมก็ไม่จำเป็น

รูปแบบการออกแบบนำไปสู่การแก้ปัญหาที่ไม่มีประสิทธิภาพ เกือบจะเป็นทางออกที่มีประสิทธิภาพมากขึ้นในการใช้การใช้งานที่ดีกว่าปัจจัยมากกว่ารูปแบบการออกแบบ “เพิ่งจะดีพอ”

ความหมายทั่วไปของไลบรารีและกรอบ

ถ้าคุณดูที่บทความทางอินเทอร์เน็ตคุณจะพบไลบรารีและกรอบคำจำกัดความเช่นต่อไปนี้:

·ไลบรารีซอฟต์แวร์เป็นชุดของฟังก์ชันที่คุณสามารถเรียกได้โดยปกติจะจัดเป็นชั้นเรียน การโทรแต่ละครั้งทำงานบางอย่างและส่งกลับการควบคุมไปยังไคลเอ็นต์

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

กรอบงานซอฟต์แวร์ใหม่ที่กำหนดไว้

นี่คือมุมมองของฉันเกี่ยวกับกรอบซอฟต์แวร์:

กรอบงานซอฟต์แวร์คือชุดของรูปแบบการออกแบบ (เป็นทางการและ / หรือไม่เป็นทางการ) พร้อมกับโค้ดที่จำเป็นในการดูแลฟังก์ชันการทำงานร่วมกันของรูปแบบการออกแบบและเพื่อแสดงองค์ประกอบของกรอบงานให้กับนักพัฒนาซอฟต์แวร์

เฟรมเวิร์กมักมาพร้อมกับสิ่งที่ผู้คนอธิบายว่าเป็นห้องสมุด ตัวอย่างเช่นคุณจะพบในกรอบที่อธิบายไว้ในบทความนี้ส่วนประกอบที่ได้รับการลงทะเบียนกับกรอบซึ่งมีฟังก์ชันการทำงานบางอย่างสำหรับคอมโพเนนต์ ซึ่งอาจอธิบายได้ว่าเป็นฟังก์ชันการทำงานของไลบรารี แต่ส่วนใหญ่เป็นรูปแบบมัณฑนากร

กรอบการทำงานของซอฟต์แวร์เป็นรูปแบบการออกแบบการขจัดงานซ้ำ ๆ และใช้เพื่อเร่งพัฒนา พวกเขาจะใช้ในการปรับปรุงการพัฒนาซอฟต์แวร์ด้วยการอนุญาตให้นักออกแบบและนักเขียนโปรแกรมได้ใช้เวลาในการตอบสนองความต้องการของซอฟต์แวร์แทนที่จะเกี่ยวข้องกับฟังก์ชันการทำงานทั่วไปและรายละเอียดระดับมาตรฐานที่ต่ำกว่ามาตรฐานในการจัดหาระบบการทำงาน วัตถุประสงค์ของกรอบซอฟต์แวร์คือการลดเวลาในการพัฒนาโดยรวม

ด้วยการพัฒนารูปแบบ (Pattern Oriented Development) กรอบการทำงาน (กรอบรูปแบบซอฟต์แวร์ขับเคลื่อน) เป็นผู้ส่งมอบที่นำไปสู่ส่วนที่เหลือของการพัฒนา เป็นที่เข้าใจกันโดยทั่วไปว่ากรอบซอฟต์แวร์ที่มีประสิทธิภาพที่สุดคือซอฟต์แวร์ที่มีวิวัฒนาการมาจากการปรับโครงสร้างรหัสร่วมกันขององค์กร กรอบงานซอฟต์แวร์ที่กล่าวถึงในบทความนี้มีวิวัฒนาการไปด้วยวิธีนี้โดยสร้างขึ้นโดยนักพัฒนาซอฟต์แวร์สำหรับนักพัฒนาซอฟต์แวร์

สิ่งที่กล่าวมาข้างต้นไม่ใช่เพื่อหยุดการออกแบบ แต่ต้องใช้ขั้นตอนต่อไปโดยการเพิ่มโค้ดสำหรับรูปแบบการออกแบบตามเวลาที่เราระบุว่าเป็นกรอบ [software] – กรอบงานที่มีต้นกำเนิดตามแบบแผน

การอ้างอิงถึง “Framework” ในส่วนที่เหลือของบทความนี้เกี่ยวข้องกับกรอบ [software] ที่มีรูปแบบตามที่อธิบายไว้ในส่วนนี้

การค้นพบวัตถุ

สมมติว่าภารกิจที่คุณให้ไว้คือการให้บริการเฮลิคอปเตอร์ Apache และเครื่องบินบรรทุกสินค้า C-130 คุณจะไปเรื่องนี้ได้อย่างไร? แรกที่คุณแบ่งงานขึ้นสำหรับแต่ละคนเพื่อดูสิ่งที่ต้องทำเพื่อบริการพวกเขา

สำหรับเฮลิคอปเตอร์คุณต้อง:

·กลับใบพัดใบพัด

ทำพวงของสิ่งอื่น ๆ

·ปั๊มยาง

·ทำสิ่งต่างๆมากมาย

สำหรับ C-130 คุณต้อง:

·ทำบางสิ่งบางอย่าง

·ปั๊มยาง

·ทำบางสิ่งเพิ่มเติม

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

กรอบอ้างอิง

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

วิธีแรกในการเคลื่อนที่เช่นเดียวกับเทคโนโลยีเว็บที่ใช้ในแอปพลิเคชันเหล่านี้ส่งผลต่อทิศทางที่ดำเนินการกับกรอบงานนี้

ข้อสังเกตกรอบ

จากบิตของกรอบด้านล่างนี้คุณจะสามารถบอกได้ว่าการจัดการกรณีข้อยกเว้นเป็นส่วนหนึ่งของโซลูชันที่เหมาะสมกับค้างคาว นักพัฒนาซอฟต์แวร์ที่ใช้งานจริงได้เขียนถึงสภาพสมบูรณ์แบบก่อน ทำไมไม่? พวกเขาบอกว่า “เราต้องมีวันอังคารหน้านี้ต่อไป!” เมื่อเสร็จสิ้นการส่งมอบ “วันอังคาร” พวกเขาอ้างว่าพวกเขาทำเสร็จ 90% และต้อง “เพิ่ม” เท่านั้นในการจัดการข้อยกเว้น การบันทึกข้อมูลอาจเป็นผลสำเร็จในถังที่เหลือ “10%” ที่เหลืออยู่

จากนั้นนักพัฒนาซอฟต์แวร์จะเริ่มต้นเพิ่มโค้ดสำหรับกรณีพิเศษการเข้าสู่ระบบและอื่น ๆ ซึ่งส่งผลให้รหัสต้องเปิดใหม่ (เป็นการละเมิดหลักเปิดปิด) นอกจากนี้ยังส่งผลให้เกิดเส้นทางรหัสที่ทำงานมาก่อนเสียก่อนและระบบยังคงอยู่ในสถานะ “90% ทำ” เป็นเวลานานมาก

ไม่ได้หมายความว่าจะเบี่ยงเบนไปจากหัวข้อ แต่ขอให้ฉันเพียงแค่พูดถึงว่านักพัฒนาซอฟต์แวร์ได้รับความสนใจภายใต้ระเบียบวิธีเปรียวและเรียกเหล่านี้ว่า refactoring ต่อไป มีความแตกต่างระหว่าง refactoring และระบบอาคารในลำดับที่ไม่ถูกต้องและเป็นอันตราย

การพัฒนาแบบเน้นจะช่วยขจัดปัญหาดังกล่าวได้ – กรณีข้อยกเว้นจะได้รับการจัดการตั้งแต่เริ่มต้นพร้อมกับการบันทึกข้อมูลและอื่น ๆ นอกจากนี้ความท้าทายเหล่านี้ได้รับการจัดการอย่างสม่ำเสมอในใบสมัคร กรอบนี้ดูแลการยกของหนักสำหรับนักพัฒนาซอฟต์แวร์ซึ่งจะช่วยให้พวกเขาพึ่งพาได้เพื่อที่พวกเขาจะต้องมุ่งเน้นไปที่โดเมนเท่านั้น

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

ลองดูตัวอย่างของรูปแบบที่พบในแอปพลิเคชันเว็บที่ผู้เขียนสร้างขึ้น

รูปแบบ: ข้อความของผู้ใช้สร้างฝั่งเซิร์ฟเวอร์

เรามีสถานการณ์ที่เซิร์ฟเวอร์ปลายทางทราบว่ารหัสของคุณจำเป็นต้องแสดงข้อความถึงผู้ใช้ ซึ่งอาจเกิดขึ้นระหว่างการร้องขอหน้าโดยใช้เมธอด HTTP (GET, POST ฯลฯ ) หรือระหว่างการร้องขอ นักพัฒนาซอฟต์แวร์ไม่ควรกังวลเกี่ยวกับลักษณะกล่องข้อความหรือควรใช้การส่งข้อความอย่างไร อาจมีการเปลี่ยนเส้นทางระหว่างเวลาที่มีการเปิดข้อความไปยังกรอบงานและเวลาที่ผู้ใช้เห็นข้อความ

นักพัฒนาซอฟต์แวร์ไม่ควรกังวลเรื่องรายละเอียดดังกล่าว แม้ว่าจะมีข้อความอื่น ๆ ถูกส่งไปยัง Framework ก็ตามไม่ว่าจะเป็นที่อื่นในโค้ดฝั่งเซิร์ฟเวอร์ในคำขอ HTTP เดียวกันหรือหน้าใหม่ที่เปลี่ยนเส้นทางไปผู้ใช้ควรแสดงข้อความเหล่านี้ กรอบนี้มีหน้าที่รับผิดชอบในการทำให้แน่ใจว่าผู้ใช้จะได้เห็นข้อความทุกอย่างในเวลาที่เหมาะสม

เป็นรูปแบบนี้หรือไม่? มีรูปแบบ (1) บอกให้นักพัฒนาทราบว่าจะใช้การรับส่งข้อความหรือวิธีส่งข้อความไปยังกรอบงานแทนที่จะใช้นักพัฒนาซอฟต์แวร์แต่ละรายของตนเอง จากนั้นมี (2) รูปแบบที่เกี่ยวข้องกับรายละเอียดการใช้งานจริงของข้อความ (ไม่ได้อธิบายไว้ที่นี่) สุดท้าย (3) ใต้รูปแบบที่สองเป็นรูปแบบเช่นพร็อกซีรูปแบบ รูปแบบที่กล่าวถึงในบทความนี้เกี่ยวข้องกับคอมโพเนนต์ Framework และการกล่าวถึงสั้น ๆ เกี่ยวกับรูปแบบ (การใช้) ที่นำเสนอต่อนักพัฒนาแอ็พพลิเคชัน (ในทางตรงกันข้ามกับนักพัฒนา Framework) รูปแบบที่มุ่งเน้นไปที่นักพัฒนาซอฟต์แวร์ที่มีขนาดใหญ่มักเป็นและควรเป็นรูปแบบที่เรียบง่าย – กฎที่เรียบง่าย!

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

รูปแบบ: ข้อความจากผู้ใช้สร้างฝั่งไคลเอ็นต์

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

รูปแบบ: แบบฟอร์มเว็บและ AJAX โพสต์หลัง

รูปแบบนี้กล่าวถึงข้อเท็จจริงที่ว่าเมื่อใช้ ASP.NET WebForms และประสิทธิภาพนั้นเป็นสิ่งสำคัญไม่ใช่การใช้แผงการปรับปรุงของ ASP.NET สำหรับงาน AJAX ใด ๆ ที่นี่กรอบดูแลความต้องการ AJAX หลักเช่น:

·บรรจุองค์ประกอบแบบฟอร์มสำหรับโพสต์กลับ

·เรียก AJAX ในนามของโค้ดของนักพัฒนาซอฟต์แวร์

·ช่วยเหลือที่ฝั่งเซิร์ฟเวอร์ด้วยการตีความคำขอรับและข้อมูลที่ได้รับ

จัดการกับการจัดการข้อยกเว้นและการส่งข้อความของผู้ใช้รวมทั้งการจัดการข้อผิดพลาดในการตรวจสอบ

รหัสนักพัฒนาซอฟต์แวร์ต้องการการร้องขอให้ Framework ดำเนินการเรียก AJAX และ (เท่านั้น) ใช้เส้นทางรหัสสำเร็จ

รูปแบบ: ข้อมูลเชิงลึกของแอป

ข้อมูลเชิงลึกของแอปเป็นเพียงคำที่ดีกว่าสำหรับสิ่งที่เรามักเรียกใช้ความช่วยเหลือ ความช่วยเหลือโดยปกติจะอยู่ในรูปแบบคำขอตามความต้องการ แต่คุณไม่สามารถใช้ UI ได้ทุกที่ด้วยไอคอน “ข้อมูล” วิธีการดำเนินการที่นี่คือการแสดงให้ผู้ใช้เข้าใจ App เมื่อผู้ใช้เข้าชมฟังก์ชันที่กำหนดของระบบเป็นครั้งแรก

ที่นี่ผู้ใช้สามารถปิดข้อความที่แสดงไว้ชั่วคราวหรือถาวรได้ หลังจากการยกเลิกข้อความอย่างถาวรข้อความจะไม่ปรากฏต่อผู้ใช้อีกครั้งเมื่อเขาเข้าชมฟังก์ชันการทำงานนั้น ๆ

นักพัฒนาซอฟต์แวร์เพียงแค่ต้องขอให้ Framework แสดง App Insight โดยเฉพาะในตำแหน่งที่เหมาะสมในรหัสของตน กรอบรู้ดีว่าจะแสดง App Insight หรือไม่และจะทำให้การควบคุมกลับไปเป็นโค้ดนักพัฒนาซอฟต์แวร์เมื่อดำเนินการเสร็จสิ้น

รูปแบบ: จำกัด หน่วยงานไปยังแท็บเดี่ยวต่ออินสแตนซ์ของเบราว์เซอร์

เมื่อคุณแคชข้อมูลในระดับกลาง * (ดูภาคผนวก) ภาวะแทรกซ้อนเกิดขึ้นเมื่อผู้ใช้เปิดหน่วยงานเดียวกัน ** (ดูภาคผนวก) ในหลายแท็บหรือหน้าต่างในอินสแตนซ์เบราว์เซอร์เดียวกัน ในโลก HTTP ไร้สัญชาติเซิร์ฟเวอร์ไม่สามารถแยกแยะระหว่างแท็บทั้งสองเพื่อรักษาแคชของแต่ละแท็บแยกกันได้

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

นักพัฒนาซอฟต์แวร์ต้องใส่ข้อมูลควบคุมที่ซ่อนอยู่ (แทรกผ่านหน้าเนื้อหาหรือมุมมองที่แชร์) โดยใช้ตัวระบุ Work Unit ที่เหมาะสม

รูปแบบ: ป้องกันไม่ให้การพยายามสแปมหลังการโพสต์

ด้วยวิธีการสมัคร SPA ที่ทันสมัยซึ่งผู้ใช้มองเห็นรายการเอนทิตีและระบุเอนทิตีที่ผู้ใช้ต้องการทำงานมีแนวโน้มที่จะจัดส่งคอลัมน์ข้อมูลประจำตัวของเอนทิตีไปยังไคลเอ็นต์

เมื่อผู้ใช้เลือกงาน 8 ระบบจะตรวจสอบว่างาน 8 ยังคงมีอยู่และผู้ใช้งานได้รับงานเวอร์ชันล่าสุด 8 จากนั้นจะแสดงกล่องโต้ตอบด้านบนให้กับผู้ใช้ เมื่อผู้ใช้ทำการเปลี่ยนแปลงที่จำเป็นแล้วการโต้ตอบของ Update จะส่งข้อมูลงานไปยังเซิร์ฟเวอร์ ขณะนี้เซิร์ฟเวอร์ต้องการทราบว่าจะอัพเดตงานใดและจะไม่เกี่ยวข้องกับความพยายามในการแฮ็ก AJAX

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

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

รูปแบบ: หน่วยงาน ** แคช

เพื่อประสิทธิภาพการรักษาความปลอดภัยและเหตุผลอื่น ๆ แอปพลิเคชันจะจดจำข้อมูลสำหรับหน่วยงานใน Middle Tier * เมื่อผู้ใช้ข้ามจากหน่วยงานหนึ่งไปยังอีกที่หนึ่งข้อมูลหน่วยงานก่อนหน้าจะถูกลบออกจากแคชของเซิร์ฟเวอร์ วิธีเดียวที่จะทำเช่นนี้คือการทำให้แคชของแต่ละหน่วยงานแยกจากกัน แคชต้องได้รับการทำความสะอาดในเวลาที่เหมาะสมหรือหน่วยความจำเซิร์ฟเวอร์อื่นได้รับเครียดซึ่งจะนำไปสู่ปัญหาประสิทธิภาพ

รูปแบบ: Cache หน่วยทำงานข้าม

แคชที่พบโดยทั่วไปในหลายหน่วยงานควรถูกแคชไว้ในชุดทำงานข้ามของ Cache ** Cache โดยปกติแคชนี้จะได้รับการทำความสะอาดขึ้นหลังจากที่ผู้ใช้ล็อกออฟ นักพัฒนาซอฟต์แวร์จะเข้าถึงรายการแคชทั่วไปจาก Framework และไม่ม้วนโซลูชันของตนเอง

รูปแบบ: การรวมเลเยอร์

การรวมเลเยอร์เกี่ยวข้องกับโครงสร้างการส่งคืนข้อมูลระหว่างเลเยอร์ ตามเนื้อหาของโครงสร้างการส่งคืนรหัสนักพัฒนาซอฟต์แวร์จะทราบว่าคำขอเสร็จสมบูรณ์หรือไม่ ในกรณีของความล้มเหลว Framework จะจัดการเรื่องการตอบสนอง

ประเภทการส่งคืนเหล่านี้มีเพื่อรองรับความท้าทายต่อไปนี้:

·ความขัดแย้งในที่เกิดเหตุพร้อมกัน

·อัปเดตโดยไม่มีการเปลี่ยนแปลงโดยผู้ใช้

·พยายามสร้างเอนทิตีที่ซ้ำกัน

·การตรวจสอบความถูกต้อง

รายการข้างต้นจะครอบคลุมด้วยตัวเองในบทความที่คุณจะได้รับข้อมูลเชิงลึกที่ดียิ่งขึ้นเกี่ยวกับสิ่งที่กล่าวมาทั้งหมดนี้

รูปแบบ: ความขัดแย้งในเวลาเกิดเหตุ

วิธีการดำเนินการที่นี่เป็นวิธีการล็อกในแง่ร้าย – เราต้องการทราบว่าเอนทิตีได้รับการอัปเดตเมื่อผู้ใช้ดึงสำเนาข้อมูลอัปเดตและแจ้งผู้ใช้ดังกล่าวในขณะที่ผู้ใช้พยายามปรับปรุงเอนทิตี อาจมีการลบเอนทิตีไปในระหว่างนี้โดยผู้ใช้รายอื่น

รูปแบบนี้จะอธิบายถึงนักพัฒนาซอฟต์แวร์ว่าจะตรวจจับและจับภาพความขัดแย้งที่เกิดขึ้นพร้อมกันได้อย่างไรและรวมเข้าด้วยกันอย่างไรในการรวมเลเยอร์ของ Framework

รูปแบบ: อัปเดตและไม่มีการเปลี่ยนแปลง

ผู้ใช้สามารถกดปุ่ม “ส่งการเปลี่ยนแปลง” เมื่อผู้ใช้ไม่ทำการเปลี่ยนแปลงองค์กร ควรใช้ชั้นใดในการตรวจสอบนี้และควรทำอย่างไร? การรวมเลเยอร์เป็นกุญแจสำคัญในรูปแบบนี้

รูปแบบ: ป้องกันไม่ให้รายการที่ซ้ำกัน

ตรรกะความรับผิดชอบของเลเยอร์กฎทางธุรกิจเพื่อป้องกันไม่ให้ผู้ใช้เพิ่มเอนทิตีที่ซ้ำกันเข้าไปในระบบ โซลูชันดังกล่าวเป็นโซลูชันที่น่าสนใจและมีราคาแพงบวกกับการออกจากห้องเล็ก ๆ สำหรับรายการที่ซ้ำกันต่อไป รูปแบบนี้จะอธิบายวิธีการป้องกันการพยายามเข้าร่วมรายการที่ซ้ำกัน การรวมเลเยอร์ของ Framework มีบทบาทสำคัญในรูปแบบนี้

รูปแบบ: การบันทึก

มีสามประเภทของการเข้าสู่ระบบ:

·ข้อยกเว้น

·การใช้ประโยชน์

· ประสิทธิภาพ

แน่นอนว่ามันยากที่จะเพิ่มการบันทึกหลังจากความเป็นจริง ควรเป็นส่วนหนึ่งของกรอบงานตั้งแต่เริ่มต้น

รูปแบบ: การควบคุมแบบเลื่อนลง

การควบคุมแบบเลื่อนลงต้องได้รับการจัดการในรูปแบบมาตรฐานในแง่ของ:

·รายการที่ว่างเปล่า

·การเพิ่มความสามารถในกล่องคำสั่งผสม

·แจ้งให้ผู้ใช้เลือกรายการ

·จัดการกับการเลือกค่าเริ่มต้น

รูปแบบ: ปรับเขตตรวจสอบความถูกต้อง

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

รูปแบบ: หมดอายุเซสชัน

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

รูปแบบ: การจัดการกับเบราว์เซอร์ที่ไม่สนับสนุน

นักพัฒนาซอฟต์แวร์ควรมั่นใจว่าในขณะที่เบราว์เซอร์ถึงหน้าเว็บเบราว์เซอร์เป็นเบราว์เซอร์ที่สนับสนุน ปล่อยให้ส่วนที่เหลืออยู่ในกรอบ

รูปแบบ: การกำหนดค่าคุกกี้

การตรวจสอบเพื่อดูว่ามีการเปิดหรือปิดคุกกี้ของเบราเซอร์ไม่ควรเป็นงานของนักพัฒนาซอฟต์แวร์หรือไม่ มันควรจะเป็นความรับผิดชอบของกรอบ

รูปแบบ: …

กรอบนี้มีส่วนประกอบมากกว่าที่ระบุไว้จนถึงปัจจุบัน ไม่มีเฟรมเวิร์กที่สมบูรณ์โดยไม่ต้องมีชุดของวิธีการต่อส่วนขยายและฟังก์ชั่นประเภทผู้ช่วยเหลืออื่น ๆ อีกจำนวนหนึ่ง ตัวอย่างของภาษาการเขียนโปรแกรมทั่วไปประเภทหนึ่งที่จะขยายคือ URI, String และ Date / Time

บทความนี้มีวัตถุประสงค์เพื่อสัมผัสรูปแบบเพียงไม่กี่รูปแบบและไม่ใช่เพื่อให้เอกสารสมบูรณ์ในกรอบทั้งหมด

การนำกลับมาใช้ใหม่ของกรอบ

ก่อนอื่นต้องได้รับการเตือนว่าเฟรมเวิร์กนี้มีไว้สำหรับแอพพลิเคชันบนเว็บโดยเฉพาะ เน้นการพัฒนา Web Applications (interactive systems) มากกว่าการพัฒนาเว็บไซต์ “static”

Conceptually ด้วย Framework เป็นชุดของรูปแบบการออกแบบสามารถใช้ได้กับโครงการซอฟต์แวร์ทางเว็บใด ๆ รหัสฝั่งเซิร์ฟเวอร์ของ Framework นี้อยู่บนพื้นฐานของเทคโนโลยีของ Microsoft สำหรับเทคโนโลยีที่แตกต่างกันรหัสฝั่งเซิร์ฟเวอร์บางส่วนของ Framework จะต้องถูกย้ายเข้าไปอยู่ในภาษาโปรแกรมที่คุณเลือก อย่างไรก็ตามการเขียนใน C # ไม่ใช่งานที่ซับซ้อน การใช้กรอบการทำงานด้าน UI นี้ขึ้นอยู่กับ jQuery

มีที่อื่น ๆ ในโค้ดที่ Framework ใช้ความสามารถที่ได้รับเช่นเดียวกับเทคโนโลยี Object Relational Mapper ของเทคโนโลยีต้นแบบและโค้ดดังกล่าวจะต้องมีการเขียนใหม่สำหรับชุดเทคโนโลยีที่แตกต่างกัน