<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/adam-bien-s-blog-j5vai0nvm" -->

---
title: adam bien's blog | daily.dev
description: BCE (Boundary-Control-Entity) architecture defines strict dependency rules within and between business components. Inside a component, dependencies flow...
canonical: https://daily.dev/posts/adam-bien-s-blog-j5vai0nvm
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: adam bien's blog | daily.dev
og:description: BCE (Boundary-Control-Entity) architecture defines strict dependency rules within and between business components. Inside a component, dependencies flow...
og:url: https://daily.dev/posts/adam-bien-s-blog-j5vai0nvm
og:image: https://api.daily.dev/og/posts/J5vaI0nvM.png
og:image:alt: adam bien's blog
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# adam bien's blog

**[Adam Bien](https://daily.dev/sources/adam-bien)** · 2 min read · 0 upvotes · 0 comments

## Summary

BCE (Boundary-Control-Entity) architecture defines strict dependency rules within and between business components. Inside a component, dependencies flow downward: boundary to control to entity, or boundary to entity directly. Entities never depend upward — they emit events instead. Between components, control-to-control and entity-to-entity calls are allowed and direct, while boundary-to-boundary calls should be avoided. A useful heuristic: if a component communicates more with neighbors than with itself, it was split incorrectly.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://adambien.blog/roller/abien/entry/bce_who_may_call_whom>

## Questions this post answers

### In the BCE architecture pattern, what dependencies are allowed inside a business component?

Dependencies must point downward: boundary can call control, and control calls entity. Boundary can also call entity directly for simple use cases, skipping control. Entities must never call control or boundary directly; instead, an entity emits an event that any layer of any component can process, keeping the entity unaware of who receives it.

_Developers structuring layered components can compare BCE dependency rules against their own designs on daily.dev._

### Is it okay for one business component's control layer to call another component's control layer directly in a BCE design?

Yes, control-to-control calls between business components are allowed and can be made directly without requiring interfaces in between. In Quarkus and MicroProfile applications, the control is simply injected. Boundary-to-boundary calls between components should be avoided, though acceptable temporarily early in a project before a control layer takes over.

_Teams deciding how components should communicate can track pattern guidance like this on daily.dev._

### How do I know if I split a business component in the wrong place?

Count the internal links versus the links to neighboring components: if a component communicates less with itself than with its neighbors, it was cut in the wrong place. This heuristic helps validate whether component boundaries in a BCE (Boundary-Control-Entity) design are drawn correctly.

_Anyone refining component boundaries can weigh heuristics like this while reviewing architecture on daily.dev._

## Similar posts on daily.dev

- [From Java EE to Quarkus and LLMs: Adam Bien’s Playbook for Boring, Future‑Proof Systems](https://daily.dev/posts/from-java-ee-to-quarkus-and-llms-adam-bien-s-playbook-for-boring-future-proof-systems-0metu7xbn) · InfoQ · 16 upvotes · 0 comments
- [The Modular Monolith Boundary I Couldn't Take Back](https://daily.dev/posts/the-modular-monolith-boundary-i-couldn-t-take-back-6vxxy5za5) · Milan Jovanović · 42 upvotes · 1 comments
- [No, Your Domains and Bounded Contexts Don’t Map 1 on 1](https://daily.dev/posts/no-your-domains-and-bounded-contexts-don-t-map-1-on-1-rh3kxenlx) · Mathias Verraes · 0 upvotes · 0 comments

---

Tags: [#architecture](https://daily.dev/tags/architecture), [#quarkus](https://daily.dev/tags/quarkus), [#domain-driven-design](https://daily.dev/tags/domain-driven-design)

[View this post on daily.dev](https://daily.dev/posts/adam-bien-s-blog-j5vai0nvm)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"adam bien's blog","url":"https://daily.dev/posts/adam-bien-s-blog-j5vai0nvm","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/adam-bien-s-blog-j5vai0nvm"},"datePublished":"2026-08-11T15:24:22.010Z","dateModified":"2026-09-14T06:42:26.364Z","description":"BCE (Boundary-Control-Entity) architecture defines strict dependency rules within and between business components. Inside a component, dependencies flow...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d365e8cabb5d95ba36aaa092c23f211d?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d365e8cabb5d95ba36aaa092c23f211d?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Adam Bien","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Adam Bien","logo":"https://media.daily.dev/image/upload/s--CInnAL-q--/f_auto,q_auto/v1773644276/logos/adam-bien?_a=BAMAMiiu0","url":"https://daily.dev/sources/adam-bien"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/adam-bien-s-blog-j5vai0nvm","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"architecture,quarkus,domain-driven-design","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Adam Bien","item":"https://daily.dev/sources/adam-bien"},{"@type":"ListItem","position":3,"name":"adam bien's blog"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/adam-bien-s-blog-j5vai0nvm#faq","mainEntity":[{"@type":"Question","name":"In the BCE architecture pattern, what dependencies are allowed inside a business component?","acceptedAnswer":{"@type":"Answer","text":"Dependencies must point downward: boundary can call control, and control calls entity. Boundary can also call entity directly for simple use cases, skipping control. Entities must never call control or boundary directly; instead, an entity emits an event that any layer of any component can process, keeping the entity unaware of who receives it. Developers structuring layered components can compare BCE dependency rules against their own designs on daily.dev."}},{"@type":"Question","name":"Is it okay for one business component's control layer to call another component's control layer directly in a BCE design?","acceptedAnswer":{"@type":"Answer","text":"Yes, control-to-control calls between business components are allowed and can be made directly without requiring interfaces in between. In Quarkus and MicroProfile applications, the control is simply injected. Boundary-to-boundary calls between components should be avoided, though acceptable temporarily early in a project before a control layer takes over. Teams deciding how components should communicate can track pattern guidance like this on daily.dev."}},{"@type":"Question","name":"How do I know if I split a business component in the wrong place?","acceptedAnswer":{"@type":"Answer","text":"Count the internal links versus the links to neighboring components: if a component communicates less with itself than with its neighbors, it was cut in the wrong place. This heuristic helps validate whether component boundaries in a BCE (Boundary-Control-Entity) design are drawn correctly. Anyone refining component boundaries can weigh heuristics like this while reviewing architecture on daily.dev."}}]}
```

