یک برنامه وب مدرن در C
آدرس مقاله: https://prophitt.me/writing/a-modern-web-app-in-c آدرس نظرات: https://news.ycombinator.com/item?id=50058528 امتیاز: 261 # نظرات: 107
پشته BCHS است: OpenBSD، C، httpd و SQLite.
هیچ چارچوبی وجود ندارد شما یک برنامه C می نویسید که متغیرهای محیط CGI را می خواند و پاسخ می دهد.
هیچ زبان قالبی وجود ندارد. شما C می نویسید که HTML را مستقیما خروجی می دهد.
هیچ سرور پایگاه داده جداگانه ای وجود ندارد. شما فایل پایگاه داده را از طریق C API SQLite باز می کنید.
ظرفی وجود ندارد شما یک باینری متصل به استاتیک می سازید و آن را در یک پوشه می اندازید.
هر درخواستی یک فرآیند تازه ایجاد می کند. استقرار یک نسخه جدید جایگزین یک فایل است. یعنی بدون راه اندازی مجدد سرور و بدون خرابی. درخواست های جدید به سادگی باینری جدید را انتخاب می کنند.
OpenBSD با پیشفرضهای معقول عرضه میشود و ابزارهایی را در اختیار شما قرار میدهد تا واقعا یک برنامه C مانند تعهد و رونمایی را ایمن کنید. Httpd به طور پیشفرض از یک chroot ارائه میشود، بنابراین باینری CGI شما در گوشهای از سیستم فایل بهصورت جعبه سندباکس اجرا میشود.
libcurl تمام درخواستهای خروجی به Stripe و Postmark را مدیریت میکند.
libsodium تولید شناسه تصادفی، هش رمز عبور و تأیید HMAC را برای وبقلابهای Stripe مدیریت میکند.
libcjson تجزیه JSON را برای Stripe و Postmark کنترل می کند.
فقط دو مورد از آنها وابستگیهای ساخت واقعی هستند: libcurl و libsodium.
libcjson یک فایل C واحد است و هیچ وابستگی خارجی ندارد. SQLite یک ادغام رسمی (تک فایل C) را ارسال می کند.
هر دو به عنوان بخشی از پروژه فروخته و ساخته شده اند.
نتیجه ساختی است که تقریبا هیچ قطعه متحرکی ندارد. یک ساخت تمیز چند ثانیه طول می کشد و در کمتر از نیم ثانیه بازسازی می شود.
به جای ارائه دارایی های ثابت به روش سنتی، من تمام ترافیک را از httpd به باینری CGI هدایت می کنم. هر دارایی در فایل اجرایی کامپایل شده و از حافظه ارائه می شود.
متن اصلی (انگلیسی)
A Modern Web App in C
Article URL: https://prophitt.me/writing/a-modern-web-app-in-c Comments URL: https://news.ycombinator.com/item?id=50058528 Points: 261 # Comments: 107