1. مقدمة
بيئة تشغيل البرنامج النصي من جانب الخادم بسيطة وسهلة الاستخدام، ولا تتطلب التجميع والاتصال، ويمكن تشغيل البرامج النصية مباشرة على جانب الخادم، وهي تدعم المستخدمين المتعددين والخيوط المتعددة، وقد تم استخدامها على نطاق واسع في تطوير الويب. تختلف المكونات من جانب الخادم عن المكونات من جانب العميل. يتم نقل المكونات من جانب العميل عبر الشبكة، وتعتمد على HTML لتعمل، وتكون متاحة فقط على IE. لكن المكون من جانب الخادم يعمل على جانب الخادم وينفذ عمليات مختلفة على الخادم. لذلك يمكن لجميع المتصفحات الاستمتاع به، ويعتمد على الخادم بدلاً من المتصفح. ومع ذلك، نظرًا لأن البرامج النصية لـ ASP بتنسيق نص عادي، يمكن للجهات الفاعلة الضارة بسهولة رؤية محتوى الصفحة الذي لا ينبغي لها رؤيته من خلال التعليمات البرمجية المصدر. ولذلك، فإن حماية كود مصدر ASP أمر مهم للغاية. لا يؤدي تغليف تعليمات ASP البرمجية في ملف DLL إلى تسريع تنفيذ تعليمات ASP البرمجية فحسب، بل يحمي أيضًا التعليمات البرمجية الأصلية. عندما يُطلب من IIS تنفيذ برنامج ASP، فسيقوم أولاً بالعثور على الرمز بين العلامات في ملف ASP وتنفيذه (يمكن أيضًا أن يكون الرمز بين). إذا تم استدعاء برنامج ASP هذا من قبل، فسوف يستخدم البرنامج المترجم في الذاكرة لإرجاع تعليمات HTML البرمجية إلى المستخدم. وإذا لم يكن الأمر كذلك، فسيتم إعادة الترجمة. وهذا يوفر موارد الخادم بشكل كبير.
2. طريقة التنفيذ
ابدأ تشغيل VB الخاص بك وحدد رمز ActiveX. يمكن العثور على هذا الرمز في المشروع الجديد! سيوفر VB اسم المشروع الافتراضي (project1) واسم الفئة (class1). قبل البدء، يرجى التأكد أولاً من أن لدينا مكتبة Microsoft ActiveX Data Object 2.0، وهي مفيدة جدًا في برنامجنا. حدد "مشروع" من القائمة، ثم حدد "مرجع" هناك، وستظهر نافذة "مرجع"، حدد مكتبة Microsoft ActiveX Data Object 2.0.
الآن لدينا مشروعنا الخاص (project1) واسم الفئة (class1). سوف نستخدم أسمائهم للإشارة إلى هذا المكون في كود ASP في المستقبل. في ASP نقتبسها على النحو التالي:
Set ObjReference = Server.CreateObject("ProjectName.ClassName")
لاستخدام أساليب ASP في فئة ما، يجب عليك كتابة وظائف التهيئة والإنهاء في هذه الفئة. أدخل الكود التالي: في قائمة البرامج
Private Sub Class_Initialize() وPrivate Sub Class_Terminate() في Class1.cls
بتحويل الوظائف الرئيسية في كود ASP إلى مكتبة الارتباط الديناميكي (.dll)، مما يؤدي إلى إخفاء كود مصدر ASP جزئيًا. على سبيل المثال: الكود الذي تم إدخاله في Global.bas وClass1.cls في قائمة البرنامج (الوظيفة الرئيسية للكود هي استرجاع السجلات في قاعدة البيانات وعرضها).
حدد ملف → إنشاء Article.dll → حدد الدليل الذي تريد حفظه في القائمة المنسدلة لـ VB. ابحث عن ملفarticle.dll وانسخه إلى المجلد system32 على قرص النظام، والخطوة الأخيرة هي تسجيل ملف DLL. حدد "تشغيل" في قائمة "ابدأ" وأدخل regsvr32 c:winntsystem32article.dll.
3.
الكود الموجود في قائمة البرامج Global.bas:
objContext العامة كـ ObjectContext
التطبيق العام كـ ASPTypeLibrary.Application
الخادم العام كـ ASPTypeLibrary.Server
الجلسة العامة كـ ASPTypeLibrary.Session
الاستجابة العامة كـ ASPTypeLibrary.Response
الطلب العام كـ ASPTypeLibrary.Request
الكود في Class1.cls:
خاص Sub Class_Initialize ()
عند حدوث خطأ في استئناف المجموعة التالية
objContext = GetObjectContext
Set Application = objContext.Item("Application")
Set Server = objContext.Item("Server")
Set Session = objContext.Item("Session")
Set Request = objContext .Item("Request")
تعيين الاستجابة = objContext.Item("Response")
End Sub
Private Sub Class_Terminate()
عند حدوث خطأ، استئناف
تطبيق المجموعة التالية = لا شيء
محدد الخادم = لا شيء
محدد الجلسة = لا شيء
محدد الطلب = لا شيء
محدد الاستجابة = لا شيء
محدد objContext = لا شيء
End Sub
public Sub AspClassInit()
عند ظهور خطأ GoTo Err
conn = Server.CreateObject("ADODB.Connection")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("Article .mdb")
conn.Open strcon
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "اختر * من ترتيب المقالة حسب وصف معرف المقالة"
rs.Open sql, conn, 1, 1
Response.Write "<html> " & vbCrLf
Response.اكتب "<head>" وvbCrLf
Response.Write "<meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312"">" & vbCrLf
Response.اكتب "<title>نظام إدارة المقالات-CSSTUDIO</title>" & vbCrLf
Response.اكتب "</head>" وvbCrLf
Response.اكتب "<body bgcolor=""#FFFFFF"" topmargin=""0"">" & vbCrLf
الاستجابة.اكتب "<عرض الجدول = ""100%"" الحدود = ""0"" حشو الخلايا = ""2"" تباعد الخلايا = ""0"">" & vbCrLf
Response.اكتب " <tr>" & vbCrLf
Response.اكتب " <td width=""742"" height=""20"">عنوان المقالة</td>" & vbCrLf
Response.اكتب " <td width=""90"">انقر</td>" & vbCrLf
Response.اكتب " <td width=""145"">إضافة تاريخ</td>" & vbCrLf
Response.اكتب "</tr>" & vbCrLf
الاستجابة.اكتب "</table>" وvbCrLf
بينما ليس rs.EOF والصفوف < rs.PageSize
الاستجابة.اكتب "<عرض الجدول = ""100%"" الحدود = ""0"" تباعد الخلايا = ""0"" cellpadding = ""0"">" & vbCrLf
Response.اكتب " <tr>" & vbCrLf
Response.Write " <td width=""747"" height=""20"">☆<a href=""view.asp?id="
Response.Write rs("معرف المقالة")
Response.اكتب """>" & vbCrLf
الرد.اكتب " "
الاستجابة.كتابة rs("العنوان")
Response.اكتب "</a></td>" وvbCrLf
الاستجابة.اكتب " <td width=""94"">"
الاستجابة.كتابة rs("انقر")
Response.اكتب "</td>" وvbCrLf
الاستجابة.اكتب "<td width=""148"">"
Response.Write rs("إضافة تاريخ")
Response.اكتب "</td>" وvbCrLf
Response.اكتب "</tr>" & vbCrLf
الاستجابة.اكتب "</table>" وvbCrLf
rs.MoveNext
ويند
Response.اكتب "</body>" وvbCrLf
Response.Write "</html>" & vbCrLf
rs.Close
Set rs = لا شيء
conn.Close
Set conn = لا شيء
Exit Sub
خطأ:
إذا كان رقم الخطأ = -13572468، فقم بالخروج من السيرة الذاتية
الفرعية التالية
والنهاية الفرعية
التعليمات البرمجية في ملف Index.asp بعد استخدام Article.dll:
<%Dim AspTransBuilderObject
مجموعة AspTransBuilderObject = Server.CreateObject("article.Class1")
AspTransBuilderObject.AspClassInit
تعيين AspTransBuilderObject = لا شيء%>
التعليمات البرمجية في ملف Index.asp قبل استخدام Article.dll:
<% Set conn=Server.CreateObject("ADODB.Connection")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"مصدر البيانات =" & Server.MapPath("Article.mdb")
conn.Open strcon %>
<% Set rs = Server.CreateObject ("ADODB.Recordset")
sql="select * from Article order by ArticleID desc"
rs.Open sql, Conn,1,1 %>
<أتش تي أم أل>
<الرأس>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>نظام إدارة المقالات-CSSTUDIO</title>
</الرأس>
<body bgcolor="#FFFFFF" topmargin="0">
<عرض الجدول = "100%" الحدود = "0" خلية الحشو = "2"
تباعد الخلايا = "0">
<تر>
<td width="742" height="20">عنوان المقالة</td>
<td width="90">انقر</td>
<td width="145">إضافة تاريخ</td>
</tr>
</الجدول>
<% بينما ليس Rs.Eof والصفوف<Rs.PageSize %>
<عرض الجدول = "100%" الحدود = "0" تباعد الخلايا = "0"
الحشو الخلوي = "0">
<تر>
<td width="747" height="20">☆<a href="view.asp?id=<%
= rs("معرف المقالة") %>">
<% =rs("title") %></a></td>
<td width="94"><% = rs("click") %></td>
<td width="148"><% = rs("تاريخ الإضافة") %></td>
</tr>
</الجدول>
<% Rs.MoveNext
وند٪>
</الجسم>
</html>
<% رس.كلوز
تعيين RS=لا شيء
conn. Close
اضبط conn = لا شيء %>
4. الاستنتاج
نظرًا لأن هذه الرموز تعمل على جانب الخادم، فلا يحتاج العميل إلى تثبيت أي شيء. وهذا مجرد مثال صغير لما يمكن تحقيقه باستخدام ActiveX DLLs. يمكنك كتابة مكونات أكبر حجمًا، ويمكنك أيضًا استخدام العديد من عناصر التحكم في VB. دعونا نستخدم المكونات لتوسيع وظائف برنامجنا، وآمل أيضًا أن أرى المزيد من المكونات من شعبنا الصيني. آمل أن تكون هذه المقالة بمثابة نقطة انطلاق.