原文地址

本文示例

Zyan是一个简单直观的分布式应用程序开发框架。

以下是Zyan项目的简要概述。

架构图:

Zyan一般由客户端和服务端组成。服务端(以组件的形式)提供服务,客户端远程调用服务端的方法。

客户端通过代理访问服务端的方法。代理是一个对象,在客户端进行远程调用,代理实现了和远程服务组件相同的接口(如:相同的方法,属性,事件)。

因此,典型的Zyan应用程序有三个独立的组件,或三个Visual Studio项目:

客户端:包含客户端代码

共享程序集:包含公共接口

服务端组件:包含服务端实现代码

注意:客户端和服务端都需要引用 Zyan.Communications.dll 。

这里做一个简单的示例

1,创建一个接口 IEchoComponent,定义一个方法Echo

 public interface IEchoComponent
{
string Echo(string message);
}

2,服务端创建一个类(组件)EchoComponent 实现IEchoComponent中的方法

public class EchoComponent : IEchoComponent
{
public string Echo(string message)
{
return message;
}
}

服务端还要对相应类(组件)进行注册发布:

组件通过ZyanComponentHost发布,

var protocolSetup = new HttpCustomServerProtocolSetup(, new NullAuthenticationProvider(), true);
var host = new ZyanComponentHost("EchoExample", protocolSetup); host.RegisterComponent<IEchoComponent, EchoComponent>(ActivationType.SingleCall);
Console.Write("service starting");
Console.Read();

ZyanComponentHost是一个专用的服务,用来处理组件的创建,托管和网络通信(打开/关闭网络套接字等)。

ZyanComponentHost可以处理任意数量的组件。

每一个ZyanComponentHost实例需要唯一的名称,端口和可选的协议。

Zyan拥有一批ProtocolSetup类,可以在Zyan.Communication.Protocols命名空间中找到:

ProtocolSetup类允许来调整通信参数,即:
端口号(默认80用于HTTP)
身份验证提供程序
安全设置,加密算法等。

提示:这里没有可以在浏览器中打开的URL。 Zyan不会产生WSDL或任何其他类型的元数据。

客户端使用共享接口组件,因此没有必要在与元数据服务器进行通信。通过基于浏览器的用户界面则不能调用Zyan托管组件的方法,你需要编写客户端应用程序来测试它。

3,客户端调用:

要使用服务端组件,客户端应该与服务端主机建立连接。

ZyanConnection用于客户端连接到远程主机。

这有点类似于ADO.NET模型(例如,SqlConnection类是用于连接到远程数据库服务器)。

ZyanConnection构造函数有两个参数:远程主机的URL和可选的协议设置类。

 var protocolSetup = new HttpCustomClientProtocolSetup(true);
var connection = new ZyanConnection("http://localhost:8080/EchoExample", protocolSetup); var proxy = connection.CreateProxy<IEchoComponent>(); var result = proxy.Echo("Hello, World!"); Console.Write(result);
Console.Read();

代理对象的行为就像本地EchoComponent。唯一的区别是,Echo方法在服务器端执行。

原文地址

示例

Zyan 一个通信框架的更多相关文章

  1. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  2. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.2

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  3. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  4. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  5. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  6. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  7. 高性能 TCP & UDP 通信框架 HP-Socket v3.4.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  8. 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  9. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

随机推荐

  1. 学霸系统UI项目功能说明书 v1.0版本

    发布人员:软件工程实践小队. 发布内容:学霸系统UI项目说明书. 版本:学霸v1.0版本. 学霸系统UI项目说明书 v1.0版本分为以下部分: Part 1:用户须知: Part 2:功能实现: Pa ...

  2. 算法与数据结构3.3 calculator

    ★实验任务 小 V 发明了一个神奇的整数计算器: 给定一个合法的表达式,这个计算器能求出这个表达式的最终答案. 表达式可能包含: +:运算符,整数加法.如 1+1=2 -:运算符,整数减法.如 1-1 ...

  3. 有关c#的学习笔记整理与心得

    [ 塔 · 第 一 条 约 定 ] 整理c#:Array Arraylist List Hashtable Dictionary Stack Queue等 Array 的容量是固定的,而 ArrayL ...

  4. <Android>tab选项卡

    1.继承TabActivity实现 a)         在布局文件中使用FrameLayout列出Tab组件及Tab中的内容组件 b)        Activity要继承TabActivity c ...

  5. JDK版本Java SE、Java EE、Java ME的区别

    想在win7 X64上搭建JAVA开发环境来着(只是尝试下),打开JAVA 官网下载JDK,发现好多版本懵了,百度了下找到这些版本的区别,故有了下文 1.JAVA SE Java2平台标准版(Java ...

  6. 实现一个可以实时提示的textarea组件

    该组件输入.换行.变换光标可以实时给出提示 效果: textarea.vue <template> <div> <el-input id="user-input ...

  7. java 基础--switch--003

    1,break可以省略吗? default中的可以省略,其他的如果省略会执行下一个case,从下一个case的 break中中断.(case穿透) 2,default一定要在最后吗? 不是,可以在任意 ...

  8. JVM(一)运行机制

    1.启动流程 2.JVM基本结构 PC寄存器 >每个线程拥有一个PC寄存器 >在线程创建时创建 >指向下一条指令的地址 >执行本地方法时,PC的值为undefined 方法区 ...

  9. WPF文件和文件夹的操作

    1.对文件的操作 private void button_chose_Click(object sender, RoutedEventArgs e) { var openFileDialog = ne ...

  10. RT-thread国产实时操作系统概述

    RT-Thread实时操作系统是一个分层的操作系统,它包括了: • 组件层components,这些是基于RT-Thread核心基础上的外围组件,把一些功能模块划分成独立的一个个组件模块,做到组件与组 ...