首頁>其它>
XML、JSON和datatable都是原生資料型別

通訊就是資訊和資料。在任何型別的整合eco系統中,XML和JSON是最常見和使用最頻繁的資料型別。除了這兩種型別之外,與資料庫的互動(SQL、NoSQL)是另一種最常見的用例。我們已經介紹了使用本機資料型別的所有3種場景。

您可以內聯定義xml和json資料型別,並使用jsons和訊息包中的實用程式方法輕鬆地操作它們。

json j = `{"company":{"name":"wso2", "country":"USA"}}`;messages:setJsonPayload(m, j);

透過以上兩行,您可以定義自己的json訊息,並用您的訊息替換當前訊息。您也可以對XML訊息執行同樣的操作。

如果您需要從一個application/json型別的訊息中提取一些資料,您可以透過下面的程式碼行輕鬆地做到這一點。

json newJson = jsons:getJson(messages:getJsonPayload(m), "$.company");

上面的程式碼將把下面的json訊息設定為newJson變數。

{"name":"wso2","country":"USA"}

這種內聯表示的另一個很酷的特性是可以訪問這些模板表示式中的變數。在定義如下XML/JSON訊息時,可以訪問任何變數。

string name = "WSO2";xml x = `<name>{$name}</name>`;

上面的兩行程式碼建立了一個xml訊息,其中包含以下資料。

<name>WSO2</name>

您可以以類似的方式對JSON訊息執行相同的操作。

Datatable是指向從資料庫查詢返回的結果集的指標的表示。它以流方式工作。資料將在程式中使用時被使用。下面是使用datatable型別讀取ballerina程式中的資料的示例程式碼。

string s; datatable dt = sql:ClientConnector.select(testDB, "SELECT int_type, long_type, float_type, double_type, boolean_type, string_type from DataTable LIMIT 1",parameters); while (datatables:next(dt)) { s = datatables:getString(dt, "string_type"); // do something with s}

您可以在Ballerina API文件中找到完整的函式集。

並行處理非常簡單

“並行處理”這個術語甚至讓有經驗的程式設計師都感到害怕。但是使用Ballerina,您可以像執行任何其他動作一樣執行並行處理。“芭蕾舞女”這個詞的主要概念源於一種芭蕾舞的概念,在這種舞蹈中,許多不同的芭蕾舞演員在舞蹈過程中透過互相傳送資訊來實現同步。這個過程的技術術語稱為“編排”。Ballerina (language)透過以下兩個特性將這個概念引入到一個對程式設計師更友好的概念中。

與工作者並行處理

工作者的概念是,它是一個執行流。執行將由“預設工作者”執行。如果芭蕾舞演員程式設計師想把他的工作委託給另一個“Worker”,這個“Worker”與“Default Worker”並行工作,他可以建立一個Worker並用下面的語法向那個Worker傳送訊息。

worker friend(message m) {//Do some work herereply m';}msg -> friend;//Do my own workreplyMsg <- friend;

這個任務委託有一些特別的地方。

worker (friend)將與預設worker並行執行。預設的輔助程式可以獨立地繼續它的輔助程式當預設worker想要從朋友worker那裡得到結果時,它會呼叫朋友worker並阻塞他們,直到它得到結果訊息或在1分鐘後超時。使用fork-join(多個worker)並行處理

有時使用者需要在同一時間向多個worker傳送相同的訊息,並以不同的方式處理結果。這就是fork-join起作用的地方。Ballerina程式設計師可以在fork-join語句中定義工作者及其操作,然後決定工作者完成工作後要做什麼。下面給出了fork-join的示例程式碼。

ffork(msg) {worker chanaka(message m1) {//Do some work herereply m1';}worker sameera(message m2) {//Do something elsereply m2';}worker isuru(message m3) {//Do another thingreply m3';} join (all)(message[] results) {//Do something with results message array} timeout (60)(message[] resultsBeforeTimeout) {//Do something after timeout}

上面的程式碼示例是一個功能強大的程式,用任何其他程式語言都很難實現(有些語言甚至無法做到這一點)。但是在《芭蕾舞女演員》中,你可以從簡單中獲得所有的力量。下面是對上述程式的解釋。

工作者“chanaka”、“sameera”和“isuru”與主“預設工人”並行執行。join條件指定使用者需要如何獲得上述已啟動工作程式的結果。在這個示例中,它等待“所有”工作者。可以透過以下選項之一加入工作人員

-加入所有3個工人

-加入所有指定的工人

-加入所有3個工人中的任何一個

-加入任何一個指定的工人

超時條件與連線塊耦合。使用者可以以秒為單位指定tiemout值,以等待連線條件得到滿足。如果聯接條件在給定的時間內沒有得到滿足,則將執行超時塊,並從完成的worker返回任何結果。fork-join語句一旦啟動並執行,“預設worker”就會一直等待,直到它完成join塊或超時塊。在那段時間(休息時)它將一直閒置著。

除了上面提到的特性,工作人員還可以呼叫同一個包或任何其他包中宣告的任何函式。當前worker/fork-join實現的一個限制是,除了“預設worker”之外,worker不能與任何其他worker通訊。

全面的開發工具集,使您的開發體驗儘可能簡單

Ballerina不是語言和執行時本身。它提供了一套完整的開發工具,可以幫助您儘可能快速和輕鬆地開始您的芭蕾舞演員體驗。

作曲家(Composer)

作曲家是編寫芭蕾舞程式的主要工具。以下是它的一些功能:

原始碼,設計和Swagger檢視相同的實現和編輯能力,透過任何介面直接從編輯器執行/除錯Ballerina程式拖放程式元素並組成程式Testerina

這是Ballerina程式的單元測試框架。使用者可以用這個框架編寫單元測試來測試他們的Ballerina原始碼。它允許使用者在單元測試環境中模擬Ballerina元件和模擬實際的Ballerina程式。你可以從這篇文章中找到細節。

聯結器

這些是客戶端聯結器,它們被編寫來連線不同的雲api和系統。這是Ballerina擁有的一個擴充套件點,使用者可以使用Ballerina語言編寫自己的聯結器,並在任何其他Ballerina程式中使用。

編輯器外掛

Ballerina工具發行版附帶的另一套重要工具是一套用於流行原始碼編輯器(如Intellij Idea、Atom、VSCode、Vim)的編輯器外掛。這將確保如果您是一個對ide不感興趣的鐵桿指令碼編輯人員,那麼您還可以在您最喜歡的編輯器中獲得芭蕾舞語言能力。

本文:http://jiagoushi.pro/node/1378

18
最新評論
  • 康明斯6bt發動機
  • 男子給岳父岳母報團旅行,卻沒有飯吃,對方:當時看時是有的