yass2-ktor

Yet Another Service Solution

License

License

BSD-3-Clause
Categories

Categories

Data
GroupId

GroupId

ch.softappeal.yass2
ArtifactId

ArtifactId

yass2-ktor-metadata
Last Version

Last Version

7.1.0
Release Date

Release Date

Type

Type

module
Description

Description

yass2-ktor
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-ktor-metadata

Dependencies

compile (3)

Group / Artifact Type Version
ch.softappeal.yass2 : yass2-coroutines-metadata jar 7.1.0
io.ktor : ktor-client-core jar 1.5.2
org.jetbrains.kotlin : kotlin-stdlib-common jar 1.4.32

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)
  • 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
+-------------------------------------------+------------+--------+
| package/file                              | module     | target |
+-------------------------------------------+------------+--------+
| Cleanup.kt                                | core       | common |
| Dumper.kt                                 | core       | common |
| Interceptor.kt                            | core       | common |
| reflect                                   |            |        |
|     DumperReflection.kt                   | reflect    | jvm    |
|     InterceptorReflection.kt              | reflect    | jvm    |
| remote                                    |            |        |
|  |  Message.kt                            | core       | common |
|  |  Remote.kt                             | core       | common |
|  +- reflect                               |            |        |
|  |      ServiceReflection.kt              | reflect    | jvm    |
|  +- coroutines                            |            |        |
|      |  RemoteFlow.kt                     | coroutines | common |
|      |  Sync.kt                           | coroutines | common |
|      +- session                           |            |        |
|             Session.kt                    | coroutines | common |
|             SessionConnector.kt           | coroutines | common |
| serialize                                 |            |        |
|  |  Serializer.kt                         | core       | common |
|  +- binary                                |            |        |
|      |  BaseEncoders.kt                   | core       | common |
|      |  BinarySerializer.kt               | core       | common |
|      |  Int.kt                            | core       | common |
|      |  VarInt.kt                         | core       | common |
|      +- reflect                           |            |        |
|             BinarySerializerMeta.kt       | reflect    | common |
|             BinarySerializerReflection.kt | reflect    | jvm    |
| transport                                 |            |        |
|  |  BinaryMessageSerializer.kt            | core       | common |
|  |  Bytes.kt                              | core       | common |
|  |  TransportConfig.kt                    | core       | common |
|  +- session                               |            |        |
|  |      BinaryPacketSerializer.kt         | coroutines | common |
|  +- js                                    |            |        |
|  |      Connect.kt                        | coroutines | js     |
|  |      Tunnel.kt                         | coroutines | js     |
|  +- ktor                                  |            |        |
|         ByteChannel.kt                    | ktor       | common |
|         Http.kt                           | ktor       | common |
|         WebSocket.kt                      | ktor       | common |
|         HttpServer.kt                     | ktor       | jvm    |
|         Socket.kt                         | ktor       | jvm    |
| generate                                  |            |        |
|     Generate.kt                           | generate   | jvm    |
|     GenerateBinarySerializer.kt           | generate   | jvm    |
|     GenerateDumperProperties.kt           | generate   | jvm    |
|     GenerateProxyFactory.kt               | generate   | jvm    |
|     GenerateRemote.kt                     | generate   | jvm    |
+-------------------------------------------+------------+--------+
ch.softappeal.yass2

softappeal

softappeal GmbH

Versions

Version
7.1.0
7.0.2
7.0.1
7.0.0
6.1.0
6.0.0