Comments (3)
Another big advantage of having IoC is that will be much easier to modularise the codebase which offers greater control over the whole core. An example would be that we could split the parts like API, database, logging, etc. into modules which creates better separation of concerns and reduces the size of the installation on relays and things like raspberrys.
- arkecosystem/core-database-sequelize
- arkecosystem/core-public-api
- arkecosystem/core-winston-logging
Now we could register those packages in the container like container.register('database', require(config.database.driver))
where database.driver
would be @arkecosystem/core-database-sequelize
.
If I wanted to use my custom driver faustbrian/custom-db-driver
I would just pull in that package, set the driver to faustbrian/custom-db-driver
and if I adhere to the database interface the application should just continue to work because the IoC bound the faustbrian/custom-db-driver
to the container.
from core.
Also testing will be much easier & cleaner if we split all the sections of the core into modules because each module will only contain tests that are related to the module itself.
from core.
Well debugging IoC is always a bit of a nightmare, and my experience with Java IoC was pretty bad when i started hardcore optimisation for reading satellite images.
On blockchain, we don't have much need in making the best architected software for the backend, the reason is the tradeoff to have fast optimised way to deal with data stream.
We are not like a CRM software handling complex interactions between processes. We have a extremely simple design (blocks transactions and peers) to deal with in the most optimised way.
I may be wrong but IoC looks over engineering here
from core.
Related Issues (20)
- Throttling outgoing requests HOT 1
- No action '[object Object]' found HOT 4
- Validation failure in endpoint /api/locks/unlocked
- Missing confirmations HOT 1
- 0 confirmation HOT 5
- ServiceProvider's bootWhen method with serviceProvider arg always being undefined HOT 1
- deploy HOT 4
- deploy and relay logs HOT 1
- Internal server error using v1 transactions when fetching unconfirmed transactions
- Updating core while it is running causes either SIGSEGV, module not found error, or 100% CPU HOT 5
- Approval is based on initial genesis supply only
- ℹ multipleResolves (a promise was rejected multiple times) HOT 2
- internal server error if using non-existent orderBy column in api
- IPFS CIDv1 not supported by the ipfs transaction type HOT 1
- /api/blocks not working correctly >= 3.2.1 HOT 3
- core-api: pagination urls are missing range parameters
- how change the env:paths? HOT 1
- delegates api endpoint duplicates resigned delegates and some are missing
- /api/delegates/{id}/blocks endpoint does not honour query params
- Too Many Requests 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 core.