Comments (5)
@padnom So, brokers in general live in the same realm as your services and exposure components (say controllers for your APIs for instance). this is what you call Core
project.
Infrastructure to me is three things:
- Where you provision your cloud components
- Where you define your build steps
- Where you define your release steps
that's infra. very different from integration components.
In your scenario, I would have an ISqlStorageBroker
and IMongoStorageBroker
for each implementation.
The reason for that, is that your interface/contract won't be able to withstand both. So go that route.
from the-standard.
@hassanhabib
Thx for you reply.
I'm little bit confuse because in Infrastructure layer.
This layer contains classes for accessing external resources such as file systems, web services, smtp, and so on. These classes should be based on interfaces defined within the application layer.
usualy I saw Repositories implementation.
from the-standard.
@padnom the concept of infrastructure to give you access to external resources might not support your ability to access resources within the system you're running on.
For instance, let's say we want DateTimeBroker
where are you going to put that? Is it in the infrastructure? but it's not exactly external?
The other thing here is that the approach you mentioned seems to rely heavily on foundation services (core logic) owning the contract and brokers having to adhere to it. At first glance, this seems very convincing. But then you truly try to switch brokers and now you end up writing business logic (selection, iteration or sequencing) into your thin layer of integration.
If we are trying to achieve true abstraction here. then we need to first understand that doing it in one step isn't realistic without breaking some rules. in The Standard abstract happens on two different steps.
First step is to abstract away native/external functionality. and the second step is to abstract away contracts.
There's also another aspect here in terms of sharing libraries to provide access to resources. I'm not sure this is the best route to go about that. creating centralized components that are used across multiple microservices always causes a single-point-of-failure situation.
Let's jump on a call and discuss this on Discord.
from the-standard.
Thanks, I understand better.
I would have liked to do this on discord.
Unfortunately, my English is so bad :D.
from the-standard.
@padnom my English isn't any better either lol
Closing this issue.
from the-standard.
Related Issues (20)
- DOCUMENTATION: Add a section for events and its exceptions
- DOCUMENTATION: Add FAQ for each chapter
- DOCUMENTATION: Add The Standard in JavaScript
- DOCUMENTATION: Branch and commit naming conventions HOT 1
- DOCUMENTATION: Add Dead-End Services HOT 3
- Standardizing brokers with complex SQL queries and not straight forward CRUD queries
- DOCUMENTATION: Add More Details About Pure Contracts for Brokers (Spal/Non-Spal)
- DOCUMENTATIONS: Add Reasoning Behind `is` HOT 1
- DOCUMENTATION: SFAL (Standardized Framework Abstraction Library) HOT 3
- CODE RUB: Add Space Between Two Words
- DOCUMENTATION: Version 2.10.0 PDF Updates HOT 2
- RELEASE: Version 2.10.0 Tag Creation HOT 1
- DOCUMENTATION: Document the Three Layers of Abstraction
- CODE RUB: Outdated Explanation Of Sample Code In Foundations.md
- CODE RUB: Typo In Sample Code In Processings.md
- DOCUMENTATION: Grammer Updates HOT 1
- RELEASES: Version 2.10.1 HOT 2
- CODE RUB: Standard Version 2.10.1 Upgrade
- CODE RUB: Change UpsertData() method to UpsertDataList() HOT 1
- CODE RUB: Change `equivelant` -> `equivalent` HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from the-standard.