Skip to content

Zyan Framework overview

Alexey Yakovlev edited this page May 21, 2018 · 1 revision

Zyan overview

Zyan is a framework for easy and intuitive development of distributed applications. It was born from the idea to use the Event Based Components architecture model from Ralf Westphal for creating distributed applications and has eventually grown into general communication framework. The following is a brief overview of Zyan project.

Architecture

Zyan Framework overview_Zyan Architecture.png

Server components are registered in the component catalog. Zyan component host provides remote access to the components registered in the catalog. Clients use Zyan connection to access remote components via proxy objects. Client makes remote component calls by invoking methods on a proxy object.

What kinds of applications are possible with Zyan?

Zyan provides inter-process and inter-machine communication capabilities for .NET applications. It can be used to communicate over LAN as well as over internet.

What standards and/or network protocols are supported by Zyan?

By default, Zyan uses compact binary protocol (BinaryFormatter) over TCP/IP channel. You can also set up communication over HTTP or named pipes for local inter-process communications. Since version 2.0 Zyan supports duplex TCP/IP channel (based on excellent TcpExChannel by Richard Mason) which solves problems for clients behind NAT or firewall.

Nonetheless, Zyan is by no means standard-compliant like SOAP Web-services, for example. You should only use Zyan for scenarios where both client and server are .NET applications — that's what Zyan was designed for.

What kinds of communication are supported by Zyan?

Zyan supports standard Windows authentication NTLM/Kerberos protocol. In that case all the communication between client and server is automatically encrypted. Windows authentication is generally suitable for LAN scenarios where Active Directory services are available. Otherwise, you can use Zyan built-in cryptographic features: all communication can be processed with a chosen cryptographic algorithm. You don't need certificates for the latter! Zyan automatically generates asymmetric keys, securely exchange cryptographic keys between client and server, and so on. You can also plug in your own authentication strategy (for example, to check login and password against your own SQL database). Of course, you can also use plain unsecured connection if your application doesn't need security.

What programming models can be used with Zyan?

In addition to traditional components, Zyan supports Event-Based Components. EBC is an event-driven component model invented by Ralf Westphal. You can read more on this subject in Ralf's blog (German only) or check out brief Event-Based Components Overview written for codeplex EBC Tooling project.

What about scalability?

Zyan was designed with scalability in mind. It should be suitable for wide range of applications from single-server to a large multi-server clusters. Zyan gives the developer freedom to design distributed applications pretty much like conventional object-oriented software (virtually any .NET class can be published as a remote component). So, it's generally up to you to make your application scalable.