usa.gif Project description

Zyan is a framework that simplifies development of distributed applications.
With Zyan you can publish every .NET class for remote access over the network.
Zyan is highly customizable and provides you with tools to build modular and plugable distributed applications.

Project homepage: zyan.com.de
Please upvote our ad at meta.stackoverflow.com:

Zyan Ad

Zyan runs on Microsoft .NET Framework 3.5 Client Profile or Mono 2.10 or higher.
It supports Windows, Linux (screenshot), MacOS and Android.

Share on Facebook Tweet Share on Google+ Share on LinkedIn Share on Reddit Share on StumbleUpon Share on Digg Share on Livejournal

Features
  • Intuitive RPC communication
  • Versatile hosting opportunities for .NET components (local or remote)
  • Singleton and SingleCall Component Activiation
  • Supports TCP, HTTP and Named Pipes (Other protocols can be backfitted via custom plug-ins)
  • Bidirectional TCP communication through clientside NAT firewalls
  • Encrypted communication without certificates and Active Directory possible
  • Transparent network traffic compression
  • Easy to use customizable authentication system
    • Support for integrated Windows authentication (Single Sign On)
    • Support for basic authentication against the servers SAM (useful, if no Active Directory present)
  • Replaceable session managment
    • Fast and slim in-proc session management (Sessions are stored th the server´s memory)
    • or scalable SQL Server based session management (Sessions are stored in a SQL Server database)
    • Support for Session Variables in In-Proc sessions and SQL stored sessions
  • Distributed Events as easy as button_Click in Windows.Forms
  • Support for wiring distributed Event Based Components (EBC)

Zyan 2.5 NuGet Package, Xamarin.Android Component

Zyan says "Hello World"

To publish component for remote access:

// Create component host named "ZyanDemo" and bind to TCP port 8080
var host = new ZyanComponentHost("ZyanDemo", 8080);

// Register component type and interface
host.RegisterComponent<IHelloWorldService, HelloWordService>();
That's all what is needed to make HelloWorld service remotely accessible.

HelloWorldService doesn't have to derive from MarshalByRefObj class. It don't need to be decorated with ServiceContract attribute either. Any .NET class can be used as a hosted component. The only requirement is that it must implement some interface. This interface is used to communicate with remote component.

To access published component from remote computer:

// Connect to server
var connection = new ZyanConnection("tcp://localhost:8080/ZyanDemo");

// Create HelloWorldService proxy
var proxy = connection.CreateProxy<IHelloWorldService>();

// Invoke method (just like for local object)
proxy.SayHello("HelloWorld");
Click here for English Documentation.

Click here to display Credits.

If you have any questions about Zyan, please feel free to contact me.
germany.gif Projektbeschreibung

Zyan ist ein Framework für die einfache Erstellung von verteilten Anwendungen. Erstellen Sie ganz einfach Applikationen, deren Komponenten entweder über ein LAN oder über das Internet miteinander kommunizieren. Zyan ist sehr einfach einzusetzen und hochgradig anpassbar. Außerdem unterstützt Zyan auch Event Based Components!

Zyan läuft sowohl unter dem Microsoft .NET Framework 3.5 Client Profile als auch unter Mono 2.8 oder höher. Hier erfahren Sie mehr: Zyan auf Linux

Features
  • Intuitive RPC-Kommunikation
  • Vielseitige Hosting-Möglichkeiten für .NET Komponenten (lokal oder verteilt)
  • Singleton- and SingleCall-Komponentenaktivierung
  • Unterstützung von TCP, HTTP und Named Pipes (Beliebige weitere Protokolle sind über Plug-Ins nachrüstbar)
  • Bidirektionale TCP-Kommunikation durch clientseitige NAT-Firewalls hindurch
  • Veschlüsselung der Kommunikation ohne Zertifikate und ohne Active Directory möglich
  • Transparente Komprimierung des Netzwerkverkehrs
  • Authentifizierungssystem (über Plug-Ins erweiterbar)
    • Unterstützung für Integrierte Windows-Authentifizierung mit Active Directory (Single Sign On)
    • Serverseitige Prüfung von Windows-Anmeldeinformationen (nützlich, wenn kein Active Directory verfügbar ist)
  • Sitzungsverwaltung (über Plug-Ins erweiterbar/austauschbar)
    • Schnelle In-Process Sitzungsverwaltung (Sitzungen werden im Arbeitsspeicher des Servers gehalten)
    • oder skalierbare SQL Server Sitzungsverwaltung (Sitzungen werden in einer SQL Server Datenbank gespeichert); Ab ChangeSet 5707
    • Unterstützung für Sitzungsvariablen für In-Process-Sitzungen und SQL Server gespeicherte Sitzungen
  • Verteilte Ereignisse, die so einfach einzusetzen sind, wie button_Click bei Windows.Forms
  • Unterstützung für einfache Verdrahtung von verteilten EBCs

Zyan sagt "Hello World"

