فروم تخصصی - پشتیبانی CPSD

نسخه‌ی کامل: اکتیو ایکس چیست ؟
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
ضمن سلام

در بخشهای متوالی اين مقاله سعي خواهد شد كه در خصوص اكتيو ايكس توضيحاتي كامل ارائه بشه تا دوستان آشنايي لازم در خصوص اين تكنولوژي توانمند رو پيدا كنند

در واقع هدف این پست ارائه پاسخ در خصوص این سئوال خواهد بود که :

ActiveX چیست ؟


اكتيو ايكس در واقع يك تكنولوژي انقلابي در تحولات نرم افزاري محسوب ميشه و با عرضه اين تكنولوژي از سوي مايكروسافت ، در واقع تعريفي تازه در حيطه برنامه نويسي ارائه شد كه منجر به افزايش سرعت و كارايي در مباحث توسعه نرم افزاري گرديد

به واسطه اين تكنولوژي ، درنورديدن بسياري محدوديتها ساده تر از قبل شد و در واقع اين تكنولوژي منجر به تعريف ساختاري كاملاً متفاوت و كارآمد در زمينه برنامه نويسي شده

هدف از ارائه اين تكنولوژي آماده سازي يك بستر و الگوي ارتباطي استاندارد جهت برقراي ارتباط بين نرم افزارهاي مختلف هستش

به طور خلاصه ، اكتيو ايكس ها مجموعه اي از كدها و كنترلهاي از پيش نوشته / طراحي شده هستند كه امكاناتي رو در اختيار برنامه نويسان توسعه دهنده قرار خواهند داد كه به واسطه اونها قادر به انجام فعاليتهايي در محيطهاي توسعه هستند ( فرضاً در داخل اكسس و يا VB به عنوان محيطهاي توسعه ) كه يا , اون محيط توسعه به صورت استاندارد و با توجه به امكانات داخليش قادر به انجام اون كارها نيست و يا اينكه انجام اون كارها به واسطه امكانات داخلي ، بسيار زمان بر و طاقت فرساست و برنامه نويس در صورت عدم استفاده از اكتيو ايكس ، مجبور هست كه زمان و انرژی زيادي رو جهت انجام اون كار صرف کنه

اكتيو ايكس ها مشتمل بر دو نوع اصلي ميباشند , اين دو نوع ActiveX Dll و ActiveX COM هستند

اين دو گونه ، جدا از اينكه مرزهاي مشترك وسيعي با هم دارند ولي در حالت كلي اختلافي كه به وضوح مشهود هست در اين نكته متجلي ميشه كه ActiveX COM داراي يك رابط كاربري ديداري هستش و ليكن در ActiveX Dll بدين گونه نيست , توضيحات بيشتري در خصوص اين تفاوت در ادامه ذكر ميشه

منظور از وجود رابط كاربري ديداري رو ميشه بدين گونه تفسير كرد كه تنظيمات ActiveX COM رو ، شما در پنل Properties ميتونيد تغيير بديد و در واقع هر نوع اكتيو ايكسي كه بدين گونه ، قابليت تنظيم پارامترهاي خودش رو دراختيار برنامه نويس قرار بده الزاماً از گونه ActiveX COM خواهد بود , در تصوير نمونه زير شما يك دكمه رو به نمايندگي از اين جامعه , به همراه بخشي از تنظيمات اون در پنل Properties ملاحظه مي كنيد

[تصویر:  ActiveX_COM.png]

البته در بسياري موارد ActiveX COM ها علاوه بر امكان اعمال تنظيمات به روش فوق ، امكان پذيرش بسياري ازتنظيمات رو از طريق كد نويسي هم در اختيار برنامه نويس قرار خواهند داد ( فصل مشترك با ActiveX Dll در همین بخش قرار داره )

ActiveX COM ها معمولاً بر روي فرم ها اضافه شده و شما قادر هستيد پس از اضافه شدن به برنامه ، اونها رو ببينيد وليكن در ActiveX Dll بدين گونه نيست ، ActiveX Dll ها در بخش References به برنامه اضافه شده و شما ميتونيد نام اكتيو ايكس هاي اضافه شده رو در داخل اون بخش ملاحظه كنيد ( به تصوير زير دقت كنيد )

