首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >属性和onchange事件。需要找到一个合适的设计模式

属性和onchange事件。需要找到一个合适的设计模式
EN

Stack Overflow用户
提问于 2013-02-13 22:38:26
回答 1查看 136关注 0票数 0

所以我做了一个socket通信库。IConnection就是其中的一部分

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public enum ConnectionState
{
    NotConnected, Connecting, Connected, Authenticated, Disconnecting, Disconnected
}

public interface IConnection
{
    ConnectionState State { get; }

    event Action Connected;
    event Action Disconnected;
    event Action Authenticated;
    event Action AuthenticationFailed;

    // this two methods are the core of my question
    void OnAuthenticated();
    void OnAuthenticationFailed();

    bool Send(byte[] data);
    void Connect();
    void Close();
}

当然,IConnection提供了有关连接状态的信息,并且能够触发Connected/Disconnected事件,因为它持有Socket。这是毫无疑问的。

现在,IConnection的用户也想知道它何时进行身份验证。例如,服务器可能会侦听该事件,一旦连接通过身份验证,就会发送客户端的初始配置数据。或者客户端可能监听该事件并决定开始通信或重试认证过程。

但。问题是,认证过程存在于协议层。IConnection甚至不知道这样的层的存在。协议层实际上使用IConnection将序列化的byte[]消息发送给另一方。

因此,为了使IConnection能够更改其状态并在身份验证过程中通知订阅者,我必须实现这两个方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void OnAuthenticated();
void OnAuthenticationFailed();

它们显然是从协议层认证过程代码中调用的。

我觉得我做错了什么。因为我一个人工作,所以任何想法都会非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-14 17:13:15

我最终将协议的核心部分,如身份验证、保活服务和最可能随处使用的基本消息类型移动到了Communication组装中。

因此,现在IConnection会自动执行身份验证过程,因为它知道核心协议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14864607

复制
相关文章
在Windows上如何后台运行JuiceFS
JuiceFS的Badger引擎改造完成以后,需要在Windows下面进行后台运行。因为现有的JuiceFS中还没有在Windows下的后台运行实现,所以需要通过其他途径解决。
用户1260683
2022/03/30
2.9K0
在Windows上如何后台运行JuiceFS
在 Linux or windows 上后台运行服务
  此时可以访问 http://ip:8000 验证服务是否成功启动了(详细操作见另一篇文章-Python 一行搭建文件服务器)
