Zyan 一个通信框架
本文示例
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 一个通信框架的更多相关文章
- 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.2
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.4.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
随机推荐
- JavaScript初探系列之Ajax应用
一 什么是Ajax Ajax是(Asynchronous JavaScript And XML)是异步的JavaScript和xml.也就是异步请求更新技术.Ajax是一种对现有技术的一种新的应用,不 ...
- <Effective C++>读书摘要--Resource Management<二>
<Item 15> Provide access to raw resources in resource-managing classes 1.You need a way to con ...
- C# Parsing 类实现的 PDF 文件分析器
下载示例 下载源代码 1. 介绍 这个项目让你可以去读取并解析一个PDF文件,并将其内部结构展示出来. PDF文件的格式标准文档可以从Adobe那儿获取到. 这个项目基于“PDF指南,第六版,Adob ...
- java中多种方式读文件
转自:http://www.jb51.net/article/16396.htm java中多种方式读文件 一.多种方式读文件内容. 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内 ...
- java 堆和栈的区别
1,在栈中存放的是基本类型变量和对象的引用变量,当一段代码定义一个变量时,java 就在栈内为这个变量分配内存空间,当超过变量的作用域时,java会自动回收分配的内存. 局部变量在栈内存 2,堆内存放 ...
- 网卡多ip 再看arp; arp队列也会缓存skb
[结论] 当协议失效的时候,skb会挂载arp的neigt的一个链表上,然后直接返回了,相当于数据包发下了,当arp收到数据包去修复neigh的目的地址的时候,会把之前所有的neihe中等待的skb全 ...
- 第64天:CSS常用命名规范,有用!
CSS常用命名,必须记住 一.常用命名 标题:title 摘要:summary 箭头:arrow 商标:label 网站标志:logo 转角/圆角:corner 横幅广告:banner 子菜单:sub ...
- CF546E Soldier and Traveling
题目描述 In the country there are n n n cities and m m m bidirectional roads between them. Each city has ...
- Javascript-基础2
1. Javascript 字符串里面的方法: obj.length 长度 obj.trim() 移除空白 obj.trimLeft() obj.trimRight) obj.charAt(n) 返回 ...
- [洛谷P4592][TJOI2018]异或
题目大意:有一棵$n$个点的树,第$i$个点权值为$w_i$,有两种操作: $1\;x\;y:$询问节点$x$的子树中与$y$异或结果的最大值 $2\;x\;y\;z:$询问路径$x$到$y$上点与$ ...