[تصویر:  ActiveX_Dll.png]

امكان برقراري ارتباط با ActiveX Dll تنها از طريق كد نويسي امكان پذير بوده و شما در ActiveX Dll ها شاهد يك محيط كاربري تعاملي كه به واسطه اون امكان درج تنظيمات رو بده نخواهيد بود ( بخشی همچون پنل Properties موجود برای ActiveX COM رو نداره )

به طور نمونه در خصوص ActiveX COM ميتونيم به كنترلهايي همچون : دكمه ها ، چك باكسها ، ديتاگريدها و ... اشاره كرد ، همونطوري كه ملاحظه مي كنيد كليه مثالها ، اشاره به اشيايي دارند كه قابليت ديدن اونها رو داريد

جهت ActiveX Dll هم مي تونيم به مبدل تاريخ شمسي Perian Date Converter و يا قفل نرم افزاري Trial Keeper Professional و نمونه هاي از همين دست اشاره كنيم

توضيح : برخي اكتيو ايكس ها هستند كه تلفيقي از هر دو گونه ActiveX COM و ActiveX Dll بوده و كليه مشخصات فوق رو به صورت يكجا دارا هستند ، در اين حالت اينگونه اكتيو ايكس هايي همچنان با همون عنوان ActiveX COM شناخته ميشوند

شايد براي شما تعجب آور باشه , ولي بزرگترين استفاده كننده از تكنولوژي اكتيو ايكس ، همين ويندوزي هست كه در حال حاضر شما در حال استفاده از اون هستيد ، در واقع ويندوز تركيبي از مجموعه تعداد زيادي اكتيو ايكس در كنار تعداد محدودي فايل اجرايي هستش !

در واقع تصور برنامه نويسي در يك محيط رقابتي ، بدون استفاده از اكتيو ايكس ها ، تصوري هست كه مدتها پيش منسوخ شده

شايد اين سئوال براي شما ايجاد بشه كه مزيت استفاده از اكتيو ايكس ها در چه چيزيه كه تا اين حد فراگير شده ؟!

پایان بخش اول

خدانگهدار
سلام

در این بخش , در خصوص برخی مزایای استفاده از اکتیو ایکس صحبت به میان خواهد اومد

اين امر منتج از چند مزيت عمده هستش كه ماحصل و فرايند خروجي اتكا به اين تكنولوژي بوده و به تبع اون شما هم به عنوان يك برنامه نويس ميتونيد از تبعات خاص اون بهره مند بشيد

اشتراك منابع

يكي از مزاياي استفاده از اكتيو ايكسها ، به اشتراك گذاري منابع هستش ، به شرح اون در ادامه توجه كنيد

فرض ميكنيم كه شما به عنوان يك برنامه نویس , توليد كننده طيفي از محصولات هستيد ، فرضاً توليد كننده سيستم هاي حسابداري ، انبار داري ، فروش و ...

ممكنه شما نياز به استفاده از يك مبدل تاريخ شمسي داشته باشيد ، دو سناريو رو در پيش خواهيم گرفت :

در سناريوي اول ، شما سورس كد مبدل تاريخ شمسي رو در داخل كليه اون نرم افزارها كپي كرده ( در صورت دسترسي به سورس كد ) و اقدام به استفاده از اون ميكنيد

مشكل از نقطه اي شروع ميشه كه شما تغييري در داخل يكي از اين كدها داده و حال براي اعمال همون تغيير در ديگر نرم افزارهاتون مجبور هستيد عين تغييرات رو در داخل اونها هم اعمال كنيد , امري كه ممكنه خالي از اشكال و اشتباه نبوده باشه

در سناريوي دوم ، شما اقدام به استفاده از يك اكتيو ايكس مبدل تاريخ شمسي ميكنيد ( فرضا PDC ) در اين حالت تنها با ارائه نسخه جديد از سوي توليد كننده ، كليه اين تغييرات در تمام نرم افزارهايي كه از اون اكتيو ايكس در حال استفاده هستند داده خواهد شد

