DNV.Vista.SDK 0.1.189

There is a newer version of this package available.
See the version list below for details.
dotnet add package DNV.Vista.SDK --version 0.1.189                
NuGet\Install-Package DNV.Vista.SDK -Version 0.1.189                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DNV.Vista.SDK" Version="0.1.189" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DNV.Vista.SDK --version 0.1.189                
#r "nuget: DNV.Vista.SDK, 0.1.189"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install DNV.Vista.SDK as a Cake Addin
#addin nuget:?package=DNV.Vista.SDK&version=0.1.189

// Install DNV.Vista.SDK as a Cake Tool
#tool nuget:?package=DNV.Vista.SDK&version=0.1.189                

GitHub Workflow Status GitHub Workflow Status GitHub<br/> SDK NuGet current SDK NuGet prerelease<br/> SDK NPM current SDK NPM current<br/>

Vista SDK

The Vista team at DNV are working on tooling related to

  • DNV Vessel Information Structure (VIS)
  • ISO 19847 - Ships and marine technology — Shipboard data servers to share field data at sea
  • ISO 19848 - Ships and marine technology — Standard data for shipboard machinery and equipment

In this repository we codify the rules and principles of VIS and related ISO-standards to enable and support users and implementers of the standards.

Our plan is to develop SDKs for some of the most common platforms. We are starting with .NET, Python and JavaScript. We will be developing these SDKs as open source projects. Feel free to provide input, request changes or make contributions by creating issues in this repository.

For general documentation relating to VIS and relating standard. See docs.vista.dnv.com.

Status

[!NOTE] The v0.1 versions of the SDK are currently in production use at DNV for various services. We are currently working on the v0.2 version of the SDKs where we are adressing several usability and API design issues. When v0.2 is finalized we are hoping that v1.0 will quickly follow. New users should stick to v0.1 currently while we work on stabilizing APIs and design. Functionally (in terms of domain), not much will change

Content

Each SDK makes use of the contents of the resources and schemas folders to generate code and use the standards.

📦vista-sdk
 ┣ 📂resources
 ┃ ┣ 📜codebooks-vis-3-4a.json.gz
 ┃ ┗ 📜gmod-vis-3-4a.json.gz
 ┣ 📂schemas
 ┃ ┣ 📂json
 ┃ ┃ ┣ 📜DataChannelList.schema.json
 ┃ ┃ ┗ 📜TimeSeriesData.schema.json
 ┣ 📂csharp
 ┣ 📂python
 ┣ 📂js
 ┣ 📜LICENSE
 ┗ 📜README.md

SDK outline

This section will outline the various components and modules in our SDKs.

Vessel Information Structure

There are various components of VIS in our SDKs:

  • Generic product model (Gmod) - C#, JS
  • Product model (Pmod) - JS
  • Codebooks (metadata tags) - C#, JS
  • Locations - C#, JS

For more information on this concepts, check out docs.vista.dnv.com.

ISO-19848 and ISO-19847

Part of these standards are the definition of datastructures used for communicating and sharing sensor data. Note that while compression isnt explicitly mentioned in these standards, the standard doesnt prohibit use of compression when implementing these standards, as long as the datastructures remain the same.

Related components:

  • Universal ID & Local ID - C#, JS
  • DataChannelList & TimeSeriesData - C#, JS

Benchmarks

We are developing some benchmarks to keep track of the performance characteristics of the libraries we are creating.

Transport packages - DataChannelList and TimeSeriesData

The ISO-19848/10947 standards define the schema for the XML encoding of the transport packages. The JSON encoding is only provded in example form, but we have developed JSON schemas for these packages here.

In the benchmark below we try to isolate the difference between Json and Avro encoding, and measure the effect of compression using Bzip2 and Brotli. See the Payload size column below for an insight into size of ISO-19848 packages over the wire. Avro has been included as an example binary encoding - it is not currently part of the standard. The latency measurements in this context are less useful, as they are platform-specific. See csharp/benchmark for more details on the method of the benchmarks.


