در اینجا اولین نگاهی است به پیشنمایش توسعهدهنده Cosmonic-یک WebAssembly PaaS با رابط کاربری ابری گرافیکی، شبکه قوی و CLI.
همانطور که احتمالاً تا به حال می دانید، WebAssembly یا wasm یک روش کارآمد، بین پلتفرمی و بین زبانی برای اجرای کد تقریباً در هر مکانی است، از جمله در مرورگر و سرور – حتی در پایگاه داده< /a>. Cosmonic یک پلتفرم تجاری به عنوان سرویس (PaaS) برای ماژولهای wam است. این بر روی wasmCloud منبع باز ساخته شده است. این پیشنمایش فناوری با یک نمای کلی از wasm شروع میشود، سپس wasmCloud و Cosmonic را راهاندازی میکنیم و میبینیم با آنها چه کاری میتوانیم انجام دهیم.
wam چیست؟
WebAssembly (wasm) یک “قالب دستورالعمل باینری برای ماشین مجازی مبتنی بر پشته” است. این یک هدف کامپایل قابل حمل برای زبان های برنامه نویسی از جمله C، C++، C#، Rust، Go، Java، PHP، Ruby، Swift، Python، Kotlin، Haskell و Lua است. زنگ اغلب زبان ترجیحی برای وام است. سه زبان مخصوص wam وجود دارد: AssemblyScript، Grain و Motoko. اهداف Wasm شامل مرورگرها (در حال حاضر Chrome، Firefox، Safari، و Edge)، Node.js، Deno، Wasmtime، Wasmer و wasm2c< /a>.
Wasm سعی میکند در حافظه کمی با سرعت اصلی اجرا شود. این برنامه در یک محیط اجرای امن با حافظه و جعبه ایمنی، حتی در وب اجرا می شود.
واسط سیستم WebAssembly (WASI) یک رابط سیستم مدولار برای WebAssembly است. Wasm یک مدل مؤلفه با مشخصات پیشنهادی W3C دارد. رابط دروازه WebAssembly (Wagi) یک پیاده سازی پیشنهادی از CGI برای wasm و WASI. Spin یک چارچوب چند زبانه برای برنامههای Wam است.
wasmCloud چیست؟
wasmCloud یک پلت فرم نرم افزار منبع باز متعلق به CNCF است که از wasm و NATS برای ساخت برنامه های کاربردی توزیع شده متشکل از واحدهای قابل حمل منطق تجاری WebAssembly به نام بازیگران. wasmCloud از TinyGo و Rust برای توسعه بازیگر پشتیبانی می کند. همچنین از ساخت پلتفرمها پشتیبانی میکند که ارائهدهنده قابلیت هستند. wasmCloud شامل شبکه است، یک شبکه مش خودساز و خود ترمیم شونده با استفاده از NATS که توپولوژی یکپارچه و مسطح را ارائه می دهد. wasmCloud تقریباً در همه جا اجرا می شود: در ابر، در لبه، در مرورگر، در دستگاه های کوچک و غیره. زمان اجرا میزبان wasmCloud از Elixir/OTP و Rust استفاده می کند.
بسیاری از committerها و نگهدارندگان wasmCloud برای Cosmonic (شرکت) کار می کنند. علاوه بر این، پوسته ابری wash
wasmCloud با Cosmonic (محصول) کار می کند.
Cosmonic چیست؟
Cosmonic هم یک شرکت است و هم یک محصول. این محصول یک پلت فرم WebAssembly به عنوان سرویس (PaaS) است که بر روی wasmCloud ساخته شده و از بازیگران wasm استفاده می کند. Cosmonic یک رابط کاربری ابری گرافیکی برای طراحی برنامهها، و پوسته خود، cosmo
ارائه میدهد که مکمل wash
و رابط کاربری گرافیکی wasmCloud است. ظاهراً هر چیزی که میسازید و در wasmCloud ساده کار میکند باید به طور خودکار در Cosmonic کار کند.
یک میزبان یک فرآیند زمان اجرا wasmCloud توزیع شده است که بازیگران و ارائه دهندگان قابلیت را مدیریت می کند. actor یک ماژول WebAssembly است که میتواند پیامها را مدیریت کند و توابع را در ارائهدهندگان قابلیت فراخوانی کند. قابلیت یک انتزاع یا نمایش برخی از عملکردهای مورد نیاز برنامه شما است که بخشی از منطق اصلی کسب و کار در نظر گرفته نمی شود. ارائهدهنده قابلیت اجرای نمایشی است که توسط یک قرارداد قابلیت توصیف شده است. میتواند چندین ارائهدهنده در هر قابلیت با ویژگیهای مختلف وجود داشته باشد.
یک پیوند یک ارتباط تعریفشده در زمان اجرا بین یک بازیگر و یک ارائهدهنده قابلیت است. پیوندها را می توان بدون نیاز به استقرار مجدد یا کامپایل مجدد تغییر داد.
یک صورت فلکی یک فضای شبکه مدیریت شده و ایزوله است که به بازیگران و ارائه دهندگان شما اجازه می دهد بدون توجه به موقعیت فیزیکی یا منطقی به طور ایمن با یکدیگر ارتباط برقرار کنند. در اصل، یک شبکه wasmCloud با مدیریت کیهانی. ابر صورت فلکی یک صورت فلکی بزرگتر است که از اتصال ایمن چندین محیط از طریق Cosmonic تشکیل شده است.
کرم چاله نقطه ورود به صورت فلکی شما است. توزیع OCI استانداردی برای ذخیره سازی، بازیابی و توزیع مصنوع است که توسط (به عنوان مثال) رجیستری کانتینر Azure و رجیستری مصنوع GitHub پیاده سازی شده است.
نمای زیرساخت میزبانهای مجازی در حال اجرا در صورت فلکی کیهانی شما را نشان میدهد. نمای منطقی روابط منطقی بین اجزای صورت فلکی کیهانی یا ابر صورت فلکی شما را نشان میدهد.
نصب و آزمایش wasmCloud
نصب wasmCloud بسته به سیستم شما متفاوت است. من از brew
در M1 MacBook Pro خود استفاده کردم. به دلیل وابستگی ها، به ویژه کامپایلر Rust و مدیر بسته محموله، که ترجیح می دهم را انتخاب کنم، بیش از آنچه می خواستم نصب شد. از وب سایت Rust language با استفاده از rustup
نصب کنید. خوشبختانه، یک brew uninstall rust
ساده راه را برای نصب استاندارد rustup
باز کرد. هنگام نصب زبانها، TinyGo را نیز نصب کردم، زبان دیگری که برای توسعه بازیگر wasmCloud پشتیبانی میشود.
پس از نصب، از پوسته wash
خواستم تا در مورد قابلیتهای آن به من بگوید:
martinheller@Martins-M1-MBP ~ % wash --help
_________________________________________________________________________________
_____ _ _ _____ _ _ _
/ ____| | | | / ____| | | | |
__ ____ _ ___ _ __ ___ | | | | ___ _ _ __| | | (___ | |__ ___| | |
\ \ /\ / / _` / __| '_ ` _ \| | | |/ _ \| | | |/ _` | \___ \| '_ \ / _ \ | |
\ V V / (_| \__ \ | | | | | |____| | (_) | |_| | (_| | ____) | | | | __/ | |
\_/\_/ \__,_|___/_| |_| |_|\_____|_|\___/ \__,_|\__,_| |_____/|_| |_|\___|_|_|
_________________________________________________________________________________
A single CLI to handle all of your wasmCloud tooling needs
Usage: wash [OPTIONS] <COMMAND>
Commands:
app Manage declarative applications and deployments (wadm) (experimental)
build Build (and sign) a wasmCloud actor, provider, or interface
call Invoke a wasmCloud actor
claims Generate and manage JWTs for wasmCloud actors
ctl Interact with a wasmCloud control interface
ctx Manage wasmCloud host configuration contexts
down Tear down a wasmCloud environment launched with wash up
drain Manage contents of local wasmCloud caches
gen Generate code from smithy IDL files
keys Utilities for generating and managing keys
lint Perform lint checks on smithy models
new Create a new project from template
par Create, inspect, and modify capability provider archive files
reg Interact with OCI compliant registries
up Bootstrap a wasmCloud environment
validate Perform validation checks on smithy models
help Print this message or the help of the given subcommand(s)
Options:
-o, --output <OUTPUT> Specify output format (text or json) [default: text]
-h, --help Print help information
-V, --version Print version information
سپس مطمئن شدم که میتوانم یک wasmCloud را بیاورم:
martinheller@Martins-M1-MBP ~ % wash up
🏃 Running in interactive mode, your host is running at http://localhost:4000
🚪 Press `CTRL+c` at any time to exit
۱۷:۰۰:۲۰.۳۴۳ [info] Wrote configuration file host_config.json
۱۷:۰۰:۲۰.۳۴۴ [info] Wrote configuration file /Users/martinheller/.wash/host_config.json
۱۷:۰۰:۲۰.۳۴۴ [info] Connecting to control interface NATS without authentication
۱۷:۰۰:۲۰.۳۴۴ [info] Connecting to lattice rpc NATS without authentication
۱۷:۰۰:۲۰.۳۴۶ [info] Host NCZVXJWZAKMJVVBLGHTPEOVZFV4AW5VOKXMD7GWZ5OSF5YF2ECRZGXXH (gray-dawn-8348) started.
۱۷:۰۰:۲۰.۳۴۶ [info] Host issuer public key: CCXQKGKOAAVXUQ7MT2TQ57J4DBH67RURBKT6KEZVOHHZYPJKU6EOC3VZ
۱۷:۰۰:۲۰.۳۴۶ [info] Valid cluster signers: CCXQKGKOAAVXUQ7MT2TQ57J4DBH67RURBKT6KEZVOHHZYPJKU6EOC3VZ
۱۷:۰۰:۲۰.۳۵۱ [info] Started wasmCloud OTP Host Runtime
۱۷:۰۰:۲۰.۳۵۶ [info] Running WasmcloudHostWeb.Endpoint with cowboy 2.9.0 at 0.0.0.0:4000 (http)
۱۷:۰۰:۲۰.۳۵۷ [info] Access WasmcloudHostWeb.Endpoint at http://localhost:4000
۱۷:۰۰:۲۰.۴۵۳ [info] Lattice cache stream created or verified as existing (0 consumers).
۱۷:۰۰:۲۰.۴۵۳ [info] Attempting to create ephemeral consumer (cache loader)
۱۷:۰۰:۲۰.۴۵۵ [info] Created ephemeral consumer for lattice cache loader
زمانی که wamCloud در حال اجرا بود، وب سایت را در پورت ۴۰۰۰ در دستگاه محلی خود مشاهده کردم:
شکل ۱. داشبورد محلی wasmCloud در پورت ۴۰۰۰ پس از اجرای wash up
. هیچ بازیگر، ارائه دهنده یا پیوندی وجود ندارد.
سپس wasmCloud را متوقف کردم:
martinheller@Martins-M1-MBP ~ % wash down
✅ wasmCloud host stopped successfully
✅ NATS server stopped successfully
🛁 wash down completed successfully
-
کیهانی ۰.۷.۰
کیهانی ۰.۷.۰
- مقدار کدی را که برای ایجاد Actor نیاز دارید بنویسید به حداقل می رساند
- به راحتی می توان ماژول ها را به صورت گرافیکی به یک برنامه متصل کرد
- امنیت جعبه ایمنی
- قیمت نهایی مشخص نیست
- برای ایجاد بازیگران به مهارت برنامه نویسی Rust or Go نیاز دارد
پست های مرتبط
نگاه اول: wasmCloud و Cosmonic
نگاه اول: wasmCloud و Cosmonic
نگاه اول: wasmCloud و Cosmonic