新聞中心
集成編程實(shí)踐已變得很孤立,使用青睞的集成工具進(jìn)行編程的開(kāi)發(fā)人員必須使用另一種工具或編程語(yǔ)言開(kāi)發(fā)其余應(yīng)用程序。除此之外,向云轉(zhuǎn)變意味著團(tuán)隊(duì)現(xiàn)在必須在容器中部署集成系統(tǒng),并使用分布在大量節(jié)點(diǎn)上的微服務(wù)創(chuàng)建應(yīng)用程序。

現(xiàn)有的編程語(yǔ)言并不特別擅長(zhǎng)理解這些問(wèn)題以及團(tuán)隊(duì)試圖所做的工作。它們根本不是為云而構(gòu)建的。而B(niǎo)allerina是一種面向云原生編程和集成的開(kāi)源語(yǔ)言,為致力于針對(duì)網(wǎng)絡(luò)交互創(chuàng)建新API、新集成和新邏輯的開(kāi)發(fā)人員提供了一系列合適的工具和抽象級(jí)別。
憑借用于開(kāi)發(fā)服務(wù)和API的語(yǔ)法、JSON支持以及內(nèi)置并發(fā),新的正式版Swan Lake可以進(jìn)一步簡(jiǎn)化開(kāi)發(fā)人員構(gòu)建和部署云原生應(yīng)用程序的方式。
以下是開(kāi)發(fā)人員應(yīng)選擇Ballerina為其云原生應(yīng)用程序編寫(xiě)API、集成和后端邏輯的主要原因。
Ballerina面向數(shù)據(jù)和網(wǎng)絡(luò)
由于云端服務(wù)越來(lái)越多,幾乎每個(gè)企業(yè)應(yīng)用程序都需要網(wǎng)絡(luò)調(diào)用。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),這加大了處理其代碼中的資源方面的責(zé)任。Ballerina隨帶對(duì)網(wǎng)絡(luò)友好的類(lèi)型系統(tǒng),有強(qiáng)大的功能來(lái)處理網(wǎng)絡(luò)上的數(shù)據(jù)。
Ballerina可以輕松地為數(shù)據(jù)建模,并通過(guò)網(wǎng)絡(luò)來(lái)回傳送。該語(yǔ)言有強(qiáng)大的工具來(lái)編寫(xiě)、聲明、處理、查詢、結(jié)構(gòu)化、重組和導(dǎo)航數(shù)據(jù)。
importballerina/http;
importballerina/io;
typeCountryrecord {
stringcountry;
intpopulation;
stringcontinent;
intcases;
intdeaths;
};
// Prints the top 10 countries having the highest case-fatality ratio.
publicfunctionmain() returnserror? {
http:ClientdiseaseEp = checknew ("https://disease.sh/v3");
Country[] countries = checkdiseaseEp->get("/covid-19/countries");
jsonsummary =
fromvar {country, continent, population, cases, deaths} incountries
wherepopulation >= 100000 && deaths >= 100
letdecimalcaseFatalityRatio =deaths / cases *
100
orderbycaseFatalityRatiodescending
limit10
select {country, continent, population, caseFatalityRatio};
io:println(summary);
}
具有靈活類(lèi)型系統(tǒng)的優(yōu)點(diǎn)
編程語(yǔ)言的類(lèi)型系統(tǒng)是表示數(shù)據(jù)和實(shí)現(xiàn)邏輯的基礎(chǔ)。雖然開(kāi)發(fā)人員必須處理其代碼中的網(wǎng)絡(luò)資源,但編程語(yǔ)言本身必須在該操作中提供幫助。這就是為什么Ballerina專(zhuān)門(mén)適用于對(duì)網(wǎng)絡(luò)友好的類(lèi)型系統(tǒng)。
比如在典型的編程語(yǔ)言中,有一些標(biāo)準(zhǔn)和協(xié)議來(lái)定義如何處理通過(guò)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù),并將其綁定到語(yǔ)言(數(shù)據(jù)綁定)。收到數(shù)據(jù)后,開(kāi)發(fā)人員必須將數(shù)據(jù)綁定到語(yǔ)言中的數(shù)據(jù)結(jié)構(gòu),才能對(duì)其進(jìn)行操作。
Ballerina的類(lèi)型系統(tǒng)不僅能描述內(nèi)存中的數(shù)據(jù),還能描述網(wǎng)絡(luò)上的數(shù)據(jù)。尤其是,為了與JSON、XML及其他格式緊密結(jié)合,開(kāi)發(fā)者做了大量工作。數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸時(shí),開(kāi)發(fā)人員可以將其引入語(yǔ)言中,沒(méi)有任何人為的、復(fù)雜的數(shù)據(jù)綁定問(wèn)題,實(shí)際上擯棄了眾所周知的數(shù)據(jù)格式和網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)綁定概念。
Ballerina的類(lèi)型系統(tǒng)主要是結(jié)構(gòu)化的,增加了對(duì)名義類(lèi)型的支持。這意味著類(lèi)型兼容性通過(guò)考慮值的結(jié)構(gòu)而不是僅僅依賴類(lèi)型名稱(chēng)來(lái)識(shí)別。這有別于Java、C++和C#等擁有類(lèi)型系統(tǒng)的語(yǔ)言,這些系統(tǒng)中受實(shí)際類(lèi)型名稱(chēng)的約束。
序列圖模型網(wǎng)絡(luò)交互
在Ballerina中,每個(gè)程序都可以顯示為自動(dòng)表明分布式并發(fā)交互的序列圖。Ballerina程序中的函數(shù)在文本語(yǔ)法和序列圖中都有等效的表示。您可以在這兩個(gè)視圖之間無(wú)縫切換。 Ballerina獨(dú)特的圖形視圖不是一種噱頭,而是被設(shè)計(jì)到語(yǔ)言底層中,以便用戶切實(shí)深入了解函數(shù)的網(wǎng)絡(luò)交互及并發(fā)機(jī)制的使用。
importballerina/http;
importballerinax/googleapis.sheets;
configurablestringgithubPAT = ?;
configurablestringrepository = "ballerina-platform/ballerina-lang";
configurablestringsheetsAccessToken = ?;
configurablestringspreadSheetId = ?;
configurablestringsheetName = "Sheet1";
typePRrecord {
stringurl;
stringtitle;
stringstate;
stringcreated_at;
stringupdated_at;
};
publicfunctionmain() returnserror? {
http:Clientgithub = checknew ("https://api.github.com/repos");
mapheaders = {
"Accept": "application/vnd.github.v3+json",
"Authorization": "token " + githubPAT
};
PR[] prs = checkgithub->get(string`/${repository}/pulls`, headers);
sheets:Clientgsheets = checknew ({auth: {token: sheetsAccessToken}});
checkgsheets->appendRowToSheet(spreadSheetId, sheetName,
["Issue", "Title", "State", "Created At", "Updated At"]);
foreach var {url, title, state, created_at, updated_at} inprs {
checkgsheets->appendRowToSheet(spreadSheetId, sheetName,
[url, title, state, created_at, updated_at]);
}
}
雖然Ballerina具有現(xiàn)代編程語(yǔ)言的所有通用功能,但它之所以脫穎而出,是由于提供了更易于使用、為云組合和創(chuàng)建網(wǎng)絡(luò)服務(wù)的語(yǔ)言功能。如需深入了解Ballerina語(yǔ)言功能的介紹性說(shuō)明,建議觀看該語(yǔ)言的開(kāi)發(fā)者??Sanjiva Weerawarana的視頻???,或者參閱該??博客??。
原文標(biāo)題:??Why Should You Program with Ballerina???,作者:Vishva Ahangama
本文名稱(chēng):為什么應(yīng)該用Ballerina編程?
地址分享:http://www.5511xx.com/article/cojipph.html


咨詢
建站咨詢