BenchmarkDotNet=v0.13.1, OS=Windows 10.0.19043.1645 (21H1/May2021Update)
11th Gen Intel Core i9-11950H 2.60GHz, 1 CPU, 16 logical and 8 physical cores
.NET SDK=6.0.202
  [Host]                        : .NET 6.0.4 (6.0.422.16404), X64 RyuJIT
  DataChannelList serialization : .NET 6.0.4 (6.0.422.16404), X64 RyuJIT

Job=DataChannelList serialization  IterationCount=3  LaunchCount=1
WarmupCount=3

Method Categories CompressionLevel Mean Error StdDev Payload size
Json Uncompressed ? 906.4 μs 106.4 μs 5.83 μs 285.92 KB
Avro Uncompressed ? 702.2 μs 337.7 μs 18.51 μs 113.22 KB
Json Brotli ? 363,783.2 μs 468,803.0 μs 25,696.67 μs 18.31 KB
Avro Brotli ? 129,235.6 μs 35,572.9 μs 1,949.87 μs 18.56 KB
Json Bzip2 5 42,353.5 μs 16,058.2 μs 880.20 μs 19.19 KB
Avro Bzip2 5 12,175.2 μs 9,095.2 μs 498.54 μs 19.5 KB
Json Bzip2 9 48,419.8 μs 16,895.3 μs 926.09 μs 19.19 KB
Avro Bzip2 9 13,762.6 μs 2,310.1 μs 126.62 μs 19.5 KB

API patterns

Immutability

Domain models exposed in the SDKs are generally immutable, the builder APIs construct new instances while passing along the old data that is not modified by the builder method invoked.

Builder pattern

Typically, when the SDK provides code for building classes, it does so in a Builder Pattern. It provides possibility to chain using With, TryWith and Without methods.

builder = Create(someIntro)
    .WithSomeValue(someValue)
    .TryWithSomeOtherValue(someOtherValue)
    .WithoutSomeThirdValue() // usually without/limited arguments
builder = builder.TryWithValue(item, out var success)
  • With should be used when the operation is expected to receive non-nullable values and succeed without further checking. It will throw error if provided with wrong arguments.
  • TryWith should be used in two cases: When you don't want to be bothered by failures behind the scene, and when you want to know if it went ok, but without exceptions. If you want to check if the opration went as expected, you can use the try do out param - "succeeded" e.g. TryWithSomething(intput, out bool succeeded).
  • Without provides functionality for removing certain elements from the chain. Typically without arguments/limited arguments
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on DNV.Vista.SDK:

Package Downloads
DNV.Vista.SDK.System.Text.Json

The Vista SDK packages codify the rules and principles of DNV Vessel Information Structure (VIS) and ISO19848/19847 standards to enable and support users and implementers. DNV.Vista.SDK.System.Text.Json implements JSON support for the ISO19848 packages.

DNV.Vista.SDK.Mqtt

The Vista SDK packages codify the rules and principles of DNV Vessel Information Structure (VIS) and ISO19848/19847 standards to enable and support users and implementers. DNV.Vista.SDK.Mqtt implements a MQTT-friendly variant of the ISO19848 Local ID.

DNV.Vista.SDK.Apache.Avro

The Vista SDK packages codify the rules and principles of DNV Vessel Information Structure (VIS) and ISO19848/19847 standards to enable and support users and implementers. DNV.Vista.SDK.Apache.Avro implements Avro support for the ISO19848 packages.

DNV.Vista.SDK.System.Xml

The Vista SDK packages codify the rules and principles of DNV Vessel Information Structure (VIS) and ISO19848/19847 standards to enable and support users and implementers. DNV.Vista.SDK.System.Xml implements XML support for the ISO19848 packages.

DNV.Vista.Gateway.Client

