.NET/Mono library for accessing WHIP and CloudFiles based Halcyon assets |
|
---|
Chattel is a library for Mono/.NET programs designed to make accessing assets stored in asset servers such as WHIP or via Halcyon's CloudFiles integration simple and fast.
Chattel provides:
- The ability to read and write assets.
- Integration with the WHIP asset server.
- Integration with Halcyon's CloudFiles asset server.
- Asset servers can be set up in a series-parallel array.
- Assets can be disk-cached for faster access.
- Able to efficiently convert to and from WHIP-type and StratusAsset-type assets, in both object and serialized forms.
- Chattel-AssetTools lib extends the included StratusAsset type to provide easy queries that don't require any extra external libraries.
- Logging compatible with the majority of common .NET logging systems: your logging library will be detected and used.
How is Chattel different from InWorldz' whip-dotnet-client? Simple: whip-dotnet-client is a very low-level library designed to allow connection to a WHIP server, but it cannot decode the resulting stream into something useful - Chattel can. Chattel also takes this one step further and allows you connect to other asset servers that are not WHIP-based.
Chattel allows you to query multiple asset servers at the same time, aka in parallel, with the first one to return the asset winning. It also allows you to specify within this parallel list asset servers that should be queried in series until one returns the requested asset.
The benefit of this arrangement only comes if your grid is growing and you've had to change asset servers. Let's assume that you started your grid with WHIP, but later spun up a CloudFiles server and ported all your assets to the latter, but your WHIP servers are there just in case some asset didn't get ported. With this set up you could specify that the CloudFiles servers should be queried first, then the old WHIP servers, by setting the CloudFiles server in series with WHIP.
Alternatively, let's say you had multiple grids with different asset servers, but your application requires that you be able to pull assets from all of them. Simply set each asset server in parallel. If some of those have legacy asset servers, set the legacy asset servers in series with their primaries.
There are many possibilities and use-cases enabled by this architecture.
Note that since reading and writing are handled by separate classes, you can configure a different array for writing assets than you use for reading them.
Simply use your NuGet package manager to install the latest release straight from the NuGet.org package built by the Appveyor integration.
Open source contributions are very welcome - please follow the style you find in the code.