ฉันมักจะอ้างถึง DLL ในรหัส C # ของฉัน แต่ก็ยังคงเป็นปริศนาอยู่ซึ่งฉันอยากจะชี้แจง นี่คือคำถามประเภทต่างๆเกี่ยวกับ DLL
ฉันเข้าใจว่า DLL คือไลบรารีที่เชื่อมโยงแบบไดนามิกซึ่งหมายความว่าโปรแกรมอื่นสามารถเข้าถึงไลบรารีนี้ในขณะทำงานเพื่อรับ "ฟังก์ชัน" อย่างไรก็ตามให้พิจารณาโครงการ ASP.NET ต่อไปนี้ที่มีWeb.dll
และBusiness.dll
( Web.dll
คือฟังก์ชันส่วนหน้าและอ้างอิงถึงBusiness.dll
ประเภทและวิธีการ)
สิ่งที่จุดไม่
Web.dll
ไดนามิกเชื่อมโยงไปยังBusiness.dll
? คุณสังเกตเห็นจำนวนมากใน Windows HDD thrashing สำหรับงานที่ดูเหมือนเล็กเมื่อใช้ Word (ฯลฯ ) และฉันคิดว่า Word กำลังจะปิดและเชื่อมโยงฟังก์ชันการทำงานจาก DLL อื่น ๆ แบบไดนามิกหรือไม่?1a. นอกจากนี้สิ่งที่โหลดและเชื่อมโยง DLL - OS หรือกรอบเวลาทำงานบางอย่างเช่น. NET framework?
1b. กระบวนการ "เชื่อมโยง" คืออะไร? มีการตรวจสอบความเข้ากันได้หรือไม่ กำลังโหลดลงในหน่วยความจำเดียวกันหรือไม่? การเชื่อมโยงหมายถึงอะไร?
อะไรเรียกใช้โค้ดใน DLL ได้จริง? โปรเซสเซอร์ได้รับการดำเนินการหรือมีขั้นตอนอื่นของการแปลหรือการคอมไพล์ก่อนที่โปรเซสเซอร์จะเข้าใจโค้ดภายใน DLL หรือไม่
2a. ในกรณีของ DLL ที่สร้างขึ้นใน C # .NET สิ่งนี้กำลังเรียกใช้สิ่งนี้:. NET framework หรือระบบปฏิบัติการโดยตรง?
DLL จาก Linux ทำงานบนระบบ Windows หรือไม่ (หากมีสิ่งนั้นอยู่) หรือเป็นระบบปฏิบัติการเฉพาะ
DLL มีเฉพาะสำหรับเฟรมเวิร์กเฉพาะหรือไม่ DLL ที่สร้างโดยใช้ C # .NET สามารถใช้โดย DLL ที่สร้างขึ้นด้วยเช่น Borland C ++ ได้หรือไม่
4a. ถ้าคำตอบของ 4 คือ "ไม่" แล้ว DLL คืออะไร? เหตุใดเฟรมเวิร์กต่างๆจึงไม่ใช้รูปแบบของตัวเองสำหรับไฟล์ที่เชื่อมโยง ตัวอย่างเช่นไฟล์. exe ที่สร้างขึ้นใน. NET รู้ว่าไฟล์ประเภท. abc เป็นสิ่งที่สามารถเชื่อมโยงเป็นรหัส
จะกลับไป
Web.dll
/Business.dll
เช่น - จะได้รับประเภทชั้นเรียนของลูกค้าที่ฉันจำเป็นต้องอ้างอิงจากBusiness.dll
Web.dll
ซึ่งต้องหมายความว่าBusiness.dll
มีข้อกำหนดบางอย่างเกี่ยวกับคลาสลูกค้า ถ้าฉันรวบรวมBusiness.dll
ไฟล์ไว้แล้วให้พูดว่า Delphi: C # จะเข้าใจและสามารถสร้างคลาสลูกค้าได้หรือไม่หรือมีข้อมูลส่วนหัวบางประเภทหรือบางอย่างที่ระบุว่า "เดี๋ยวก่อนขอโทษคุณสามารถใช้ฉันจาก Delphi DLL อื่นเท่านั้น" เหรอ?5a. เช่นเดียวกับวิธีการ; ฉันสามารถเขียน
CreateInvoice()
วิธีการใน DLL รวบรวมใน C ++ จากนั้นเข้าถึงและเรียกใช้จาก C # ได้หรือไม่ อะไรที่หยุดหรืออนุญาตให้ฉันทำสิ่งนี้ในเรื่องของการจี้ DLL แน่นอนว่า DLL ทดแทน (ไม่ดี) ต้องมีลายเซ็นและประเภทของวิธีการที่แน่นอนเหมือนกับที่ถูกแย่งชิง ฉันคิดว่านี่คงไม่ใช่เรื่องยากที่จะทำหากคุณสามารถหาวิธีการที่มีอยู่ใน DLL ดั้งเดิม
6 ก. มีอะไรในโปรแกรม C # ของฉันกำลังตัดสินใจว่าฉันสามารถเข้าถึง DLL อื่นได้หรือไม่ หาก DLL ที่ถูกไฮแจ็กของฉันมีวิธีการและประเภทเดียวกันกับต้นฉบับ แต่ถูกคอมไพล์เป็นภาษาอื่นจะใช้งานได้หรือไม่
การนำเข้า DLL และการลงทะเบียน DLL คืออะไร?