در واقع تغییر در یک محل ( تغییر در داخل اکتیو ایکس ) منجر به اعمال همون تغییرات در کلیه نرم افزارهایی که از همون اکتیو ایکس استفاده می کنند خواهد شد

استفاده از اكتيو ايكس ها منجر به كاهش سربار سيستمي نیز شده و روند اجرايي برنامه رو با سهولت بيشتري امكان پذير ميكنه

دسترسي به منابع متنوع تر

اجازه بديد اين مورد رو بدين صورت توضيح بديم كه اكتيو ايكس ها به نوعي رويه اي جهت به اشتراك گذاري توانمندي هاي ديگر برنامه نويسان با شما به عنوان يك برنامه نويس ثالث هستند

در واقع اكتيو ايكس ها اين اجازه رو به شما خواهند داد تا از توان فكري ديگر برنامه نويسان جهت پيشبرد كارهاتون بهره ببريد

میتونیم اكتيو ايكس ها را به نوعي در حكم ابزار و كتابهايي مرجع در نظر بگیریم كه در مواقع لزوم میتونید به اونها رجوع كنيد

در خصوص اين تصميم كه آيا بايد از اكتيو ايكس استفاده کنید و يا نه , نكات زير میتونه در تصميم گيري به شما كمك کنه :

به توان برنامه نويسي خود نيم نگاهي داشته باشيد

اگر در خصوص برنامه نويسي در سطحي مطلوب قرار داريد به گونه اي كه به تنهايي قادر به رفع مشكلات خود هستيد شايد اين احتمال وجود داشته باشه كه نيازي به اكتيو ايكس نداشته باشيد ( نيم نگاهي به مطلب زمان , مندرج در ذيل داشته باشید )

وليكن اگر در خصوص برنامه نويسي در حد متوسط به پايين هستيد و حتي با دسترسي اوليه به يك سورس كد ( فرضا سورس كد مبدل تاريخ ) ، در جرگه افرادي قرار ميگيريد كه قادر به تغيير و رفع نيازهاي جديد خود با توسل به تغيير سورس كد نيستيد , به احتمال بسيار شما در جرگه افرادي قرار ميگيريد كه بايد در خصوص استفاده از اكتيو ايكس ها به شكلي جدي تر بررسي هاي لازم رو به عمل بیارید

ضمن اينكه ، توجه کنید اكتيو ايكس ها تنها منحصر به مبدل هاي تاريخ شمسي نيستند كه سورس كد اونها در دسترس عموم قرار داشته باشه ( بدون بحث بر سر ميزان توانمنديها و ميزان وسعت امكانات سورس كدهاي موجود ) ، پس در برخي موارد اين امكان براي شما وجود نداره كه به سورس كدهايي معادل اكتيو ايكسهاي موجود دست پيدا كنيد

به زمان مورد نياز جهت كد نويسي توجه نماييد

اگر در زمره افرادي قرار میگیرید كه پس از گذشت سالها از اختراع چرخ ، همچنان به دنبال خلق مجدد اون هستيد ، مخاطب اين بخش نبوده و به مطالعه بخشي دیگه بپردازيد !

در ابتداي مبحث به جمله اي از برايان تريسي توجه کنیم :

اگر كسي كاري را از شما سريعتر به انجام ميرساند ، بهاي آن را بپردازيد

امروزه ، در خلق يك محصول ، يكي از فاكتورهاي بسيار مهم , توان اجراي سريع يك درخواست و پاسخگويي به نيازهاي مشتري در كمترين زمان ممكن هستش

بايد باور داشت كه اختلاف تكنولوژي در اين قرن بسيار كاهش پیدا کرده و فاكتورهایي كه بر ميزان موفقيت تاثير گذار هستند متفاوتند

روزگاري بود كه طراحان شركت نوكيا با صرف 1 سال زمان و در آرامش كامل اقدام به عرضه يك تكنولوژي جديد ميكردند ، كه میتونیم دو علت عمده اون رو در كم بودن تعداد رقبا و فاصله تكنولوژيك اين شركت با شركتهاي دیگه دونست ، چرا كه این شرکت مطلع بود که رقبا قادر به انجام اين كار نيستند

