در برنامه نویسی کامپیوتری ، فایل مانیفست فایلی است حاوی فراداده برای گروهی از فایل های همراه که بخشی از یک مجموعه یا واحد منسجم هستند. برای مثال، فایلهای یک برنامه رایانهای ممکن است دارای مانیفستهایی باشند که نام، شماره نسخه ، مجوز و فایلهای سازنده برنامه را توصیف میکند. [1] اصطلاح "مانیفست" از رویه حمل و نقل محموله وام گرفته شده است، جایی که مانیفست کشتی خدمه و/یا محموله یک کشتی را فهرست می کند.
فایلهای مانیفست از نظر ماهیت مشابه فایلهای اعلان هستند ، زیرا هر دو ساختار مورد انتظار یک برنامه رایانهای را مشخص میکنند که توسط یک برنامه رایانهای دیگر مصرف میشود، و اطلاعات اضافی را ارائه میدهد که به نرمافزار سیستم ، ابزارهای تعریفشده توسط نرمافزار (مانند کامپایلرها ، لینترها )، محیطهای توسعه اجازه میدهد. ، یا سایر توسعه دهندگان برای درک نحوه تعامل با منابع یا کدهای خاص. برخلاف فایل های اعلامیه، مانیفست ها این کار را به روش های مختلف و برای اهداف مختلف انجام می دهند. برای مثال، فایلهای مانیفست چیزهایی مانند وابستگیها، مجوزها یا تنظیمات زمان اجرا را توصیف میکنند که اجرای کد را کنترل میکنند. فایلهای اعلامیه ساختار کد (مانند انواع، رابطها یا توابع) را برای کنترل ترجمه کد، پشتیبانی از بررسی نوع استاتیک و فعال کردن ویژگیهای راحت مانند تکمیل خودکار و بازآفرینی خودکار کد توصیف میکنند.
سیستمهای ساخت و سیستمهای عامل ممکن است از فایلهای مانیفست برای درک نحوه راهاندازی، اجرا یا ادغام یک برنامه کامپیوتری در یک سیستم موجود استفاده کنند. علاوه بر این، در حالی که فایلهای مانیفست بر روی اطلاعات سطح پروژه یا سطح سیستم (مانند تنظیمات زمان اجرا یا وابستگیها) تمرکز میکنند، فایلهای اعلامیه بر جزئیات سطح کد (مانند انواع یا امضای توابع و اشیاء) تمرکز میکنند.
توزیع های لینوکس به شدت به سیستم های مدیریت بسته برای توزیع نرم افزار متکی هستند. در این طرح، یک بسته یک فایل آرشیو حاوی یک فایل مانیفست است. هدف اصلی، شمارش فایل هایی است که در توزیع گنجانده شده اند، چه برای پردازش توسط ابزارهای بسته بندی مختلف و چه برای مصرف انسان. مانیفست ها ممکن است حاوی اطلاعات اضافی باشند. به عنوان مثال، در JAR (یک فرمت بسته برای ارائه نرم افزار نوشته شده به زبان برنامه نویسی جاوا )، آنها می توانند یک شماره نسخه و یک نقطه ورودی برای اجرا مشخص کنند. مانیفست ممکن است به صورت اختیاری حاوی هش رمزنگاری یا جمع کنترلی هر فایل باشد. با ایجاد یک امضای رمزنگاری برای چنین فایل مانیفست، می توان کل محتویات بسته توزیع را از نظر صحت و یکپارچگی تأیید کرد، زیرا تغییر هر یک از فایل ها، جمع های چک موجود در فایل مانیفست را باطل می کند.
در مایکروسافت ویندوز ، نرم افزاری که به Windows Side-by-Side ( WinSxS ) متکی است، به یک مانیفست برنامه نیاز دارد، که یک سند XML است که یا در یک فایل اجرایی جاسازی شده است یا در یک فایل XML جداگانه که آن را همراهی می کند، موجود است. دارای نام، نسخه، اطلاعات اعتماد، امتیازات مورد نیاز برای اجرا و وابستگی به اجزای دیگر است. [2]
مانیفست اسمبلی بسیار شبیه به مانیفست برنامه کاربردی است، اما هویت اجزایی را که به نام " مجموعه " شناخته می شوند، توصیف می کند. به این مجموعه ها در مانیفست برنامه اشاره می شود. [3]
نمونه ای از مانیفست برنامه به شرح زیر است. این مانیفست برنامه دارای دو بخش اصلی است: امنیت و وابستگی. بخش امنیتی می گوید که برنامه به سطح امنیتی "asInvoker" نیاز دارد. یعنی می توان آن را در هر سطح امنیتی که اجرا کرد کار کرد. بخش وابستگی می گوید که برنامه به مؤلفه ای به نام «Microsoft.VC90.CRT» با شماره نسخه «9.0.21022.8» نیاز دارد.
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns= 'urn:schemas-microsoft-com:asm.v1' manifestVersion= '1.0' > <trustInfo xmlns= " urn:schemas-microsoft-com:asm.v3" > <security> <requestedPrivileges> <!--من با هر سطح امتیاز امنیتی مشکلی ندارم--> <requestedExecutionLevel level= 'asInvoker' uiAccess= 'false' /> </ requestedPrivileges> </security> </trustInfo> <dependency> <dependentAssembly> <!--برای اجرا به Microsoft Visual C++ 2008 Runtime نیاز دارم--> <assemblyIdentity type= 'win32' name= 'Microsoft.VC90.CRT' version= '9.0.21022.8' processorArchitecture= 'x86' publicKeyToken= '1fc8b3b9a1e18e3b' /> </dependentAssembly> </dependency> </assembly>
مانیفست کش در HTML5 یک فایل متنی ساده همراه با یک برنامه وب است که به اجرای آن در زمانی که اتصال شبکه وجود ندارد کمک می کند. مکانیسم کش این فایل را می خواند و اطمینان حاصل می کند که محتوای آن به صورت محلی در دسترس است. یک مانیفست کش HTML5 با نوع محتوای آن بر روی "text/cache-manifest" ارائه می شود. [4]
نمونه ای از مانیفست کش:
مانیفست حافظه پنهان/test.css/test.js/test.png
وبمانیفست یک فایل JSON است که در برنامههای وب پیشرو استفاده میشود تا به راحتی از طریق URL قابل اشتراکگذاری باشد، توسط موتورهای جستجو قابل شناسایی باشد و مراحل نصب پیچیده را کاهش دهد. علاوه بر این، PWA ها از تعاملات و ناوبری به سبک برنامه های بومی پشتیبانی می کنند، از جمله اضافه شدن به صفحه اصلی ، نمایش صفحه های اسپلش و غیره [5]
این کلاس Directory حاوی ابرداده ویژه در یک فایل مانیفست است. این دادهها را میتوان توسط ارائهدهنده تماس تشخیص داد، که توسعهدهندگان میتوانند از آن برای ایجاد یک فهرست سفارشی و برای انتقال دادهها بین دستگاه و سرویسهای آنلاین استفاده کنند.