我是胖虎啊
2022/06/27
3.3K0
在 Linux or windows 上后台运行服务
在Windows上使用Docker运行.NetCore
今天我们来说下如何在windows下使用docker运行.net core,既然是docker,那么我们首先得在windows上安装docker。
小世界的野孩子
2019/09/11
4.3K0
在Windows上使用Docker运行.NetCore
在Windows上运行单节点的Cassandra
Cassandra可以安裝在很多系统上, 我是安装在windows server 2008 R2上,安装相当简单,只要把下载下来的压缩包解压缩放到一个目录下就可以了,这里主要是记录下使用体验: Cassandra官网: http://cassandra.apache.org/,下载页面 http://cassandra.apache.org/download/ Cassandra用java开发的,要求安装JVM 1.6以上,推荐 Version 6 Update 23  到Java官网下载 http://w
张善友
2018/01/19
2.4K0
在Windows上运行单节点的Cassandra
在Windows上以服务方式运行 MSOPenTech/Redis
ServiceStack.Redis 使用教程里提到Redis最好还是部署到Linux下去,Windows只是用来做开发环境,现在这个命题发生改变了,在Windows上也可以部署生产环境的Redis,这都要感谢微软的开放,把Redis在Windows上的环境给我们搞定了,最新的版本已经支持64位了。那么Redis在32位上的存储能力受限于可用的地址空间,也就是3GB。 要在Windows上运行64位Redis ,可以从https://github.com/MSOpenTech/redis 获取一份Redis
张善友
2018/01/29
1.4K0
在Windows上以服务方式运行 MSOPenTech/Redis
Windows 上运行 Zookeeper
2.下载 Zookeeper https://zookeeper.apache.org/releases.html
晓晨
2020/11/09
1.6K0
6个工具助你在Windows上轻松运行Kubernetes
Kubernetes 主要是一种 Linux 技术,因此在 Linux 上运行它是相当简单的。但 Windows 上的开发人员,可不可以在 Win 上运行 Kubernetes?
我的小碗汤
2021/12/31
2.4K0
6个工具助你在Windows上轻松运行Kubernetes
Apache Kafka 在 Windows 系统上设置与运行教程
手把手教你在 Windows 系统安装运行 Apache Zookeeper 和 Apache Kafka 服务。
柳公子
2018/09/17
2.7K0
Apache Kafka 在 Windows 系统上设置与运行教程
在Windows上运行Rainbond,10分钟快速安装
经过适配Mac以后,Windows的适配也是成为了近期的小目标,经过不断地测试,不断地研究。最后也是达成了完美运行的效果,实现了真正意义上的任何场景,多种架构的完美适配,让手里的电脑真正称的上是生产力工具。
Rainbond开源
2022/01/11
1.6K0
curl for windows安装
1、下载curl for windows https://curl.haxx.se/download.html 2、curl for windows解压缩 3、环境变量配置 C:\curl-7.6
程裕强
2019/07/02
2.3K0
curl for windows安装
flutter 在windows和linux上运行IOS UI模拟器
之前发视频总是有人留言,我用的什么模拟器,今天给大家说一下 我一般用的是device_preview这个插件,这个插件的闲置是只能做UI上的模拟,并没有真正的运行环境。近似您的应用程序在另一台设备上的外观和性能。
徐建国
2021/11/30
1.9K0
在QEMU上运行OPTEE
TEE越来越成为一种基础的安全技术,optee作为一种优秀的开源TEE OS正吸引了越来越多的厂商,越来越多的学习者,安智客之前也多次介绍过
安智客
2018/07/30
2.6K0
在QEMU上运行OPTEE
在windows中:双击运行Python
一、安装Python解释器的windows环境,如果双击运行*.py的文件,会闪退。怎样避免闪退呢?
py3study
2020/01/06
4.6K0
在windows中:双击运行Python
python程序怎样在windows运行
1.首先下载安装python,建议安装2.7版本以上,3.0版本以下,由于3.0版本以上不向下兼容,体验较差。
py3study
2020/01/13
2.4K0
在Windows安装运行Kafka
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
chenchenchen
2019/09/02
5.3K0
在Windows安装运行Kafka
windows下使用curl命令 && 常用curl命令
什么是curl命令? curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。 如何在win
Java学习123
2018/05/16
5K0
在Windows上安装Jenkins
apache-tomcat/bin目录下的startup.bat在windows上启动。
清菡
2020/12/02
2.4K0
在Windows上安装Jenkins
MongoDB - 在Windows上安装
1 下载MongoDB社区版, 下载链接 http://www.mongodb.org/downloads?_ga=1.129742796.1997610832.1481940266 2 安装Mong
我思故我在
2018/05/11
2.3K0
在 Windows 上安装 Composer
(2) 选中PHP安装目录下的php.exe,PHP的安装路径在环境变量 Path 中,则会自动选中,否则需要手动选中
很酷的站长
2023/02/17
2.1K0
在 Windows 上安装 Composer
CygWin:windows上运行类linux命令
CygWin是一个在Windows平台上运行的类UNIX模拟环境,是Cygnus Solutions公司开发的自由软件。它提供了类似于Linux系统的终端环境和工具,使用户可以在Windows平台上运行Unix-like的程序,如Bash、awk、sed和grep等 。
唯一Chat
2023/07/10
4340
CygWin:windows上运行类linux命令

相似问题

return函数是用来做什么的?

10

serialize到底是做什么的?

30

这段PHP代码是用来做什么的?

30

在php中{}是用来做什么的?

22

函数的指针是用来做什么的?

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文