ทุกวันนี้เว็บไซต์หลายแห่งที่ใช้ ASP ไม่ได้ใช้ส่วนประกอบเลย วันนี้บรรณาธิการของ Fooxin Technology Channel อธิบายถึงบริการแผนกระหว่าง ASP และส่วนประกอบสั้น ๆ ฉันหวังว่ามันจะเป็นประโยชน์สำหรับคุณในการเรียนรู้ความรู้นี้
บริการแผนก ASP และส่วนประกอบ
ASP มักใช้เพื่อสร้างไฟล์ HTML หรือ XML เพื่อใช้งานโดยลูกค้าบนเซิร์ฟเวอร์ดังนั้นเราจึงพูดถึงสถานการณ์การใช้งานนี้เป็นหลัก สิ่งนี้ทำให้เกิดคำถามทั่วไป: หากหน้า ASP อยู่บนเซิร์ฟเวอร์พวกเขาเป็นส่วนหนึ่งของเลเยอร์ธุรกิจหรือไม่? ในโลกส่วนประกอบคำตอบมักจะไม่ ในขณะที่ ASP ทำงานบนเซิร์ฟเวอร์และอาจอยู่ในพื้นที่เดียวกับแอปพลิเคชันเซิร์ฟเวอร์สิ่งนี้ไม่ได้ทำให้เป็นส่วนหนึ่งของตรรกะทางธุรกิจ
ด้วยเครื่องมืออินเทอร์เฟซผู้ใช้ที่กำลังเติบโตหรือเป็นโซลูชั่นธุรกิจกับธุรกิจมากขึ้นการมีความแตกต่างที่ชัดเจนนี้จะได้รับรางวัลมากมาย
ต้องบอกว่าลองดูที่ชั้นธุรกิจที่สำคัญที่สุดและเกณฑ์การแบ่งชั้นนำเสนอ:
แยกรหัส UI จากตรรกะทางธุรกิจ ซึ่งรวมถึงการเขียนโค้ดควบคู่ไปกับ UI เช่นการใช้วัตถุ MTS ที่ใช้องค์ประกอบภายใน ASP เพื่อแยกออกจากรหัสตรรกะทางธุรกิจราวกับว่ามันอยู่ใน DLL ที่แตกต่างกัน
แยกธุรกรรมออกจากหน้า ASP การทำธุรกรรม ASP นั้นดีมากในบางกรณี แต่ส่วนประกอบและแอปพลิเคชันหลายระดับเปลี่ยนสิ่งนี้ ส่วนประกอบไม่ควรพึ่งพาเลเยอร์ลูกค้าเพื่อจัดการธุรกรรมและความหมายของตรรกะทางธุรกิจ
วางส่วนประกอบที่เป็นตัวแทน (ส่วนประกอบที่ใช้การร้องขอและการตอบกลับ) ในเครื่องเดียวกันและ/หรือประมวลผลเป็นเว็บเซิร์ฟเวอร์ หากวัตถุที่ใช้วัตถุส่วนประกอบภายใน ASP ถูกวางไว้บนเครื่องระยะไกลการโทรทั้งหมดไปยังส่วนประกอบภายในจะเกิดขึ้นในรูปแบบการโทรกลับ เซิร์ฟเวอร์ COM+ ที่เรียกว่าไคลเอนต์ IIS เป็นเซิร์ฟเวอร์ COM+ ซึ่งช่วยลดประสิทธิภาพและการกำหนดค่าความปลอดภัยที่ซับซ้อน วัตถุปรับแต่งเหล่านี้สามารถวางไว้ในแอปพลิเคชัน COM+ ที่ทำเครื่องหมายว่า "การเปิดใช้งานไลบรารี"
ASP มีอยู่บนเซิร์ฟเวอร์ดังนั้นหน้า ASP จะต้องปฏิบัติตามกฎการแบ่งปันทรัพยากรและโปรดจำไว้ว่าการปรับขนาดได้ โปรดดูรายละเอียดด้านล่าง:
ใน "เซสชัน" การจัดการควรพยายามหลีกเลี่ยงสถานะเฉพาะของผู้ใช้
เก็บ ASP ไร้สัญชาติและอนุญาตให้กลุ่มทรัพยากรเป็นไปได้
วิธีการดำเนินงาน
เมื่อประเมินว่าส่วนโค้ดเป็นของตรรกะทางธุรกิจหรือเลเยอร์การนำเสนอให้ถามตัวเองว่า "ถ้าฉันต้องแทนที่หน้า ASP ของฉันด้วยแอปพลิเคชันโทรศัพท์ประเภทปุ่มหรือไม่รหัสนั้นยังมีประโยชน์อยู่หรือไม่" หากคำตอบคือ "ใช่" คุณสามารถลองแบ่งออกเป็นรหัสตรรกะทางธุรกิจหรือรหัสผู้ช่วยผู้ใช้
หากไม่สามารถใช้รหัสหลังจากเปลี่ยนไคลเอนต์หรือเป็นตัวช่วยในการสร้างส่วนต่อประสานผู้ใช้รหัสจะเป็นของเลเยอร์บริการตัวแทน มันอยู่ในหน้า ASP หรือในส่วนประกอบที่ใช้ส่วนประกอบภายใน ASP มันไม่ได้เป็นขององค์ประกอบวัตถุธุรกิจ
เข้าใจความแตกต่างระหว่างเดสก์ท็อปและไคลเอนต์ ASP
ASP เป็นไคลเอนต์พิเศษของส่วนประกอบซึ่งแตกต่างจากแอปพลิเคชัน Win32 แบบดั้งเดิมแบบดั้งเดิมบนเดสก์ท็อป ความแตกต่างหลักสรุปไว้ดังนี้
การจัดการเธรด: ASP เป็นไคลเอนต์แบบมัลติเธรด ซึ่งหมายความว่าอาจมีกิจกรรมที่เกิดขึ้นพร้อมกันจำนวนมากที่ทำงานร่วมกันบางทีอาจจัดการกับหน้า ASP ที่แตกต่างกันในเวลาเดียวกัน ซึ่งหมายความว่าวัตถุนั้นไม่สามารถทำเพื่ออ้างสิทธิ์ได้ว่าเป็นผู้ใช้เพียงคนเดียวที่ครอบครองระบบโดยเฉพาะ การทำเช่นนี้อาจทำให้เกิดปฏิกิริยาที่ไม่คาดคิดเช่นการพัฒนานิสัยที่ไม่ดีในการจัดเก็บวัตถุในเซสชัน ASP หรือตัวแปรแอปพลิเคชัน
สภาพแวดล้อมด้านความปลอดภัย: ASP ดำเนินการโดย Internet Information Services 5.0 ในเว็บไซต์โดยมีสามระดับการแยก: ต่ำปานกลางและสูง แม้แต่เว็บไซต์เหล่านี้ก็สามารถมีการตั้งค่าความปลอดภัยที่แตกต่างกันอนุญาตหรือปฏิเสธการเข้าถึงที่ไม่ระบุชื่อการรับรองความถูกต้องของลูกค้าและอื่น ๆ การตั้งค่าทั้งหมดเหล่านี้สร้างแผนการจำนวนมากที่บัญชีผู้ใช้ที่แตกต่างกันจบลงด้วยการใช้วัตถุของคุณ
การเติบโตอย่างง่ายดาย: นี่ไม่ใช่ปัญหาทางเทคนิค แต่เป็นผลข้างเคียงของสิ่งอำนวยความสะดวกที่จัดทำโดยเว็บแอปพลิเคชัน
ตามเนื้อผ้าการเพิ่มฐานผู้ใช้ในแอปพลิเคชันเดสก์ท็อปต้องมีการวางแผนการถ่ายโอนอย่างระมัดระวังไปยังจำนวนลูกค้าที่รู้จัก ASP ได้เปลี่ยนกระบวนการแล้ว แอปพลิเคชั่นพื้นฐาน ASP-visual สามารถเปิดได้อย่างง่ายดายสำหรับพนักงานทุกคนพันธมิตรทางธุรกิจและลูกค้าทั้งหมดในท้องถิ่นหรือทั่วโลก
สามารถอธิบายได้ด้วยวิธีนี้ - อีเมลเดียวที่มีไฮเปอร์ลิงก์สามารถขยายฐานผู้ใช้เป็นสิบเท่า แอปพลิเคชันของคุณพร้อมสำหรับสิ่งนี้หรือไม่? วิธีเดียวที่จะรู้คือการทดสอบความแข็งแกร่งบนเว็บไซต์ของคุณเพื่อให้ได้ค่าที่คาดหวังของประสิทธิภาพจริง
คุณควรใช้วัตถุพื้นฐาน Visual ภายใน ASP อย่างไร สร้างและยกเลิกวัตถุของคุณภายในขอบเขตหน้า
นั่นคือทำให้หน้า ASP ไร้สัญชาติมากที่สุดและขึ้นอยู่กับตัวแปรเซสชันหรือแอปพลิเคชันในสถานะชั่วคราว อย่าจัดเก็บวัตถุในเซสชันหรือตัวแปรแอปพลิเคชัน สิ่งนี้ล็อคเธรด ASP ไปยังเซสชันของคุณยกเลิกค่าที่คาดหวังทั้งหมดเพื่อความสามารถในการปรับขนาด กล่าวคือจำนวนผู้ใช้ที่ประมวลผลโดยเว็บเซิร์ฟเวอร์จะไม่เกินผู้ใช้หลายสิบคน หากคุณต้องการจัดเก็บเนื้อหาในเซสชันหรือแอปพลิเคชันให้เป็นข้อมูลแทนที่จะเป็นวัตถุ
มีแนวทางอื่น ๆ อีกมากมายที่ต้องปฏิบัติตาม เราขอแนะนำให้คุณอ่านคอลัมน์“ Servin it it Up” ที่เขียนโดย JD Meier บน MSDN Voices คอลัมน์นี้รวมถึงเทคนิคการปฏิบัติและเคล็ดลับที่หลากหลายที่ช่วยพัฒนาแอปพลิเคชัน ASP และส่วนประกอบที่ปรับขนาดได้และส่วนประกอบ
อย่าเก็บข้อมูลอ้างอิงในวัตถุ VB ในเซสชันหรือแอปพลิเคชัน
ส่วนประกอบ Visual Basic 6.0 ทั้งหมดคือ "หน่วยเธรด" ซึ่งหมายความว่าพวกเขาทั้งหมดทำงานในหน่วย STA ซึ่งหมายความว่าหากวัตถุถูกสร้างขึ้นในเธรดการเรียกทั้งหมดไปยังวัตถุนั้นจะต้องเสิร์ฟโดยเธรดเดียวกัน เธรดจำนวนมาก (จากผู้ใช้เว็บไซต์ที่เกิดขึ้นพร้อมกัน) ใช้อินสแตนซ์เดียวกันของวัตถุ STA ทำให้เกิดกิจกรรมที่สามารถกลายเป็นคอขวดในแอปพลิเคชัน
นอกจากนี้การจัดเก็บออบเจ็กต์ STA ที่สร้างขึ้นด้วย Server.createObject ภายในขอบเขตเซสชันสามารถติดต่อเธรดการดำเนินการกับผู้ใช้ปัจจุบันได้อย่างมีประสิทธิภาพดังนั้นการ จำกัด จำนวนผู้ใช้ที่เกิดขึ้นพร้อมกันสูงสุดของแอปพลิเคชันกับ 20xn เริ่มต้น (n = จำนวนโปรเซสเซอร์)
วิธีการดำเนินงาน
หากคุณทำตามคำแนะนำของเราเพื่อสร้างวัตถุไร้สัญชาติคุณไม่จำเป็นต้องจัดเก็บข้อมูลอ้างอิงสำหรับการนำลูกค้ากลับมาใช้ซ้ำและจัดเก็บไว้ในขอบเขตแอปพลิเคชัน ลูกค้าจะสามารถสร้างใช้และยกเลิกวัตถุของตนเองได้อย่างอิสระ สิ่งนี้จะช่วยลดความจำเป็นในการรักษาวัตถุเฉพาะเซสชันเนื่องจากไม่รักษาสถานะเฉพาะเซสชัน
วิธีที่แนะนำคือทำให้วัตถุไร้สัญชาติซึ่งเข้าถึงฐานข้อมูลหรือพื้นที่จัดเก็บอื่น ๆ (เช่นคุกกี้และ LDAP) เมื่อจำเป็น
หากคุณต้องการใช้เซสชันหรือข้อมูลทั่วทั้งแอปพลิเคชันจัดเก็บข้อมูลแทนที่จะเป็นวัตถุที่ประมวลผลข้อมูลที่นี่ คุณสามารถสร้างคลาสที่ห่อหุ้มการประมวลผลของค่าที่ต้องการ
เรียนรู้เนื้อหาใหม่ใน IIS 5.0
Internet Information Server 5.0 เพิ่มคุณสมบัติใหม่มากมาย การปรับปรุงเหล่านี้ถูกเขียนลงในบทความ MSDN ของ JD Meier: ใช้ ASP ใน IIS 5.0 (ภาษาอังกฤษ)
ข้างต้นเป็นคำอธิบายสั้น ๆ ของบริการแผนกระหว่าง ASP และส่วนประกอบที่ใช้ร่วมกันโดยบรรณาธิการของช่องเทคโนโลยีใหม่ที่ผิดพลาด ฉันหวังว่าคุณจะมีความรู้มากขึ้นเกี่ยวกับแง่มุมนี้ซึ่งจะช่วยในการพัฒนา ASP