yass2

Yet Another Service Solution

License

License

BSD-3-Clause
GroupId

GroupId

ch.softappeal.yass2
ArtifactId

ArtifactId

yass2
Last Version

Last Version

5.0.0
Release Date

Release Date

Type

Type

pom
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

How to add to project

<!-- https://jarcasting.com/artifacts/ch.softappeal.yass2/yass2/ -->
<dependency>
    <groupId>ch.softappeal.yass2</groupId>
    <artifactId>yass2</artifactId>
    <version>5.0.0</version>
    <type>pom</type>
</dependency>
// https://jarcasting.com/artifacts/ch.softappeal.yass2/yass2/
implementation 'ch.softappeal.yass2:yass2:5.0.0'
// https://jarcasting.com/artifacts/ch.softappeal.yass2/yass2/
implementation ("ch.softappeal.yass2:yass2:5.0.0")
'ch.softappeal.yass2:yass2:pom:5.0.0'
<dependency org="ch.softappeal.yass2" name="yass2" rev="5.0.0">
  <artifact name="yass2" type="pom" />
</dependency>
@Grapes(
@Grab(group='ch.softappeal.yass2', module='yass2', version='5.0.0')
)
libraryDependencies += "ch.softappeal.yass2" % "yass2" % "5.0.0"
[ch.softappeal.yass2/yass2 "5.0.0"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

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 library             |         |                  contract library                  |
|.........................................|         |....................................................|
|     // 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 |
|                                         |         | }                                                  |
|.........................................|         |....................................................|
|             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