本文示例
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(8080, 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方法在服务器端执行。