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(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方法在服务器端执行。 

原文地址

示例

 

 

 

posted @ 2014-04-23 16:10  zzhi.wang  阅读(1066)  评论(0编辑  收藏  举报