ولي آيا امروز بدين باور نرسيدیم كه مدتهاست كه خواب راحت از چشمان مديران اين شركت ربوده شده ، امروز محصولي جديد از سوي اين شركت ارائه میشه ، پس از گذشت يك ماه ، محصولي ذیگه با رفع نواقص اين محصول و با امكاناتي بيشتر از سوي شركت رقيب ارائه میشه و اين سيكل فرسايشي مرتباً در حال تكرار بوده تا زماني كه رقيب از ميدان به در بشه

( فراموش نكنيم روزگاري Alcatel جزو 3 شركت برتر بود ولي امروز کمتر کسی با این برند و محصولات اون آشناست )

در واقع مثال فوق نيم نگاهي بدين مبحث خواهد داشت كه فاكتور زمان و ارائه يك محصول در زماني كمتر , از سوي يك شركت رمز پيروزي و كسب درآمد بيشتر بوده و ليكن كاهش زمان نيز به نوبه خود مستلزم صرف هزينه هايي از سوي شماست , فرضا :

يا بايد توان برنامه نويسي و سرعت اجرايي خودتون رو بالا ببريد و يا اينكه از امكاناتي كه منجر به رخداد اين امر خواهند شد استفاده كنيد , فرضا استفاده از اكتيو ايكس ها

خوشبختانه برخي اكتيو ايكسها ( البته تعداد كمي ) رايگان بوده و برخي ديگر در قبال مبالغي قابل دريافت هستند

مجدداً اگر در گروه افرادي قرار ميگيريد كه حتي تمايلي به استفاده از اكتيو ايكس هاي رايگان ( فرضاً PDC ) هم نداريد ، توصيه میکنم در همين حال حاضر اين صفحه رو بسته و به تايپ نمودن كدهاي خودتون مشغول بشید ( فراموش نكنيد كه 30 ثانيه نيست كه در خصوص زمان صحبت كرديم ، اگر اين مورد رو هم فراموش كرديد !! توصيه اكيد ميكنيم كه كلا برنامه نويسي رو كنار بگذاريد !!!! )

در خصوص علل توجيهي اين مساله كه چرا برخي اكتيو ايكسها رايگان نبوده و شما نيز به كمتر منابعي به صورت سورس كد اونها دسترسي داريد در مبحث آتي صحبت خواهیم کرد به همراه نکاتی بیشتر در این خصوص که اکتیو ایکس ها چگونه به شما در موفقیت بیشتر کمک خواهند کرد به گفتگو می شینیم .

................................................................................​.........


توضیح و پاسخ یک پیغام خصوصی :

ممکنه یک ذهن پرسش گر , تلنگری بزنه و تمام مطالب فوق رو تنها به جهت معرفی و تبلیغ اکتیو ایکس های موجود در داخل خود این سایت بدونه , در این حالت به نکات زیر باید توجه داشت :

1 - شما در داخل سایت CPSD هستید , پس به قطع نمونه هایی که ذکر خواهند شد منتج از محصولات همین سایت هستند , امری که هر عقل سلیمی غیر از اون رو انجام نخواهد داد

2 - یا مشابه این محصولات در خارج از این سایت وجود داره و یا خیر , اگر وجود داشت پس با تکیه بر آموخته های همین مباحث , به فکر تهیه اون محصولات باشید و اگر خیر , میتونید این مطالب رو تنها در حد آموخته هاتون در نظر بگیرید

3 - مطالب فوق با هر برداشتی , موضوعاتی مرتبط با طیفی از محصولات هستش که به اونها اکتیو ایکس میگیم , مستقل از برند , این مطالب شفاف سازی و بستر سازی در خصوص این طیف از محصولات هستش , و در واقع منطبق بر واقعیات موجود هستند , ولیکن به رسم همیشگی برخی واقعیتها با مخالفین و منتقدینی مواجه خواهد شد که البته در نهایت این انتقادها و مخالفتها قادر به تغییر واقعیات نیستند

4 - با پیگیری این مقاله ( تا انتها ) به لزوم بیشتر استفاده از اکتیو ایکس ها پی خواهید برد , حال یا اون اکتیو ایکس محصول CPSD هستش و یا محصول XYZ

