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

    原文地址

    示例

  • 相关阅读:
    C计算double能精确到多少位
    C计算int最大值、最小值
    AndroidStudio右键new无activity
    java替换特殊字符串 $
    lamda表达式排序
    docker toolbox 设置镜像加速
    tomcat优化
    nginx配置相关
    SQL 优化
    elasticsearch 概念初识
  • 原文地址:https://www.cnblogs.com/zhangzhi19861216/p/3683145.html
Copyright © 2020-2023  润新知