Autogenerate Multi Network Handlers for GoLang written Services Logic Methods
Switch branches/tags
Nothing to show
Clone or download
OmidHekayati Improve idea in network layers.
Remove IPv4, TCP, UDP support due old concepts.
Instead use go standard library if needed!
Latest commit bc15e9e Oct 28, 2018
Permalink
Failed to load latest commit information.
example/example.com
.gitignore
LICENSE
OSI-application-CoAP.go
OSI-application-DNS.go
OSI-application-GraphQL.go
OSI-application-HTTP.go
OSI-application-MQTT.go Some improvment in idea Sep 1, 2018
OSI-application-RPC.go
OSI-application-SOAP.go
OSI-application-gRPC.go
OSI-application-jsonrpc.go
OSI-application-sAPP.go
OSI-application-sRPC.go
OSI-network-IPv6.go
OSI-transport-SCP.go
README.md
connection-handler.go
connection-pool.go
data-layer.go
documentation-openapi.go
error.go
errors.go
firewall.go
main.go
make-sdk-dart.go
make-sdk-go.go
make-sdk-js.go
make-sdk-php.go
make-sdk-python.go
read-logics.go
starter-kit.go
template-error-beauty.go Add overall idea templates Aug 12, 2018
template-main.go
validate-data.go

README.md

ChaparKhane

Autogenerate Multi Network Handlers for GoLang written Services Logic Methods in specific template like example. It will also make SDK in multi language for client usage.

Supported Protocol

All information get from IANA Resourses:

How to make & build a project?

  • Make service by: ./ChaparKhane --loc:github.com/.../... --methods:3
    You can add methods manually by copy method files or run make service again to add new method.
  • Complete manifest.json details in root service folder.
  • Change methods details as business need's.
  • Build to autogenerate all needed code by: ./ChaparKhane --loc:github.com/.../... --build

Done in autogenerate layers

  • Serialize and deserialize data format like json, xml, ... would be faster up to 5x because of not use of reflection
    e.g. https://github.com/mailru/easyjson , https://github.com/pquerna/ffjson
  • Check & validate request data
  • Make handlers to recieve data and call logic methods.
  • Make API documentation in many standards e.g. OpenAPI(Swagger), ...
  • Make SDK in multi language & system e.g. Go, JS, ...

Architecure details

Microservice version

We use git tag to determine last version of every microservice. Each microservice must have a tag on each version. e.g. autentication-v0.0.1-alpha

Global filters

If any active filters return any kind of error in return of functions, The request will be responded with that error. They also can remove or add data to request structure. e.g. add or remove http header.

Build rules

  • If commit set as the version tag, All logic methods must be bug free, Otherwise Building will be failed with error!
  • If commit not set as the version tag, Each methods has error will be eliminate from building process with error!

Security

Everything only can run in security protocol like TLS. we force redirect http to https requests.

Compress

To achieve better bandwidth we force to compress request and awnser. e.g. gzip

Management and analitics

Logging

Caching

We just cache HTTP GET method. we must work to cache other get method.

What is prohibited?

  • Autogenerated code should not be edited, since it may be automatically overwritten by the same process.
  • Don't use minor version for service breaking changes! We just use major version number to versioning API.

Production ready!?

This package is under development and not ready to use in real production. It can have breakable changes until version 1 release. But we are glad to hear your experience or idea about this package. So please feedback us!