Scientific Information

زندگي تكثير ثروتی است كه نامش محبت است

API چیست؟
ساعت ۸:٢٠ ‎ب.ظ روز پنجشنبه ۳ بهمن ۱۳۸٧  

با توجه به بحثهایی که مطرح شد جهت افزایش اطلاعات این نوشته را در اینجا قرار میدهم تا مورد استفاده همگان قرار گیرد. از کلیه دوستانی که در این مورد اطلاعاتی دارند خواهش میکنم در صورت برخورد با هر اشکال و نقصی جهت تکمیل موضوع نظرات خود را نیز در این صفحه قرار دهند، پیشاپیش از توجه همه دوستان تشکر می کنم.

مباحثی که در این صفحه مطرح میشوند شامل توضیحاتی درباره رابط برنامه نویسی کاربردی (API) و موارد مربوطه میباشند. لازم به ذکر است که سعی شده است مسائل در حد امکان ساده و قابل هضم برای کلیه سطوح باشند و احتمالا برای دوستانی که به صورت حرفه ای در زمینه برنامه نویسی فعالیت دارند سطحی و غیر قابل استفاده هستند.

-
API چیست؟
حروف A.P.I. در واقع مخفف عبارت Application Programming Interface است. اگر در دایرکتوری سیستم ویندوز نگاهی بیاندازیم (در ویندوزهای برپایه 95/98 در آدرس \Windows\System و در ویندوزهای مبتنی بر NT در آدرس \WinNT\System32) تعدادی فایل کتابخانه ای dll (Dynamic Link Library) مشاهده میکنیم. این فایلها مجموعه توابعی را تشکیل میدهند که برای اجرای سیستم عامل، تامین رابط کاربر (User Interface) و محیط کاربری استفاده میشوند. این مجموعه فایلها در واقع Windows API را تشکیل میدهند.
هدف Windows API این است که به برنامه نویسان اجازه داده شود تا برنامه هایی مبتنی بر سیستم عامل ویندوز و رابط کاربری آن تولید گردند. در واقع به جای اینکه هر کس با توجه به سلیقه های شخصی کدهایی جهت تولید اجزاء اصلی ویندوز همچون فرمها، کلیدها، منوها و ... تنظیم کند، همه برنامه نویسان میتوانند توابع اختصاص داده شده مرتبط را که در Windows API وجود دارند صدا کنند و به سیستم عامل اجازه دهند تا آن اجزاء را ایجاد کند.
اهداف توابع API و نحوه استفاده از آنها در پلت فرم SDK (Software Development Kit) آمده است (دوستانی که شیوه های قدیمی برنامه نویسی برای ویندوز را میشناسند حتما با این کیت آشنا هستند) و از طریق اسناد مربوطه قابل دسترسی هستند. به عنوان مثال در پکیج MSDN (MicroSoft Developer Network) ویا در کمک دلفی بخش Windows SDK میتوانیم لیست این توابع را مشاهده کنیم. علاوه بر اینها امکان دستیابی به این اطلاعات از طریق آدرس زیر نیز وجود دارد:
http://support.microsoft.com/default...uplauncher.htm

دقت شود نحوه صدا زدن این توابع در زبانهای برنامه نویسی مختلف متفاوت است اما اصول کار در تمامی آنها یکسان است.

-
چرا از Windows API استفاده میکنیم؟
برنامه نویسان اصولا با هدف اجرای عملیاتی فراتر از آنچه که محیطهای مختلف در حالت استاندارد خود ارائه میکنند به استفاده از توابع API روی می آورند.
به عنوان مثال فرض کنیم زمانی که بخواهیم به محض ایجاد فوکوس بر روی یک Edit Box زبان نوشتاری به فارسی تغییر کند و به محض اینکه فوکوس تغییر کرد زبان کاربری هم به حالت عادی بازگردد. استفاده از این توابع در مسائل پیچیده تر گاها بسیار مفید میباشد.

-
چگونه توابع API را صدا کنیم؟
با توجه به اینکه این مطلب به زبان برنامه نویسی خاصی اختصاص ندارد از این جهت در این بخش تنها اشاره ای به نحوه کار با توابع Windows API میشود.
به همراه کلیه کامپایلرها و مترجم های ارائه شده در بازار که قابلیت استفاده از توابع Windows API را دارند اسنادی در رابطه با نحوه استفاده از این توابع وجود دارد که برنامه نویس میتواند با مراجعه به آنها با شیوه کار و صدا زدن توابع مورد بحث آشنا شود.
نکته مشترک بین محیطهای مختلف اینست که برای استفاده از این توابع ابتدا نیاز به وجود بخشی جهت تعریف این توابع هست و سپس امکان صدا زدن آنها در بین برنامه ایجاد میگردد. یعنی کار با این توابع دو مرحله دارد:
-
تعریف مشخصات تابع مربوطه
-
صدا زدن تابع مورد نظر در هر جای برنامه درست همانند دیگر توابع استاندارد

API Wrappers
شاید بیان چنین عنوانی به صورت مستقل چندان منطقی و قابل قبول نباشد اما چون چنین کلماتی در متون مختلف مورد استفاده قرار گرفته و میگیرند، توضیحاتی که به درک این مفاهیم کمک کنند میتوانند مفید باشند.
همانگونه که گفته شد امکان تولید کلیه اجزاء استاندارد سیستم عامل ویندوز از طریق صدا زدن توابع Windows API وجود دارد، اما صدا زدن مستقیم این توابع کد برنامه را پیچیده میکند و امکان تولید خطاهای غیرقابل پیش بینی را افزایش میدهد که ایجاد خطاهای سیستمی میکنند و حتی احتمال ضربه زدن به سیستم نیز وجود دارد.
از این رو در نرم افزارهای برنامه نویسی محیطهایی تولید شده اند تا برنامه نویسان را در این امر یاری دهند. کامپایلرهای Delphi و CBuilder و همچنین مترجم Visual Basic و ... همراه خود محیط رابطی دارند که کاربر از طریق آنها به اجزاء استاندارد طراحی دسترسی دارد.
به این صورت برنامه نویس برای تولید اجزاء در برنامه خود نیاز به نوشتن کدهای طولانی ندارد. در این محیطها توابع مورد نیاز برای ایجاد یک جزء کامل یک جا جمع شده اند و در یک مجموعه قرار گرفته اند و کاربر به راحتی تنها به این مجموعه اشاره میکند.
این مجموعه یک API Wrapper است.
اصولا Wrapperها اختصاصا به اجزاء گرافیکی آنگونه که در بالا گفته شد اطلاق نمیگردند. هر مجموعه ای مانند: یک ActiveX، یک Component یا یک تابع ایجاد شده در یک فایل dll و ... میتواند یک API Wrapper باشد.
در حالتی چنین مجموعه هایی در دسترس باشند پیشنهاد شده که از آنها استفاده شود.

نکته: دقت شود تفاوتهایی میان نسخه های مختلف API وجود دارد، مثلا هنگام کار با ویندوز2000 باید دقت کرد گاهی تفاوتهایی بین توابع API مرتبط با آن و توابع ویندوز 98 وجود دارد.

در پایان توصیه میشود در استفاده از توابع Windows API در برنامه ها محتاط باشید و پیش از استفاده اسناد راهنمای تابع مورد نظر خود را به دقت مطالعه کنید.

موفق باشید ...