30 lines
1.3 KiB
Markdown
30 lines
1.3 KiB
Markdown
|
|
|
|
TODO: write a blog post ...
|
|
|
|
# Inspiration
|
|
|
|
The basic concept for this SDK comes from years of web development. A number of
|
|
patterns have arisen in that realm of software which enable people to build remote
|
|
servers with APIs remarkably quickly and with high stability. The
|
|
[ABCI](https://github.com/tendermint/abci) application interface is similar to
|
|
a web API (`DeliverTx` is like POST and `Query` is like GET while `SetOption` is like
|
|
the admin playing with the config file). Here are some patterns that might be
|
|
useful:
|
|
|
|
* MVC - separate data model (storage) from business logic (controllers)
|
|
* Routers - easily direct each request to the appropriate controller
|
|
* Middleware - a series of wrappers that provide global functionality (like
|
|
authentication) to all controllers
|
|
* Modules (gems, package, etc) - developers can write a self-contained package
|
|
with a given set of functionality, which can be imported and reused in other
|
|
apps
|
|
|
|
Also at play is the concept of different tables/schemas in databases, thus you can
|
|
keep the different modules safely separated and avoid any accidental (or malicious)
|
|
overwriting of data.
|
|
|
|
Not all of these can be compare one-to-one in the blockchain world, but they do
|
|
provide inspiration for building orthogonal pieces that can easily be combined
|
|
into various applications.
|