پاسخ شما دوست گرامی رو به صورت عمومی دادم تا اگر این ذهنیت برای فردی دیگه هم ایجاد شده , پیشاپیش به پاسخ دسترسی داشته باشند

موفق باشید
با سلامي دوباره

در ادامه مباحث قبلي ، توضيحاتي در خصوص برخي مواردي كه بايد در رابطه با اكتيو ايكسها مد نظر قرار داد ارائه ميكنم

توضيحات رو با تكيه بر اكتيو ايكس قفل گذاري Trial Keeper Professional ادامه خواهم داد

در ابتدا نگاهي آماري به بخش كدينگ داخلي اين محصول خواهيم داشت

[تصویر:  TKP_Source.png?]

اين محصول همونطوري كه ملاحظه مي كنيد ، در ويرايش 1.6.0 تقريباً مشتمل بر 21000 خط كدنويسي بوده كه وظيفه انجام وظايف محوله رو به عهده دارند

اين حجم از كد نويسي جداي از پيچيدگي ، بايد به گونه اي سازماندهي بشه تا قفل بتونه وظايف محوله رو در حالتي مناسب به انجام برسونه

سئوال : اگر فرض كنيم كه كل اين كدينگ در قالب يك جزوه در اختيار شما قرار داده بشه و شما تنها بايد اقدام به تايپ اونها كنيد ، تصور مي‌كنيد به چقدر زمان نياز داريد !؟

آيا تصور ميكنيد هميشه اين امكان وجود داره كه به يك سورس كد دسترسي داشته باشيد و به راحتي با يك Copy/Paste بتونيد از اون استفاده به عمل بياريد ؟!

به قطع پاسخ خير خواهد بود

يك سئوال به ذهن خطور خواهد كرد و اون هم اينكه چرا اينگونه سورس كدهايي به صورت متن باز در فضاي اينترنت وجود ندارند و مواردي هم كه وجود داره هر يك تنها به بخشي جزئي اشاره داشته و تمامي ابعاد مورد نياز رو پوشش نميدن ؟

در پاسخ به موارد زير بايد اشاره داشت :

اول : يك واقعيت وجود داره و اون هم اينكه علوم كامپيوتر به حدي وسيع شدند كه امكان تسلط بر تمامي شاخه هاي اون ميشه گفت ، كاملاً غير ممكنه ، در همين راستا برنامه نويسان در كنار كارهاي عمومي اقدام به انتخاب بخشهايي به عنوان شاخه هاي تخصصي فيلد كاري خودشون ميكنند

قاعدتاً ورود به صورت تخصصي به يك فيلد كاري الزامات و نيازمنديهايي داره كه از اون جمله ميتونيم به صرف زمان بسيار ، مطالعه منابع مختلف و سعي و تلاش جهت غلبه بر مشكلات جديد اشاره كرد

در واقع ميشه گفت هيچ تخصصي بدون صرف منابع فوق قابل دستيابي نبوده و نخواهد بود

اين نكته مبين اين امر خواهد بود ، كه كمتر كسي ميتونه نتيجه اين زحمات رو به صورت رايگان و عمومي در اختيار ديگران قرار بده ( تقريباً هيچ كس )

دوم : ارزش برخي كدينگها خصوصا در مباحث امنيتي تنها تا زماني هست كه اين كد به صورت عمومي در نيومده

همونطوري كه ميدونيد ، كركرها جهت نفوذ به يك سيستم ، اقدام به تحيل رفتارهاي كدنويسي نموده تا بتونند با ايجاد خلل در پروسه اجرايي ، به مقاصد خودشون برسند

تصور ميكنم در اين نكته هم نظر باشيم كه در دسترس بودن سورس كد تا چه حد زيادي ميتونه كار يك كركر رو در زمينه نفوذ به يك سيستم امنيتي راحت كنه

اين امر مشابه در اختيار قرار دادن كليه نقشه هاي امنيتي و حتي شماره رمز گاو صندوق يك بانك در دست يك سارق هستش ، فكر ميكنيد در اين حالت چه چيزي ميتونه در يك سرقت به موقع ، جلوي سارق رو بگيره !؟؟