So veröffentlichen Sie eine Klasse für den entfernten Zugriff übers Netzwerk:

// Komponentenhost mit dem namen "ZyanDemo" erzeugen und auf TCP-Anschluss 8080 auf Anfragen lauschen
ZyanComponentHost host = new ZyanComponentHost("ZyanDemo", 8080);

// Typ der zu veröffentlichenden Komponente mit Schnittstelle registrieren
host.RegisterComponent<IHelloWorldService,HelloWordService>();
Das genügt schon, um HelloWorldService enfernt aufrufen zu können.
HelloWorldService muss nicht von MarshalByRefObj abgeleitet sein. Sie müssen auch keine Contract-Attribute hinschreiben.
Nein, sie können jede X-beliebige Klasse für den entfernten Zugriff veröffentlichen. Das einzige was Sie außer der Klasse brachen, ist eine Schnittstelle.
Über die Schnittstelle kommunizieren die Clients mit der veröffentlichten Klasse.

So rufen Sie die veröffentliche Komponente von einem anderen Computer aus auf:

// Verbindung zum Server herstellen
ZyanConnection connection = new ZyanConnection("tcp://localhost:8080/ZyanDemo");

// Proxy für die Kommunikation mit dem entfernten HelloWordService erzeugen
IHelloWordService proxy = connection.CreateProxy<IHelloWorldservice>();

// Methode aufrufen (ganz genauso wie bei lokalen Objekten auch)
proxy.SayHello("HelloWorld");
So einfach können Sie mit Zyan verteilte Anwendungen erstellen.

Klicken Sie hier, um Danksagungen anzuzeigen: Credits

Möchten Sie mehr wissen?
russia.gif Описание проекта

Zyan — это инфраструктура, упрощающая разработку распределенных приложений.
Используя Zyan, вы можете опубликовать любой .NET-класс для удаленного взаимодействия.
Zyan гибко настраивается и предоставляет все необходимые инструменты для построения модульных распределенных приложений.

Zyan требует для работы Microsoft .NET Framework 3.5 Client Profile, либо Mono 2.10 или выше.
Поддерживаются платформы Windows, Linux (скриншот), MacOS и Android.

Особенности
  • Интуитивный программный интерфейс
  • Широкий выбор вариантов хостинга .NET-компонентов (локальных или удаленных)
  • Два режима активации компонентов: сингльтон и режим одиночных вызовов
  • Поддержка TCP, HTTP и именованных каналов (для других протоколов возможно написать собственные плагины)
  • Дуплексный TCP-канал позволяет серверу взаимодействовать с клиентами, находящимся за NAT-ом или брандмауэром
  • Поддержка шифрованных каналов, не требующая сертификатов и наличия служб Active Directory
  • Прозрачная упаковка сетевого трафика
  • Простая в использовании расширяемая система аутентификации
    • Поддержка интегрированной аутентификации Windows (единый вход в систему)
    • Поддержка базовой аутентификации на серверах SAM (удобно при отсутствии служб Active Directory)
  • Расширяемое управление сессиями
    • Быстрый и легкий однопроцессный менеджер сессий (сессии хранятся в памяти сервера)
    • Масштабируемый менеджер сессии на базе SQL-сервера (сессии хранятся в СУБД)
    • Переменные сессий поддерживаются обоими вариантами менеджера сессий
  • Распределенные события обрабатываются так же просто, как button_Click в Windows.Forms-приложениях
  • Поддержка связывания распределенных EBC-компонентов (Event Based Components)

Простейший пример распределенного приложения

Публикация компонента:

// Создаем сервер ZyanDemo и привязываем его к TCP-порту 8080
var host = new ZyanComponentHost("ZyanDemo", 8080);

// Регистрируем тип и интерфейс компонента
host.RegisterComponent<IHelloWorldService, HelloWordService>();
Вот и все, что нужно, чтобы компонент HelloWorldService стал доступным для удаленного взаимодействия.

Классу HelloWorldService не требуется наследование от MarshalByRefObject. Кроме того, не требуется разметка класса атрибутами ServiceContract и OperationContract. Любой .NET-класс может быть опубликован для удаленного взаимодействия. Единственное требование к нему — наличие интерфейса, через который будут осуществляться вызовы методов.

Получение доступа к службе с удаленного компьютера:

// Соединяемся с сервером
var connection = new ZyanConnection("tcp://localhost:8080/ZyanDemo");

// Создаем прокси-объект для HelloWorldService
var proxy = connection.CreateProxy<IHelloWorldService>();

// Вызываем метод (точно так же, как метод локального объекта)
proxy.SayHello("HelloWorld");

Дальнейшие подробности см. в разделе Документация.

Share on Facebook Tweet Share on Google+ Share on LinkedIn Share on Reddit Share on StumbleUpon Share on Digg Share on Livejournal

Last edited Dec 24, 2013 at 11:31 AM by yallie, version 75