أدت سنوات المنافسة بين المتصفحات المختلفة إلى إنشاء العديد من الأدوات لمساعدة المطورين على إنجاز المهام التي كان من الصعب القيام بها في السابق. الآن، باستخدام برنامج نصي صغير، يمكنك إنشاء تطبيق يربط البيانات بعنصر تحكم المستخدم بحيث يتصل بالخادم من خلال عنصر تحكم مضمن من نوع الوكيل.
في Internet Explorer (IE)، تتضمن هذه الجزر بيانات XML، والتي تُستخدم لربط البيانات بعناصر النموذج، وكائنات XMLHTTP، التي تُستخدم لإنشاء اتصالات بالخادم داخل الصفحة الحالية دون الانتقال إلى صفحات أخرى متزامنة وغير متزامنة . سأستخدم هاتين الميزتين سهلتي الاستخدام لإنشاء تطبيق دردشة بسيط، والذي يتكون من بعض صفحات ASP التي تعمل كواجهة مستخدم، وJavaScript لتنفيذ وظائف العميل، وT-SQL لإكمال منطق الأعمال في SQL Server 2000.
يتواصل العميل والخادم باستخدام XML. بعد أن يتلقى خادم الويب مجموعة رسائل، يتم إلحاق مجموعة الرسائل بجدول الرسائل ذو الطابع الزمني في SQL Server. واستنادًا إلى فترة زمنية محددة مسبقًا، سيطلب العميل معلومات محدثة من الخادم، بما في ذلك قائمة الرسائل وقائمة المستخدمين المتصلين الملحقين بقاعدة البيانات منذ آخر مرة طلب فيها معلومات من الخادم.
سيقوم العميل بإرسال <action/> إلى الخادم عبر كائن XMLHTTP. يكون الإجراء إما طلبًا لتحديث الرسالة وقائمة المستخدمين، أو إرسال رسالة جديدة. يتم تخزين هذه الإجراءات في جدول يسمى الإجراءات. سوف يستجيب الخادم للطلب المقابل أو يقبل رسالة جديدة ويلحقها بجدول الرسائل.
عندما يستجيب الخادم لطلب رسالة، فإنه يعرض قائمة بجميع الرسائل الجديدة منذ آخر طلب. من أجل تتبع نشاط العميل، أستخدم جدول النشاط الذي يحتوي على تاريخ ووقت نشاط العميل، ويتم تخزين هوية العميل في مقابض الجدول، والتي لها اسم بديهي.
ما يلي هو البرنامج النصي لإنشاء جدول:
CREATE TABLE [dbo].[ACTIONS] (
[action_id] [int] الهوية (1، 1) ليست فارغة،
[اسم_العمل] [فارتشار] (50) NULL،
[action_descr] [varchar] (255) NULL
) تشغيل [الابتدائي]
انتقل إلى
إنشاء جدول [dbo].[النشاط] (
[handle_id] [int] NULL،
[وقت_العمل] [التاريخ والوقت] فارغ
) تشغيل [الابتدائي]
انتقل إلى
إنشاء جدول [dbo].[المقابض] (
[handle_id] [int] الهوية (1، 1) ليست فارغة،
[مقبض] [nvarchar] (63) NULL
) تشغيل [الابتدائي]
انتقل إلى
إنشاء جدول [dbo].[الرسائل] (
[msg_id] [int] الهوية (1، 1) ليست فارغة،
[رسالة] [nvarchar] (255) NULL ,
[action_id] [int] NULL ,
[action_time] [datetime] ليس فارغًا
) ON [PRIMARY]
سيتم إكمال جميع عمليات البيانات من خلال الإجراءات المخزنة. سيتم إجراء جميع عمليات ربط البيانات من خلال COM عام يعمل كحلقة وصل بين خادم الويب وSQL Server 2000. يعرض كائن COM طريقة RunSPReturnStream التي أريد استخدامها. المعلمة الأولى لهذه الطريقة هي اسم الإجراء المخزن، والمعلمة الثانية عبارة عن صفيف من صفائف المعلمات. مصفوفة المعلمات عبارة عن مصفوفة بسيطة بالتنسيق التالي: (paraName، paramType، paramLength، paramValue). يعد paramType أحد تعدادات نوع معلمة ADO. صفحة ASP مسؤولة عن قبول الإجراءات وإنشاء الاستجابات، وسأسميها HandleAction.asp.
ستحتوي صفحة الدردشة على منطقة لعرض رسائل الدردشة؛ وهذه المنطقة عبارة عن جدول موجود في DIV. يرتبط هذا الجدول بجزيرة بيانات xmlMessages XML. تعرض منطقة أخرى المستخدم الحالي؛ وهذه المنطقة هي أيضًا جدول موجود في DIV، وهو مرتبط بجزيرة بيانات xmlUsers XML. هناك أيضًا TEXTAREA للمستخدمين لإدخال الرسائل.
-------------------------------------------------- ----------------------------------
مؤلف هذا المقال: فيليب بيركنز هو أحد المقاولين لدى شركة Ajilon Consulting. وتتراوح خبرته من التحكم في الجهاز والعميل/الخادم إلى تطبيقات الإنترانت.