بر همين مبنا ارائه سورس كدهاي امنيتي كه تا حدودي هم موثر باشند ، ميشه گفت هرگز به صورت يك امر متعارف مشاهده نشده و نمونه هاي موجود تنها به صورت نمادين اقدام به معرفي اصول كلي ميكنند

سوم : برنامه نويسي در اين دوره به صورت يك شغل محسوب ميشه ؛ ميزان درآمد هم نسبت مستقيم با موارد زير داره :

- تا چه حد در ارائه يك محصول جديد ميتونيد سرعت عمل داشته باشيد
- تا چه حد در ارائه ايده هاي جديد پيش قدم هستيد
- تا چه حد با ديگر محصولات رقبا تمايز داريد
- تا چه حد در انجام كارتون مسلط هستيد
و ....

در واقع نميشه انتظار داشت كه يك شركت و يا شخص ثالت اقدام به عرضه عمومي تمامي تفكرات ، ايده ها و تكنيكهاي كاربردي خودش داشته باشه

آيا تاكنون به سورس كد Windows , Photoshop و ديگر محصولات از اين دست دسترسي داشتيد ؟ قطعا خير

فراموش نكنيم در سال گذشته ، افشا شدن سورس كد آنتي ويروس Kaspersky از طريق يكي از كارمندان اخراجي اين شركت ، به چه معظلي براي اين شركت تبديل شد و چه هزينه سنگيني رو به اين شركت تحميل كرد

هيچ برنامه نويسي كه به صورت تخصصي وارد يك فيلد كاري ميشه ، اقدام به انتشار سورس كدهاي خودش به صورت شفاف نميكنه و تنها تا حدودي ميتونه نقشه كلي راه رو ترسيم كنه

چهارم : فراواني سورس كدها رابطه مستقيمي هم با ميزان منابع موجود دارند

شايد به اين نكته تا اين لحظه زياد هم توجه نكرده باشيد

انسانها معمولا چيزهايي رو كه بيشتر در دسترس هستند ، راحت تر به همديگه مِي بخشند !

گشتي در فرومهاي برنامه نويسي بزنيد تا متوجه اين موضوع بشيد
سئوالاتي كه رد و بدل ميشند اكثرا از سوي طيفي مطرح شدند كه يا حوصله انجام دادن اون كار رو به تنهايي ندارند و به فرومها به محلي به عنوان يك حل المسائل عمومي نگاه ميكنند و يا واقعاً به منابع لازم در خصوص حل مشكل دسترسي ندارند (‌فرضا كتب برنامه نويسي )
اين طيف در واقع برخي پاسخ دهنده ها رو ملزم ميكنند كه از داخل كتابهاشون و يا ديگر منابعي كه به اونها دسترسي دارند ، پاسخ رو براي اونها درج كنند

بر همين اساس اگر مطلبي در كمتر كتابي به اون اشاره شده باشه ، قطعاً در فضاي آموزش مجاري ( فروم - وبلاگ و ... ) هم مطالبي بسيار كمتر در خصوص اونها قابل مشاهده خواهد بود كه از اون طيف ميشه به مباحث امنيتي اشاره داشت كه به تفصيل در خصوص علل نقصان مطالب آموزشي اين بخش توضيح داده شد

حتما اين سئوال در ذهنتون نقش بسته كه ارتباط اين مسائل با اكتيو ايكس ها در چه چيزيه ؟

پاسخ مجددا در موارد زيرخلاصه ميشه :

- اكيتو ايكسها ، معمولا در خصوص مباحث تخصصي بوده كه منابع لازم در خصوص كدينگ داخلي اونها به صورت محدود در دسترسه
- اكتيو ايكسها معمولا شامل حجم بسيار زيادي از كدنويسيها هستند كه زمان بسيار زيادي صرف طراحي اونها شده
- اكتيو ايكسها چون به شما در خصوص حل مشكلات با سهولت بسيار و كاهش هزينه و زمان كمك ميكنند پس معمولا به صورت رايگان نيستند


خدانگهدار