واسط برنامهنویسی کاربردی (API) و SDK در دوربین های مداربسته
در حالی که واسط برنامهنویسی کاربردی (API) (Application Programming Interfaces) برای پلتفرم های باز نقش کلیدی دارند، اما بیشتر اوقات در مباحث امنیت فیزیکی درک درستی از آن ها وجود ندارد و به شکل اغراق آمیز به آن پرداخته می شود. در شرایطی که واسط برنامهنویسی کاربردی (API) می توانند مزایای بسیاری به همراه داشته باشند، استفاده از آن ها بسیار پیچیده تر از آن چیزی است که معمولا در تماس های فروش و مجلات گفته می شود.
هدف واسط برنامهنویسی کاربردی (API) در امنیت فیزیکی ایجاد امکان همکاری برای سیستم های مختلف است. مثال هایی از این همکاری ها عبارتند از:
- یکپارچه سازی دوربین های IP یا ابزارهای تحلیلی با VMS.
- یکپارچه سازی DVRو NVR با سیستم کنترل دسترسی.
- یکپارچه سازی سیستم هشدار با سیستم نظارت مرکزی.
- ساخت یک سیستم PSIM که با تمام سیستم های امنیتی یکپارچه می شود.
بیشتر مواقع نام APIها را در مباحث پیش از فروش می شنوید. جایی که مشتری یا شرکت تجمیع گر از فروشنده می پرسد: “آیا سیستم شما با X کار می کند؟”، که X می تواند هر سیستم امنیتی تولید شده توسط هر تعداد تولید کننده باشد. پاسخ روتین فروشنده به پرسش فوق معمولا چنین است: حتما، ما یک API برای این کار داریم. این یکی از خطرناک ترین و گمراه کننده ترین اظهار نظرها در تمام مبحث امنیت فیزیکی است. به دلیل رواج بسیار، بهتر است بررسی APIها را شروع کنیم.
هیچ چیز مثل واسط برنامهنویسی کاربردی (API) نیست
هر چیزی مانند واسط برنامهنویسی کاربردی (API) نیست. APIهای متعددی وجود دارند. سیستم های بزرگتر صدها API دارند. به طور کلی، برای هر عملکرد در یک سیستم یک API وجود دارد. اگر بخواهید تصویر زنده تماشا کنید، باید از API ویدئوی زنده استفاده کنید. اگر می خواهید زمان را تغییر دهید، باید از API تغییر زمان استفاده کنید. می خواهید فریم ریت برای ضبط را افزایش دهید؟ پس باید از API فریم ریت ضبط استفاده کنید. به این دلیل می توان گفت که هیچ چیزی مانند هیچ چیز مثل واسط برنامهنویسی کاربردی (API) نیست.
همه ی عملکردها یک API ندارند
فرض کنید به یک فهرست از تمام هشدارهای نظارت بر سلامت از طریق یک برنامه ی دیگر نیاز دارید. این برنامه ممکن است یک API داشته باشد. اما API خاصی برای ارسال هشدارهای بهداشتی نداشته باشد. همان طور که می توانید تصور کنید چون بیشتر سیستم های امروزی صدها عملکرد دارند، پس امری عادی است که این عملکرد از طریق یک API واحد قابل دسترسی نباشند. این اتفاق بیشتر در زمان یکپارچه سازی دوربین ها و VMSها رخ می دهد. API یک دوربین ممکن است فاقد عملکردهای معین پیکربندی پیشرفته (نظیر تنظیم سرعت شاتر، کنترل بهره، ABF، روز شب و غیره) باشد. حتی اگر دو دستگاه را یکپارچه کنید، ممکن است با محدودیت های سختی مواجه شوید. اگر می خواهید عملکردی را در سیستم بگنجانید، باید امکان انجام این کار را بررسی کنید. پس توجه داشته باشید که همه ی عملکردها یک واسط برنامهنویسی کاربردی (API) ندارند.
داشتن یک API حتما به این معنا نیست که با سیستم شما کار خواهد کرد
فرض کنید می خواهید یک VMS پیشرو را با یک سیستم کنترل دسترسی یکپارچه کنید. هر دوی آن ها ممکن است API داشته باشند. اما هیچ تضمینی وجود ندارد که این دو محصول بتوانند با یکدیگر همکاری کنند. این که هر دو شرکت دارای API باشند یک پیش نیاز برای یکپارچه سازی است. اما هرگز کافی نیست. شرکت ها ممکن است یکپارچه سازی با محصولات رقبا را مسدود یا آن را دشوار کنند. آیا می خواهید سیستم مدیریت ویدئویی XProtect شرکت Milestone را در مرکز امنیتی Genetec یکپارچه کنید؟ آنها هر دو دارای API هستند و از نظر فنی این کار میسر است. اما بسیار بعید است که اجازه ی این کار را به شما بدهند. زیرا آنها دسترسی به APIهای خود را کنترل می کنند.
هزینه های API ها
در حالی که واسط برنامهنویسی کاربردی (API) به طور معمول برای سرویس های وب رایگان هستند یا برای هر استفاده هزینه ی کمی دریافت می کنند، اما برخی از تولید کنندگان تجهیزات امنیتی در بیشتر مواقع هزاران دلار صرفا برای صدور مجوز دسترسی مطالبه می کنند. این حالت به ویژه زمانی رخ می دهد که سیستم مورد نظر یک سیستم پیشرفته ی نظارت ویدئویی، کنترل دسترسی یا هشدار دهنده باشد.
مسئله ی بعدی این است که حتی اگر مجوز استفاده از API شرکت دیگری را داشته باشید، باز هم تضمینی وجود ندارد که آن API کار کند. برخلاف سرویس های وب بزرگ، نظیر گوگل یا آمازون، تنها تعداد محدودی از شرکت ها از این APIها استفاده می کنند. بدین معنا که این APIها ممکن است توسعه نیافته باشند یا مشکلات غیر مستندی داشته باشند. این مسئله ما را به نکته ی بعدی سوق می دهد.
انجام یکپارچه سازی زمان می برد
فروشندگان اغلب مدعی می شوند که فقط چند هفته برای یکپارچه سازی کافی است. این سخن گاهی ممکن است درست باشد. اما در بیشتر موارد جزئیات کسب و کار و مسائل فنی می تواند به میزان چشم گیری زمان یکپارچه سازی را طولانی تر کند. در واقع، بر خلاف APIهای سرویس های وب، به ندرت می توانید واسط برنامهنویسی کاربردی (API) را از اینترنت دریافت کنید. این کار اغلب نیازمند درخواست رسمی و بررسی از سوی شریک یکپارچه سازی مورد نظر است. علاوه بر این، هنگام یکپارچه سازی سیستم با API یک سیستم امنیتی، نمی توانید به سادگی از گوگل یا StackOverflow برای حل مشکلات استفاده کنید. تنها افرادی که احتمالا می توانند مشکلات فنی را برطرف کنند، در درون تیم تولید کننده ی همان سیستم امنیتی حضور دارند.
به همین ترتیب، مراقب زمان و هزینه ای که برای چنین پروژه هایی متعهد می شوید باشید. این کار نوعی ریسک است که در بیشتر موارد تا زمان بررسی کامل جزئیات فنی در مورد این که “هر فروشنده چگونه APIهای خود را پیاده سازی می کند.” ناشناخته باقی می ماند و غیر قابل شناخت است. به طور کلی، هر چند احتمالا این پروژه ها در نهایت موفق خواهند شد، اما زمان و هزینه ی آن ها ممکن است متفاوت باشد.
تغییرات واسط برنامهنویسی کاربردی (API) ممکن است به شکست شما منجر شود
با گذشت زمان، واسط برنامهنویسی کاربردی (API) دقیقا همانند محصولات تغییر می کنند. تفاوتی که وجود دارد این است که تغییر APIها می تواند باعث نابودی سیستم شما شود. دلایل تغییر عبارتند از:
- حذف باگ ها؛
- بهبود کارایی؛
- اضافه کردن قابلیت های جدید؛
با این حال، سیستم های دیگر به این APIها وابسته هستند. فرض کنید سیستم شما با نسخه ی ۳.۱ فروشنده ی B کار می کند. اکنون نسخه ی ۳.۲ فروشنده ی B عرضه می شود. اما این نسخه باعث می شود API خراب شود. به عبارت دیگر، نسخه ی جدید با نسخه ی قدیمی سازگار نیست. به این ترتیب، اگر شما فروشنده ی B را به نسخه ی ۳.۲ ارتقاء دهید، ممکن است سیستم تان به شکلی ناگهانی دیگر با فروشنده ی B کار نکند. در نتیجه، مرکز فرماندهی امنیتی شما دیگر تصویر ویدئویی را نشان نمی دهد، دسترسی را امکان پذیر نمی کند، یا سایر موارد و فقط باید به روزرسانی شود.
این مشکل بیشتر مواقع با دوربین ها اتفاق می افتد. هنگامی که یک دوربین را وصل می کنید و کار نمی کند، بیشتر فروشندگان می گویند “به یک سخت افزار جدید نیاز دارید.” حتی اگر این دو تولید کننده برای سال ها با یکدیگر یکپارچه بوده باشند. این اتفاق معمولا به این دلیل رخ می دهد که تغییرات اعمال شده در API اتصال موجود را قطع کرده است.
شما محدود به آنچه که API انجام می دهد هستید
در صورتی که یک مشتری بسیار بزرگ نباشید، مقید به آنچه که واسط برنامهنویسی کاربردی (API) به هر نحوی انجام می دهد خواهید بود. در بیشتر مواقع این APIها جوابگوی نیازتان هستند. با این حال، اگر نیازمند تغییراتی برای کاربرد خاص خود باشید، دستیابی به آن سخت است. باید مطمئن شوید که فردی در تیم فنی شما حضور دارد که از توانمندی ها و ضعف های API آگاه است. به این ترتیب، می توانید هر گونه مشکلات بالقوه ی آینده را پیش بینی کنید. اگر نیاز به اعمال تغییری باشد، اعمال آن تغییر و آزمایش های مربوط مدت زیادی به طول خواهد انجامید. زیرا فروشنده باید مطمئن شود که هزاران سازمان امنیتی دیگر، که از این API استفاده می کنند، با مشکل مواجه نخواهند شد.
علاوه بر این، اگر آن ها به این جمع بندی برسند که فقط شما به این تغییر احتیاج دارید، اولویت کمتری برای آن در نظر می گیرند. مگر این که پیشنهادی هنگفت یا چمدانی پر از پول روی میز قرار دهید.
نمونه ای از واسط برنامهنویسی کاربردی (API)
شناخته شده ترین و پرکاربردترین API در صنعت نظارت تصویری VAPIX اکسیس است. نسخه ی فعلی آن به بیش از ۲۰ بخش مختلف، با عملکردهای متعدد در درون هر بخش، تقسیم شده است. برای مثال، می توانید به سند ۳۸ صفحه ای PTZ API مراجعه کنید تا ببینید چگونه می توانید دوربین های گردان را با پارامترها و مقادیر مورد نیاز برای پن، تیلت و زوم کنترل کنید.
برای کنترل کامل یک دوربین IP اکسیس به صدها عملکرد مختلف و پیاده سازی ویژگی های متعدد نیاز است. در فضای اینترنت، هزاران API مختلف به معنای واقعی کلمه موجود است. APIهای وبینار، API های ایمیل، APIهای نقشه برداری و غیره از آن جمله هستند.
API ها در برابر SDK ها
در بیشتر مواقع، هنگام بحث درباره ی یکپارچه سازی نرم افزاری، اصطلاحات API و SDK در کنار یکدیگر به کار می روند. اما در تعریف این دو می توان تفاوت ها را به شرح زیر عنوان نمود:
- واسط برنامهنویسی کاربردی (API): کد منبعی مبتنی بر مشخصات است که در حالت حداقلی برای یکپارچه سازی دو سیستم به آن نیاز خواهید داشت.
- کیت توسعه ی نرم افزار یاSDK (Software Development Kit): مجموعه ای از ابزارهای مستندسازی و توسعه ی نرم افزار است که از شرکت های ثالث در استفاده از API کمک و از آنها پشتیبانی می کند.
برای سیستم های امنیتی و نظارتی، معمولا به همراه API به یک SDK نیاز خواهید داشت تا نحوه ی استفاده از API را درک کنید. علاوه بر این، بر خلاف APIهای وب، که نسبتا سبک هستند و به راحتی از زبان ها و چارچوب های مختلف قابل فراخوانی هستند، سیستم های امنیتی اغلب به چار چوبی ویژه (اغلب NET. یا جاوا) نیاز دارند و ابزارهایی برای استفاده ی ساده از این چارچوب ها فراهم می کنند.
API ها و استانداردها
تمام مثال هایی که تا کنون از واسط برنامهنویسی کاربردی (API) ذکر کرده ایم APIهای اختصاصی بوده اند، که توسط شرکت های خاص توسعه یافته و کنترل می شوند. هر API به طور معمول (و دستکم تا اندازه ای) نسبت به APIهای دیگر متفاوت است. حتی اگر این API کارهای APIهای دیگر را انجام دهد (نظیر درخواست یک ویدئوی زنده، دریافت هشدار و غیره). به همین دلیل، برای یکپارچه سازی با چند سیستم زمان زیادی نیاز است. زیرا این کار باید بارها و بارها برای هر دوربین، VMS، دستگاه ضبط و انجام شود.
هنگامی که از استانداردهایی نظیر ONVIF در نظارت تصویری سخن به میان می آید، در واقع APIهایی هستند که بخش وسیعی از تولید کنندگان می توانند از آن ها استفاده کنند. اگر هر API اختصاصی «زبان» خاص خود را داشته باشد، ارائه ی استانداردی نظیر ONVIF به معنای یک زبان جهانی است. اگر هر تولید کننده ی به آن زبان (API) سخن بگوید، دیگر نیازی به فراگیری زبان های منحصر به فرد در جهان نخواهد بود. استانداردها هنوز هم API هستند، فقط APIهایی که خوشبختانه تمامی طرفین از آن ها استفاده خواهند کرد تا نحوه ی برقراری ارتباط بین سیستم ها استاندارد سازی شود.