[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$feloqif2s07h3":3,"$f2b637n3zfiy5y":113},{"data":4},[5],{"id":6,"slug":7,"locale":8,"type":9,"title":10,"subtitle":11,"summary":12,"body":13,"primary_topic":14,"knowledge_status":15,"practical_validation":16,"workflow_status":17,"author_id":18,"published_at":19,"updated_at":20,"review_due_at":18,"canonical_url":18,"seo_title":21,"seo_description":12,"hero_asset_id":18,"reading_time":22,"version":23,"technology_versions":24,"review_frequency_days":18,"parent_content_id":25,"sort_in_parent":26,"hub_entry_status":27,"content_blocks":28,"hero_alt_text":18,"hero_caption":18,"hero_credit":18,"publication_scope":105,"access_level":106,"approved_at":18,"approved_by":18,"review_note":18,"home_enabled":107,"home_slot":108,"home_variant":109,"home_priority":110,"home_eyebrow":18,"home_valid_from":18,"home_valid_to":18,"home_image_asset_id":18,"promotion_kind":111,"sponsor_name":18,"sponsor_url":18,"sponsor_disclosure":112},"231d1683-6ff0-4c80-8b51-454493fe16a0","microservizi-service-layer","it","CAPSULE","Service Layer \u002F Application Service","Internal Service Architecture","Usare un Application Service per implementare il caso d'uso e delimitare la transazione locale.","Famiglia: Internal Service Architecture\nOrigine contenuto: Approfondimento integrativo costruito sui materiali architetturali del progetto.\n\nProblema\nUn caso d'uso richiede coordinare dominio, repository e integrazioni senza collocare l'orchestrazione nel Controller o nella persistence.\n\nPattern\nUsare un Application Service per implementare il caso d'uso e delimitare la transazione locale.\n\nCome funziona\nIl Service Layer carica aggregate, invoca comportamenti di dominio, persiste, chiama porte esterne quando necessario e produce outcome. Non deve sostituire il Domain Model con enormi metodi procedurali.\n\nEsempio sanitario\nCreateOrderService verifica PatientPort, costruisce l'ordine, applica le regole, salva via OrderRepository e registra l'evento in outbox.\n\nBenefici\n• Casi d'uso espliciti\n• Boundary transazionale\n• Controller e dominio più puliti\n\nTrade-off\n• Rischio di God Service\n• Possibile duplicazione se i casi d'uso non sono ben definiti\n\nQuando usarlo\nPer operazioni applicative con coordinamento non banale.\n\nQuando evitarlo\nPer concentrare tutte le regole di business in un solo service.\n\nPattern correlati\n• microservizi-domain-model\n• microservizi-repository\n• microservizi-external-service-client\n","73f97745-5500-41e9-9bc7-a0d7a441f2bc","DEEPENED","EXAMPLE_ONLY","PUBLISHED",null,"2026-08-27T19:12:02.157Z","2026-09-05T13:22:19.783Z","Service Layer \u002F Application Service | Capsule Informatiche",7,4,{},"20676d31-9c90-432e-b23c-032bf2ba2a49",920,"PLANNED",[29,33,37,41,44,46,49,52,55,58,61,65,68,71,74,77,80,83,86],{"id":30,"text":31,"type":32},"ms-service-layer-01","Famiglia: Architettura applicativa · Approfondimento","callout",{"id":34,"text":35,"type":36},"ms-service-layer-02","Il problema","heading2",{"id":38,"text":39,"type":40},"ms-service-layer-03","Un caso d'uso richiede coordinare dominio, repository e integrazioni senza collocare l'orchestrazione nel Controller o nella persistence.","paragraph",{"id":42,"text":43,"type":36},"ms-service-layer-04","Il pattern",{"id":45,"text":12,"type":40},"ms-service-layer-05",{"id":47,"text":48,"type":36},"ms-service-layer-06","Come funziona",{"id":50,"text":51,"type":40},"ms-service-layer-07","Il Service Layer carica aggregate, invoca comportamenti di dominio, persiste, chiama porte esterne quando necessario e produce outcome. Non deve sostituire il Domain Model con enormi metodi procedurali.",{"id":53,"text":54,"type":36},"ms-service-layer-08","Esempio sanitario",{"id":56,"text":57,"type":32},"ms-service-layer-09","CreateOrderService verifica PatientPort, costruisce l'ordine, applica le regole, salva via OrderRepository e registra l'evento in outbox.",{"id":59,"text":60,"type":36},"ms-service-layer-10","Benefici",{"id":62,"type":63,"items":64},"ms-service-layer-11","bullet_list","Casi d'uso espliciti\nBoundary transazionale\nController e dominio più puliti",{"id":66,"text":67,"type":36},"ms-service-layer-12","Trade-off",{"id":69,"type":63,"items":70},"ms-service-layer-13","Rischio di God Service\nPossibile duplicazione se i casi d'uso non sono ben definiti",{"id":72,"text":73,"type":36},"ms-service-layer-14","Quando usarlo",{"id":75,"text":76,"type":40},"ms-service-layer-15","Per operazioni applicative con coordinamento non banale.",{"id":78,"text":79,"type":36},"ms-service-layer-16","Quando evitarlo",{"id":81,"text":82,"type":40},"ms-service-layer-17","Per concentrare tutte le regole di business in un solo service.",{"id":84,"text":85,"type":36},"ms-service-layer-18","Pattern correlati",{"id":87,"type":88,"relations":89},"ms-service-layer-19","related_capsules",[90,95,100],{"slug":91,"title":92,"summary":93,"contentId":94},"microservizi-domain-model","Domain Model","Rappresentare invarianti e comportamenti nel dominio, usando entity, value object e aggregate coerenti con il bounded context.","06ef8cec-2431-41db-9ae7-4f3c28e5f238",{"slug":96,"title":97,"summary":98,"contentId":99},"microservizi-repository","Repository","Definire un'astrazione di persistenza orientata agli aggregate e implementarla in un adapter infrastrutturale.","02de4c43-3493-49af-993f-398ed047ba35",{"slug":101,"title":102,"summary":103,"contentId":104},"microservizi-external-service-client","Client per Servizi Esterni","Incapsulare la tecnologia di integrazione in un client\u002Fadapter che implementa una porta applicativa.","1df0ad11-aabf-4fa1-a8d6-b337af0c0d6f","PORTAL","ANONYMOUS",false,"LATEST","AUTO",0,"EDITORIAL","Sponsorizzato",{"sources":114,"secondaryTopics":130,"tags":131,"primaryTopic":147,"technologies":151},[115,123],{"source_id":116},{"id":117,"type":118,"title":119,"author":18,"publisher":120,"edition":121,"url":18,"license_notes":122},"dfb11314-30d0-40ad-b93e-431188a3d6f0","PROJECT_NOTE","Riepilogo architetture piattaforma enterprise sanitaria","Capsule Informatiche","Materiale progettuale","Materiale progettuale già analizzato nel progetto Capsule Informatiche. Usato come riferimento integrativo per esempi sanitari e pattern moderni.",{"source_id":124},{"id":125,"type":126,"title":127,"author":18,"publisher":18,"edition":128,"url":18,"license_notes":129},"dffdee39-b493-4374-9ed8-ace3f16bb789","PDF","JavaScript Domain-Driven Design","Materiale di studio","Materiale di studio già caricato. Usato come riferimento integrativo per DDD, bounded context, modularità e separazione del dominio.",[],[132,137,142],{"tag_id":133},{"id":134,"name":135,"slug":136},"a94e416a-7400-4ff4-8671-a2fc5635c4e0","Microservizi","microservizi",{"tag_id":138},{"id":139,"name":140,"slug":141},"74df0420-fe01-463d-84f1-79bbc7ee7114","Design Pattern","design-pattern",{"tag_id":143},{"id":144,"name":145,"slug":146},"43524fb2-d0fe-4b4b-8143-137f73c134b5","DDD","ddd",[148],{"id":14,"name":149,"slug":150},"Architettura Applicativa","architettura-applicativa",[152,158],{"technology_id":153},{"id":154,"name":155,"slug":156,"vendor":157},"39cdf97c-a2aa-43ee-9aa0-15ea178c0f97","Java","java","Oracle \u002F OpenJDK",{"technology_id":159},{"id":160,"name":161,"slug":162,"vendor":163},"36e283e6-d1d9-4e62-a4b1-9d14f05b7e23","Spring Boot","spring-boot","Broadcom"]