yass2

Yet Another Service Solution

License

License

BSD-3-Clause
Categories

Categories

JavaScript Languages
GroupId

GroupId

ch.softappeal.yass2
ArtifactId

ArtifactId

yass2-js
Last Version

Last Version

5.0.0
Release Date

Release Date

Type

Type

module
Description

Description

yass2
Yet Another Service Solution
Project URL

Project URL

https://github.com/softappeal/yass2
Project Organization

Project Organization

softappeal GmbH Switzerland
Source Code Management

Source Code Management

https://github.com/softappeal/yass2

Download yass2-js

Dependencies

compile (4)

Group / Artifact Type Version
org.jetbrains.kotlin : kotlin-stdlib-js jar 1.3.72
org.jetbrains.kotlinx : kotlinx-coroutines-core-js jar 1.3.8
org.jetbrains.kotlin : kotlin-stdlib-common jar 1.3.72
org.jetbrains.kotlinx : kotlinx-coroutines-core-common jar 1.3.8

Project Modules

There are no modules declared in this project.

yass2 (Yet Another Service Solution)

  • yass2 is
    • a small Kotlin Multiplatform library
    • for efficient asynchronous/non-blocking Coroutines based peer-to-peer communication
    • enforcing type-safe contracts with interfaces and data transfer objects
                         contract library
                       +-----------------------------------------+
                       | // contract definition                  |
                       | interface Calculator {                  |
                       |   suspend fun add(a: Int, b: Int): Int  |
                       | }                                       |
                       +-----------------------------------------+

  client process                             server process
+----------------------------------+       +----------------------------------------------------+
| // contract usage                |       | // contract implementation                         |
| val calculator: Calculator = ... |       | class CalculatorImpl : Calculator {                |
| println(calculator.add(1, 2))    |       |   override suspend fun add(a: Int, b: Int) = a + b |
|                                  |       | }                                                  |
|..................................|       |....................................................|
|         contract library         |       |                 contract library                   |
|..................................|       |....................................................|
|          yass2 library           |       |                  yass2 library                     |
|..................................|       |....................................................|
|        transport library         | <---> |                transport library                   |
+----------------------------------+       +----------------------------------------------------+
  • provides unidirectional and session based bidirectional remoting

  • provides Ktor transport adaptors for Http, WebSocket and plain Socket

  • Javascript transport uses the Fetch and the WebSocket API instead of Ktor

  • provided either with reflection (works only on the JVM platform and is slower) or by generated code (works on any platform and is faster)

    • fast, compact and extendable binary serializer for high throughput and low latency
    • dumper (generic object printer)
    • interceptor (around advice, aspect-oriented programming)
    • remoting (remote proxy and invoker)
  • Tutorial

  • Open Source (BSD-3-Clause license)

  • yass2 has multiple modules with the following dependencies

yass2-core
     ^
     |
     +--- yass2-coroutines ---> kotlinx-coroutines-core
     |         ^
     |         |
     |    yass2-ktor ---> io.ktor
     |
     |
     +--- yass2-reflect ---> kotlin-reflect
               ^
               |
          yass2-generate
ch.softappeal.yass2

softappeal

softappeal GmbH

Versions

Version
5.0.0
4.0.0
3.0.0
2.0.0
0.0.0.2
0.0.0.1