{"id":26988,"date":"2024-05-15T14:17:18","date_gmt":"2024-05-15T12:17:18","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=26988"},"modified":"2024-06-18T17:41:36","modified_gmt":"2024-06-18T15:41:36","slug":"ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/","title":{"rendered":"Ballerina: il linguaggio dedicato all&#8217;integrazione tra i servizi"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"726\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-1024x726.png\" alt=\"\" class=\"wp-image-27727\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-1024x726.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-300x213.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-768x545.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-1536x1089.png 1536w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-2048x1453.png 2048w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-180x128.png 180w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Ballerina \u00e8 un linguaggio di programmazione dedito allo sviluppo di integrazione tra servizi e dati, si basa su un linguaggio semplice supportato dalla possibilit\u00e0 di disegnare sequence diagram dell&#8217;applicativo stesso.<\/p>\n\n\n\n<p>L&#8217;obbiettivo di Ballerina \u00e8 quello di astrarre lo sviluppo di applicativi dalla piattaforma che li andranno a contenere, il gruppo di lavoro non si deve quindi occupare di gestire differenze strutturali per l&#8217;esecuzione degli applicativi o per l&#8217;interconnessione delle basi di dati, disaccoppiando questi elementi ci si pu\u00f2 concentrare in maniera totale sui requisiti di business.<\/p>\n\n\n\n<p>Internet \u00e8 diventato, nel corso degli anni, il modo migliore per distribuire dati. Il dato \u00e8 diventato il core business delle aziende, la sua distribuzione in maniera sicura \u00e8 una componente fondamentale richiesta in fase di sviluppo degli applicativi.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/avatars.githubusercontent.com\/u\/34733518?s=200&amp;v=4\" alt=\"\"\/><\/figure><\/div>\n\n\n<p>I dati vengono distribuiti tramite l&#8217;esposizione di API, le API sono uno standard per definire interfacce riguardanti i dati richiesti e forniti da uno specifico servizio. Quando uno sviluppatore si interfaccia tramite un&#8217;API non si chiede quale sia il linguaggio utilizzato per implementare il singolo servizio, il suo interesse principale \u00e8 quello di fornire i dati come richiesto in input ed interpretare in maniera corretta le risposte ottenute.<\/p>\n\n\n\n<p>L&#8217;obiettivo di Ballerina \u00e8 proprio quello di dare agli sviluppatori un modo di interfacciarsi correttamente con le API esposte in modo da potersi concentrare in maniera pressoch\u00e9 totale sui requisiti di business.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-e7d4c167 gb-headline-text\">Iniziamo da <em>bal<\/em><\/h2>\n\n\n\n<p>Il primo approccio al linguaggio \u00e8 dato dal comando <code>bal<\/code>, questo comando permette la gestione delle dipendenze e la fase di build, test ed esecuzione dell&#8217;applicativo. Dopo aver sviluppato l&#8217;applicazione nel linguaggio Ballerina, si pu\u00f2 utilizzare il comando <code>bal build<\/code> per creare un pacchetto di distribuzione, o <code>bal run<\/code> per eseguire il codice direttamente dai sorgenti.<\/p>\n\n\n\n<p>A chi volesse iniziare ad approcciare il linguaggio consiglio anche i comandi <code>bal new<\/code> che crea una struttura basilare di directory e files per il progetto che si vuole sviluppare ed il comando <code>bal test<\/code> per procedere a testare quanto implementato.<\/p>\n\n\n\n<p>I pacchetti di Ballerina permetto di strutturare le attivit\u00e0 di sviluppo in appositi task. Il comando <code>bal<\/code> permette di gestire i singoli pacchetti locali in base a quelli rilasciati nel repository centrale.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>new<\/td><td>Create a Ballerina package. For more information, see&nbsp;<a href=\"https:\/\/ballerina.io\/learn\/get-started\/#create-a-new-package\">Create a new package<\/a>.<\/td><\/tr><tr><td>add<\/td><td>Add a new module to the current package.<\/td><\/tr><tr><td>graph<\/td><td>Print the dependency graph in the console.<\/td><\/tr><tr><td>search<\/td><td>Search Ballerina Central for packages.<\/td><\/tr><tr><td>semver<\/td><td>Validate&nbsp;<a href=\"https:\/\/semver.org\/\">SemVer<\/a>&nbsp;compatibility of the local package changes against any previously published version(s) in Ballerina Central.<\/td><\/tr><tr><td>pull<\/td><td>Pull a package from Ballerina Central.<\/td><\/tr><tr><td>push<\/td><td>Publish a package to Ballerina Central. For more information, see&nbsp;<a href=\"https:\/\/ballerina.io\/learn\/publish-packages-to-ballerina-central\" class=\"ek-link\">Publish packages to Ballerina Central<\/a>.<\/td><\/tr><tr><td>deprecate<\/td><td>Deprecate a version of a package in Ballerina Central.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"gb-headline gb-headline-5012f523 gb-headline-text\">Integrazione al centro<\/h2>\n\n\n\n<p>Quante righe di codice sono necessarie per esporre un servizio REST? La risposta corretta \u00e8: <em>dipende dal linguaggio e dalle librerie disponibili<\/em>. Nel caso di Ballerina queste si riducono al minimo:<br><code>import ballerina\/http;<\/code><br>\u00e8 disponibile un package per la definizione dei servizi HTTP, quindi ci possiamo dedicare allo sviluppo del servizio stesso:<br><code>service \/ on httpListener {<br>    resource function get someGetMethod() returns string {<br>        \/\/ logica applicativa<br>        return \"Some value\";<br>    }<br><br>    \/\/ URI var<br>    resource function get someGetValue\/[string value]() returns string {<br>        return \"Some \" + value;<br>    }<br>}<\/code><\/p>\n\n\n\n<p>Questo appena proposto \u00e8 essenzialmente un mockup, esattamente ci\u00f2 di cui necessitiamo per i test. Con la documentazione Swagger\/OpenApi a disposizione, possiamo rapidamente renderlo accessibile ai sistemi periferici e, internamente, concentrarci sullo sviluppo delle singole funzionalit\u00e0 (risorse) esposte.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-fc1c8a7f gb-headline-text\">Pronto all&#8217;uso<\/h2>\n\n\n\n<p>Integrarsi con il cloud significa implementare connettori che interagiscano con il parco di prodotti disponibili, prendiamo ad esempio l&#8217;esigenza di dover gestire i dati salvati all&#8217;interno di un account Google Drive, Ballerina mette a disposizione una libreria:<br><code>import ballerinax\/trigger.google.drive;<\/code><br>che implementa i metodi <code>onFileCreate, onFolderCreate, onFileUpdate, onFileUpdate, onFolderUpdate, onDelete, onFileTrash, onFolderTrash<\/code> cos\u00ec da poter sottoscrivere ognuno degli eventi disponibili<sup data-fn=\"670dcafd-60e2-4472-ad15-de598219dbd3\" class=\"fn\"><a href=\"#670dcafd-60e2-4472-ad15-de598219dbd3\" id=\"670dcafd-60e2-4472-ad15-de598219dbd3-link\">1<\/a><\/sup>.<\/p>\n\n\n\n<p>In alternativa potremmo aver bisogno di creare un ordine tramite Paypal<sup data-fn=\"f193090e-f59a-4b02-ac91-ac2d319a8465\" class=\"fn\"><a href=\"#f193090e-f59a-4b02-ac91-ac2d319a8465\" id=\"f193090e-f59a-4b02-ac91-ac2d319a8465-link\">2<\/a><\/sup><br><code>import ballerinax\/paypal.orders;<\/code><br>o svariate altre esigenze che possono essere risolte velocemente attraverso le librerie messe a disposizione.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-35cde7ed gb-headline-text\">What you see is what you get<\/h2>\n\n\n\n<p>Una volta raccolti i requisiti di business occorre redigere la documentazione da condividere con gli sviluppatori che implementano il codice, questo normale processo porta naturalmente a creare un distacco tra quanto analizzato e quanto implementato.<\/p>\n\n\n\n<p>L&#8217;integrazione di Ballerina con ide di sviluppo permette di avere costantemente la visibilit\u00e0 che quanto implementato corrisponda a quanto richiesto in fase di analisi. Si pu\u00f2 partire dal disegno del sequence diagram che viene tradotto in codice Ballerina e successivamente verificare che i metodi scritti siano coerenti con quanto definito in fase di analisi.<\/p>\n\n\n\n<div class=\"wp-block-uagb-image uagb-block-d5ba58e7 wp-block-uagb-image--layout-default wp-block-uagb-image--effect-static wp-block-uagb-image--align-none\"><figure class=\"wp-block-uagb-image__figure\"><img decoding=\"async\"  sizes=\"auto, (max-width: 480px) 150px\" src=\"https:\/\/ballerina.io\/images\/vsc-slider-images-5.png\" alt=\"\" width=\"2771\" height=\"2293\" title=\"\" loading=\"lazy\"\/><\/figure><\/div>\n\n\n\n<p>E&#8217; importante comprendere quanto esposto tramite questa immagine: il codice e la relativa rappresentazione in sequence diagram sono equivalenti, ogni modifica apportata ad una delle due componenti influisce sull&#8217;altra in quanto <em>il disegno \u00e8 il codice ed il codice \u00e8 il disegno<\/em>.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-1b18d3ed gb-headline-text\">Integrazione con i progetti Java<\/h2>\n\n\n\n<p>Le organizzazioni hanno investito nel corso degli anni tempo e denaro per implementare applicativi sviluppati in Java, questi possono essere oggi dei programmi che richiedono una ristrutturazione per essere esposti come servizi REST tramite API e quindi interfacce standard.<\/p>\n\n\n\n<p>La richiesta della maggior parte delle aziende \u00e8 quella di poter riutilizzare quanto in loro possesso per evitare ulteriore esborso di capitali e per mantenere il know how degli applicativi stessi.<\/p>\n\n\n\n<p>La struttura di Ballerina permette di integrarsi in maniera naturale con gli applicativi Java, anche se non si tratta di un linguaggio progettato per essere eseguito all&#8217;interno di una JVM, la sua implementazione fornisce piena aderenza alla semantica dei linguaggi.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/ballerina.io\/learn\/images\/ballerina-interop-diagram-v1.png\" alt=\"\"\/><\/figure><\/div>\n\n\n<p>E&#8217; quindi possibile scrivere codice Ballerina per invocare in maniera nativa quanto gi\u00e0 implementato in linguaggio Java. A supporto degli sviluppatori \u00e8 stato rilasciato il tool Bindgen<sup data-fn=\"b0fcf601-05da-4b06-abb2-eb0428c0422c\" class=\"fn\"><a href=\"#b0fcf601-05da-4b06-abb2-eb0428c0422c\" id=\"b0fcf601-05da-4b06-abb2-eb0428c0422c-link\">3<\/a><\/sup> che permette di generare i bindings in linguaggio Ballerina per le relative classi Java.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-96089715 gb-headline-text\">Risposte alle esigenze di mercato<\/h2>\n\n\n\n<p>Ballerina propone alcuni costrutti che possono rispondere a casi d&#8217;uso o possono essere ispirazione per risolverne di pi\u00f9 complessi. All&#8217;interno del proprio sito di documentazione sono descritti gli EIP<sup data-fn=\"20ab39b7-7d9d-42ac-b4d9-f7a37cf262de\" class=\"fn\"><a href=\"#20ab39b7-7d9d-42ac-b4d9-f7a37cf262de\" id=\"20ab39b7-7d9d-42ac-b4d9-f7a37cf262de-link\">4<\/a><\/sup> e gli esempi di implementazione degli stessi.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/ballerina.io\/learn\/enterprise-integration-patterns\/resequencer\/\"><img decoding=\"async\" src=\"https:\/\/www.enterpriseintegrationpatterns.com\/img\/eip1_nav.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<p>Un esempio di risoluzione del pattern:<br><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">strong<\/span>&gt;<\/span>import ballerina\/http;\n\ntype Approval record {\n    TEAM_LEAD|MANAGER|SENIOR_MANAGER leadLevel;\n    int score;\n    int nextPromotionLevel;\n};\n\nconst TEAM_LEAD = 1;\nconst MANAGER = 2;\nconst SENIOR_MANAGER = 3;\n\nfinal map<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Approval&#91;]<\/span>&gt;<\/span> incompleteApprovals = {};\n\nfinal http:Client hrClient = check new (\"http:\/\/api.wso2hr.com.balmock.io\");\n\nservice \/api\/v1 on new http:Listener(8080) {\n\n    resource function post employees\/&#91;string emoloyeeId]\/approval(Approval approvalReq) returns error? {\n        Approval&#91;]? approvals = incompleteApprovals&#91;emoloyeeId];\n        if approvals == () {\n            incompleteApprovals&#91;emoloyeeId] = &#91;approvalReq];\n            return;\n        }\n        approvals.push(approvalReq);\n        if approvals.length() <span class=\"hljs-tag\">&lt; <span class=\"hljs-attr\">3<\/span> {\n            <span class=\"hljs-attr\">return<\/span>;\n        }\n        <span class=\"hljs-attr\">from<\/span> <span class=\"hljs-attr\">Approval<\/span> <span class=\"hljs-attr\">approval<\/span> <span class=\"hljs-attr\">in<\/span> <span class=\"hljs-attr\">approvals<\/span>\n        <span class=\"hljs-attr\">order<\/span> <span class=\"hljs-attr\">by<\/span> <span class=\"hljs-attr\">approval.leadLevel<\/span>\n        <span class=\"hljs-attr\">do<\/span> {\n            <span class=\"hljs-attr\">_<\/span> = <span class=\"hljs-string\">check<\/span> <span class=\"hljs-attr\">hrClient-<\/span>&gt;<\/span>\/promotions\/employees\/&#91;emoloyeeId]\/approval.post(approval, targetType = json);\n        };\n        _ = incompleteApprovals.remove(emoloyeeId);\n    }\n}<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">strong<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Vengono anche proposti use case di integrazione tra prodotti di mercato, un esempio di integrazione dati tra Google Sheets e Salesforce:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/ballerina.io\/learn\/pre-built-integrations\/google-sheets-to-salesforce-integration\/\"><img decoding=\"async\" src=\"https:\/\/ballerina.io\/images\/pre-built\/sequence-diagrams\/google-sheets-to-salesforce-integration.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"gb-headline gb-headline-5b28e52c gb-headline-text\">Curva di apprendimento<\/h2>\n\n\n\n<p>Quando si \u00e8 iniziato a pensare a Ballerina uno degli obiettivi era proprio la volont\u00e0 di proporre un prodotto di semplice utilizzo, per poter analizzare a fondo questo linguaggio in modo da esplorarne tutte funzionalit\u00e0 <a href=\"https:\/\/www.profesia.it\/it\/contattaci\" class=\"ek-link\">puoi contattarci direttamente<\/a> in modo da avere un supporto alla risoluzione dei vari use case.<\/p>\n\n\n\n<p><\/p>\n\n\n<ol class=\"wp-block-footnotes\"><li id=\"670dcafd-60e2-4472-ad15-de598219dbd3\">Listener Google Drive: https:\/\/central.ballerina.io\/ballerinax\/trigger.google.drive\/latest <a href=\"#670dcafd-60e2-4472-ad15-de598219dbd3-link\" aria-label=\"Jump to footnote reference 1\">\u21a9\ufe0e<\/a><\/li><li id=\"f193090e-f59a-4b02-ac91-ac2d319a8465\">Paypal order: https:\/\/central.ballerina.io\/ballerinax\/paypal.orders\/latest <a href=\"#f193090e-f59a-4b02-ac91-ac2d319a8465-link\" aria-label=\"Jump to footnote reference 2\">\u21a9\ufe0e<\/a><\/li><li id=\"b0fcf601-05da-4b06-abb2-eb0428c0422c\">https:\/\/ballerina.io\/learn\/the-bindgen-tool\/ <a href=\"#b0fcf601-05da-4b06-abb2-eb0428c0422c-link\" aria-label=\"Jump to footnote reference 3\">\u21a9\ufe0e<\/a><\/li><li id=\"20ab39b7-7d9d-42ac-b4d9-f7a37cf262de\">https:\/\/www.enterpriseintegrationpatterns.com\/ <a href=\"#20ab39b7-7d9d-42ac-b4d9-f7a37cf262de-link\" aria-label=\"Jump to footnote reference 4\">\u21a9\ufe0e<\/a><\/li><\/ol>","protected":false},"excerpt":{"rendered":"<p>Ballerina \u00e8 un linguaggio di programmazione dedito allo sviluppo di integrazione tra servizi e dati, si basa su un linguaggio semplice supportato dalla possibilit\u00e0 di disegnare sequence diagram dell&#8217;applicativo stesso. L&#8217;obbiettivo di Ballerina \u00e8 quello di astrarre lo sviluppo di applicativi dalla piattaforma che li andranno a contenere, il gruppo di lavoro non si deve&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/\">Read more<\/a><\/p>\n","protected":false},"author":237,"featured_media":27727,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":"[{\"id\":\"670dcafd-60e2-4472-ad15-de598219dbd3\",\"content\":\"Listener Google Drive: https:\\\/\\\/central.ballerina.io\\\/ballerinax\\\/trigger.google.drive\\\/latest\"},{\"id\":\"f193090e-f59a-4b02-ac91-ac2d319a8465\",\"content\":\"Paypal order: https:\\\/\\\/central.ballerina.io\\\/ballerinax\\\/paypal.orders\\\/latest\"},{\"id\":\"b0fcf601-05da-4b06-abb2-eb0428c0422c\",\"content\":\"https:\\\/\\\/ballerina.io\\\/learn\\\/the-bindgen-tool\\\/\"},{\"id\":\"20ab39b7-7d9d-42ac-b4d9-f7a37cf262de\",\"content\":\"https:\\\/\\\/www.enterpriseintegrationpatterns.com\\\/\"}]"},"categories":[10230],"tags":[10319,12135,10596,10438],"collections":[11708],"class_list":{"0":"post-26988","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-linguaggi-programmazione","8":"tag-api-it","9":"tag-ballerina","10":"tag-microservizi","11":"tag-sviluppo-software-it","12":"collections-dalla-community","13":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Ballerina: il linguaggio dedicato all&#039;integrazione tra i servizi - Codemotion Magazine %<\/title>\n<meta name=\"description\" content=\"Scopriamo Ballerina, un linguaggio di programmazione progettato per facilitare l&#039;integrazione tra servizi e dati.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ballerina: il linguaggio dedicato all&#039;integrazione tra i servizi\" \/>\n<meta property=\"og:description\" content=\"Scopriamo Ballerina, un linguaggio di programmazione progettato per facilitare l&#039;integrazione tra servizi e dati.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-15T12:17:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-18T15:41:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2662\" \/>\n\t<meta property=\"og:image:height\" content=\"1888\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"gabroglio\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"gabroglio\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/\"},\"author\":{\"name\":\"gabroglio\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/b432d9b2d57b861b6fc205a1f767112c\"},\"headline\":\"Ballerina: il linguaggio dedicato all&#8217;integrazione tra i servizi\",\"datePublished\":\"2024-05-15T12:17:18+00:00\",\"dateModified\":\"2024-06-18T15:41:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/\"},\"wordCount\":1014,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1.png\",\"keywords\":[\"API\",\"ballerina\",\"microservizi\",\"sviluppo software\"],\"articleSection\":[\"Linguaggi di programmazione\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/\",\"name\":\"Ballerina: il linguaggio dedicato all'integrazione tra i servizi - Codemotion Magazine %\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1.png\",\"datePublished\":\"2024-05-15T12:17:18+00:00\",\"dateModified\":\"2024-06-18T15:41:36+00:00\",\"description\":\"Scopriamo Ballerina, un linguaggio di programmazione progettato per facilitare l'integrazione tra servizi e dati.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1.png\",\"width\":2662,\"height\":1888,\"caption\":\"ballerina linguaggio di programmazione\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Linguaggi di programmazione\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Ballerina: il linguaggio dedicato all&#8217;integrazione tra i servizi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/b432d9b2d57b861b6fc205a1f767112c\",\"name\":\"gabroglio\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/1653294311388-100x100.jpeg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/1653294311388-100x100.jpeg\",\"caption\":\"gabroglio\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/gabroglio\/\"],\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/gabroglio\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ballerina: il linguaggio dedicato all'integrazione tra i servizi - Codemotion Magazine %","description":"Scopriamo Ballerina, un linguaggio di programmazione progettato per facilitare l'integrazione tra servizi e dati.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/","og_locale":"en_US","og_type":"article","og_title":"Ballerina: il linguaggio dedicato all'integrazione tra i servizi","og_description":"Scopriamo Ballerina, un linguaggio di programmazione progettato per facilitare l'integrazione tra servizi e dati.","og_url":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2024-05-15T12:17:18+00:00","article_modified_time":"2024-06-18T15:41:36+00:00","og_image":[{"width":2662,"height":1888,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1.png","type":"image\/png"}],"author":"gabroglio","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"gabroglio","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/"},"author":{"name":"gabroglio","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/b432d9b2d57b861b6fc205a1f767112c"},"headline":"Ballerina: il linguaggio dedicato all&#8217;integrazione tra i servizi","datePublished":"2024-05-15T12:17:18+00:00","dateModified":"2024-06-18T15:41:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/"},"wordCount":1014,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1.png","keywords":["API","ballerina","microservizi","sviluppo software"],"articleSection":["Linguaggi di programmazione"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/","url":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/","name":"Ballerina: il linguaggio dedicato all'integrazione tra i servizi - Codemotion Magazine %","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1.png","datePublished":"2024-05-15T12:17:18+00:00","dateModified":"2024-06-18T15:41:36+00:00","description":"Scopriamo Ballerina, un linguaggio di programmazione progettato per facilitare l'integrazione tra servizi e dati.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1.png","width":2662,"height":1888,"caption":"ballerina linguaggio di programmazione"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/ballerina-il-linguaggio-dedicato-allintegrazione-tra-i-servizi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Linguaggi di programmazione","item":"https:\/\/www.codemotion.com\/magazine\/it\/linguaggi-programmazione\/"},{"@type":"ListItem","position":3,"name":"Ballerina: il linguaggio dedicato all&#8217;integrazione tra i servizi"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/b432d9b2d57b861b6fc205a1f767112c","name":"gabroglio","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/1653294311388-100x100.jpeg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/03\/1653294311388-100x100.jpeg","caption":"gabroglio"},"sameAs":["https:\/\/www.linkedin.com\/in\/gabroglio\/"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/gabroglio\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-600x400.png","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-600x600.png","author_info":{"display_name":"gabroglio","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/gabroglio\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1.png",2662,1888,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-150x150.png",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-300x213.png",300,213,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-768x545.png",768,545,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-1024x726.png",1024,726,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-1536x1089.png",1536,1089,true],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-2048x1453.png",2048,1453,true],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-100x100.png",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-180x128.png",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-896x504.png",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-400x225.png",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-600x400.png",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/05\/image-1-600x600.png",600,600,true]},"uagb_author_info":{"display_name":"gabroglio","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/gabroglio\/"},"uagb_comment_info":0,"uagb_excerpt":"Ballerina \u00e8 un linguaggio di programmazione dedito allo sviluppo di integrazione tra servizi e dati, si basa su un linguaggio semplice supportato dalla possibilit\u00e0 di disegnare sequence diagram dell&#8217;applicativo stesso. L&#8217;obbiettivo di Ballerina \u00e8 quello di astrarre lo sviluppo di applicativi dalla piattaforma che li andranno a contenere, il gruppo di lavoro non si deve&#8230;&hellip;","lang":"it","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/26988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/237"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=26988"}],"version-history":[{"count":2,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/26988\/revisions"}],"predecessor-version":[{"id":27731,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/26988\/revisions\/27731"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/27727"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=26988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=26988"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=26988"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=26988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}