The Vista Gateway Client provides a configured client to enable and support users and implementers ingest data to DNV.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.2.0-preview-209 311 9/10/2024
0.2.0-preview-208 188 8/13/2024
0.2.0-preview-205 143 7/16/2024
0.2.0-preview-203 132 6/25/2024
0.2.0-preview-202 134 6/24/2024
0.2.0-preview-201 159 6/17/2024
0.2.0-preview-199 177 6/17/2024
0.2.0-preview-196 177 5/30/2024
0.2.0-preview-195 162 5/29/2024
0.2.0-preview-190 256 4/5/2024
0.2.0-preview-188 216 3/1/2024
0.2.0-preview-187 210 2/22/2024
0.2.0-preview-179 226 2/21/2024
0.2.0-preview-176 254 2/20/2024
0.2.0-preview-175 247 2/20/2024
0.1.206 230 7/16/2024
0.1.189 295 4/5/2024
0.1.178 300 2/21/2024
0.1.177 290 2/21/2024
0.1.174 296 2/20/2024
0.1.173 268 2/20/2024
0.0.2-preview-170 278 2/9/2024
0.0.2-preview-163 266 1/16/2024
0.0.2-preview-162 352 12/5/2023
0.0.2-preview-159 280 11/30/2023
0.0.2-preview-154 259 11/29/2023
0.0.2-preview-153 274 11/27/2023
0.0.2-preview-149 248 11/27/2023
0.0.2-preview-144 394 10/23/2023
0.0.2-preview-143 253 10/23/2023
0.0.2-preview-142 263 10/23/2023
0.0.2-preview-140 358 9/21/2023
0.0.2-preview-138 302 9/20/2023
0.0.2-preview-137 266 9/20/2023
0.0.2-preview-136 250 9/20/2023
0.0.2-preview-135 269 9/19/2023
0.0.2-preview-134 257 9/19/2023
0.0.2-preview-133 279 9/19/2023
0.0.2-preview-132 262 9/15/2023
0.0.2-preview-131 274 9/12/2023
0.0.2-preview-130 252 9/11/2023
0.0.2-preview-129 293 9/1/2023
0.0.2-preview-128 299 8/31/2023
0.0.2-preview-127 275 8/15/2023
0.0.2-preview-126 252 8/11/2023
0.0.2-preview-125 250 8/11/2023
0.0.2-preview-115 277 8/10/2023
0.0.1-preview-98 431 3/29/2023
0.0.1-preview-97 303 3/24/2023
0.0.1-preview-96 403 3/19/2023
0.0.1-preview-95 297 3/19/2023
0.0.1-preview-94 310 3/19/2023
0.0.1-preview-93 303 3/19/2023
0.0.1-preview-92 289 3/15/2023
0.0.1-preview-91 290 3/13/2023
0.0.1-preview-90 289 3/8/2023
0.0.1-preview-89 276 3/8/2023
0.0.1-preview-88 282 2/19/2023
0.0.1-preview-87 305 2/19/2023
0.0.1-preview-86 277 2/19/2023
0.0.1-preview-80 256 2/17/2023
0.0.1-preview-78 300 1/6/2023
0.0.1-preview-71 280 12/12/2022
0.0.1-preview-70 266 12/9/2022
0.0.1-preview-69 358 11/22/2022
0.0.1-preview-67 290 11/15/2022
0.0.1-preview-54 311 10/26/2022
0.0.1-preview-53 298 10/14/2022
0.0.1-preview-52 320 9/30/2022
0.0.1-preview-50 293 9/28/2022
0.0.1-preview-49 421 9/19/2022
0.0.1-preview-48 308 9/19/2022
0.0.1-preview-44 323 9/15/2022
0.0.1-preview-43 277 9/13/2022
0.0.1-preview-42 287 9/13/2022
0.0.1-preview-41 292 9/13/2022
0.0.1-preview-37 288 9/9/2022
0.0.1-preview-36 316 9/7/2022
0.0.1-preview-34 351 9/5/2022
0.0.1-preview-33 268 9/5/2022
0.0.1-preview-30 436 7/15/2022
0.0.1-preview-29 317 7/14/2022
0.0.1-preview-23 387 6/14/2022
0.0.1-preview-22 273 6/14/2022
0.0.1-preview-21 320 6/13/2022
0.0.1-preview-18 309 6/10/2022
0.0.1-preview-16 287 6/10/2022
0.0.1-preview-15 339 6/9/2022
0.0.1-preview-114 264 8/10/2023
0.0.1-preview-113 280 8/10/2023
0.0.1-preview-112 264 8/10/2023
0.0.1-preview-11 276 6/7/2022