化茧成蝶,开源NetWorkSocket通讯组件

前言

前后历时三年,期间大量参考.Net Framework和Asp.net MVC源代码,写写删删再重构,组件如今更新到V1.5.x了。从原来的丑小鸭,变成今天拥有稳定和强大的tcp协议支持基础层,原生支持http、websocket、flash策略服务,以及内置可快速构建tcp通讯的fast协议,最重要的是可基于此组件,很方便开发自己定义的某种tcp上层协议服务器和客户端。如果有人以支持的功能多为荣,我却以支持的扩展性强为傲,从WebForm到MVC的 时候,被其可依赖注入、可Filter过滤器拦截、Modelbinding及反射执行Action等新颖的思想震撼了!现在很高兴在这个组件里也模仿和使用了这些思想。

组件的功能

1、tcp服务器抽象类和客户端抽象类,以及相关的流读写功能类,字节和位操作等功能类。所有基于tcp的标准协议和个人自定义协议的服务都基于此继承来开发,抽象类已实现很多最基础功能。

2、内置flash和silverlight策略服务类,支持继承重写部分功能。

3、内置http服务模块,编写http服务时风格习惯与Asp.Net MVC极其一致,只差不支持视图。

4、内置websocket服务模块,同时封装基于json的jsonWebsocket服务和客户端脚本,从IE6到Chrome的web双工通讯不再是梦,编写jsonWebsocket服务时风格习惯和MVC一致。

5、内置名为fast的自定义个人协议,开发.Net内部使用的系统,可无视通讯知识就能编写tcp双工服务,编写服务风格习惯和MVC一致,客户端不需额外编写。

6、内置也能在EF下使用的Model验证特性,编写各种服务时,Model验证不在是恶心的一坨占了半个函数的if。

7、功能强大的Filter,AOP思想可以在http、jsonWebsocket、fast服务编写时大显身手,淋漓尽致,日志、异常和权限验证变得如此简单。

8、依赖注入支持,可以替换默认的依赖解析提供着,比如使用Autofac等优秀的依赖注入提供者来减少耦合或生命周期管理,Filter也支持依赖注入。

框架理念

我觉得有时自己在tcp这块博客的相关看法和评论比较暴躁,有时想指责或找出别人的不足来突显自己在这领域一样,这个非常不好,但很多时应该还是比较平心气和的。但我比较反感问我这个和其他一些思想理念不一样的相关组件的比较结果,每个框架都有自己的理念,有些是不能比的,或比不出结果,就像MVC和MVVM,我说都好,我希望想用的人自己先理解,然后结合自己的需求,比较选择。我的理念是构建一个稳定的基础层,支持一些标准协议,可以带但不能只拘泥和局限于某种自定义协议(比如组件里的fast协议)。如果组件从头到尾都是一个自定义的协议,那它应该是一把专用钥匙,离开了这个锁就是废铁(如果协议推广很广泛了另说)。当然万能钥匙是不存在,但是当锁是别人的,看到了之后,能通过这个组件低成本把相应的钥匙给造出来,这便是我的理念。

组件的移植

组件不依赖于任何第三方库,目的是保证体积小,同时移植方便。默认实现的序列化在移植时可替换。

1、Mono编译不用修改任何代码;

2、.Net core移植想要修改少量代码,但不会影响到逻辑的修改,只是序列化相关的代码。

组件适用范围

如果你用过MVC,那么使用本组件你可以轻易地实现以下需求:

1、在所有常见的浏览器里实现双工通讯比如及时通知和及时聊天等,从此再也不觉得老板想在web中实现推送不是变态。

2、.Net下双工通讯项目,比wcf更简单,无需关注通讯知识。

3、混合协议中转服务,你可以构建一个支持多协议的服务,比如浏览器端使用http和websocket,手机端使用http,其他硬件使用一些自定义tcp协议,达到多端控制硬件的目的。

4、编写一些客户端,或一些其他服务,比如redis等的.Net驱动,或telnet服务器,或其他你自定义的协议。

源代码和DEMO

https://github.com/xljiulang/NetworkSocket

你可以拿DEMO稍微看一看,就知道怎么使用了。

后记

今年来写的博客很多都是这个组件里面的某一角,有些甚至看似没关系的一样,但都是组件里背后默默工作的对象。从没有这样完整简述过组件的面貌,因为觉得时期还未到,在设计Filter的时候,曾经完全模仿MVC4的Filter,由于不同协议的上下文不同,每个协议都得写貌合神离的Filter,就像MVC与WebApi的过滤器一样,相似却不一样,后来重构的时候,否定了原来这种Filter设计思想,开发一套通用的Filter基础,虽然模仿了也借鉴了,但如果不适合,也要敢于否定。篇幅有限,寥寥一文,无以提及所有方面,故捡几重要点贴于斯文。

时间: 2024-08-11 09:57:45

化茧成蝶,开源NetWorkSocket通讯组件的相关文章

突破自我,开源NetWorkSocket通讯组件

前言 在<化茧成蝶,开源NetWorkSocket通讯组件>发表之后,收到大家很多个star,在此感谢!更可贵的是,一些网友提出了许多好建议,经过一些时间的思考,决定将NetworkSocket从模仿MVC之后,继续模仿Owin,并局部突破,作有自己特色和理念的通讯框架.之所以模仿Owin而不是接入,是因为Open Web Interface for .NET是为Web而存在的,我需要的是应该是Open Tcp Interface for .NET,当然这是还不存在的标准,但我想达到或接近这种

公司管理系列--Facebook 如何化茧成蝶[转]

拒绝传统,看 Facebook 如何以三大法宝化茧成蝶:人才吸引.工程师文化和项目开发流程 我将结合之前在Facebook的四年工作经验,介绍Facebook创新的管理方法以及整个工程文化形成的方法. 从大学宿舍到完整生态链:Facebook12年发展历程 首先我想解释下为什么我要说Facebook,并不是因为我在那里工作过.先请看一下Facebook的简单发展史: 2004年,扎克伯格在大学宿舍里开发了Facebook,很长一段时间它只是一个简单的网站.但是后来,扩展到硬件,开发了各种产品,占

看 Facebook 如何以三大法宝化茧成蝶

从大学宿舍到完整生态链:Facebook 12 年发展历程 先请看一下 Facebook 的简单发展史: 2004 年,扎克伯格在大学宿舍里开发了 Facebook,很长一段时间它只是一个简单的网站.但是后来,扩展到硬件,开发了各种产品,占据了整个社交领域,至少是北美的霸主地位.Facebook 还推进了 Connectivity(全民联网计划),给发展中国家提供免费的无线网络,再到后面做 VR.AR.人工智能等现在非常火的新领域,形成了完整的生态圈. 看 Facebook 12 年的发展,我一

DevStore百日蜕变 化蛹成蝶 分享=现金+礼品

这是一只充满斗志.去创造奇迹的蝴蝶,她舒展着细若云绵的触须,舞动着轻盈的翅膀,自信地飞翔了! DevStore一百天了,参与分享,奖品随心购,我买单 百日活动: 小伙伴们有没有被互联网活动规定的奖品坑害过?明明说的是神秘礼品,到最后却送你一个玻璃弹珠-- DevStore一百天啦,随你心意挑选礼品,与小伙伴们同欢乐. 1.关注DevStore微信公众账号:DevStore 2.在微信菜单处点击"活动专题"的子菜单"最新活动",将接收到的 图文消息分享到朋友圈. 3.

《破茧成蝶》读书笔记——技能(2)

纸面原型 目的:快速表达想法.节省时间.提高效率,沟通.测试.尽快解决不确定的问题. 可快速修改,尽早否定不靠谱想法.   确定纸面原型后,可以每细化一个界面就交付给视觉,缩短项目周期. 使用工具:草图使用铅笔和纸张.逻辑使用马克笔.双头画笔等.交互效果用便签纸和小卡片,当提示气泡.弹出层.模态窗口等,贴在绘图本上,也可以作为页面标注工具,说明产品功能.        若会用到很多可复用的标准交互组件,可以网上找到标准交互原型组件库,打印出来,剪裁成模块贴到页面框架中,与受贿草图配合使用. 若为

《破茧成蝶》读书笔记——信念

第一章 什么是用户体验设计 用户体验设计 首先是观察用户问题,其次简化问题,最后给用户留下深刻印象. 用户体验设计特征 严谨.理性.创意. 提供特定问题的解决方案.明白设计目标.设计人群及如何解决. 不让用户思考.设计意图不清晰,让你摸不着头脑. 趣味横生.有创意点. 精益之道 热爱生活,细心观察,勇于改变.观察生活每一个不如意的地方,并积极思考改善的方案. 了解人,观察人.以“人”为中心思考,学会换位思考.注意观察人的使用行为,归纳人的共性. 理性的思路.出现问题-->找到面向的人群(问题的定

《破茧成蝶》读书笔记——技能

第四章 设计流程 如何参与一个项目 需求阶段:需求分析 设计阶段:设计规划.设计实施 开发阶段:项目跟进 反馈阶段:成果检验 第五章 需求分析 产品定位:产品的目标.范围.特征. 产品定义:用一句话概括某个产品.(使用人群.主要功能和产品特色) 用户需求:目标用户.使用场景和用户目标.(谁在什么环境下要解决什么问题)  注:关键是要把目标用户带回使用场景,只有在特定的场景下,用户的目标才会更加明确. 选择目标用户:选择哪种类型的目标用户,需要综合权衡用户对公司的价值以及潜在的需求量.优先考虑潜在

《破茧成蝶》读书笔记——价值

第十章 设计师的自我修养 好的设计师: 对设计充满兴趣和激情. 有天分.有很多想法,并时常记录自己的灵感. 执行力强. 情商高.能以积极的心态面对各种棘手的情况. 超出预期.追求完美,关注细节. 有条理. 有上进心. 眼界开阔.知识面广. 乐于分享. 从哪几个方面来提高: 专业:看大量专业书籍,多做项目. 沟通:有良好的沟通.组织能力. 流程:流程意识,需要根据产品.项目的具体情况,选择合适的流程并执行下去.以提高项目效率做改进和突破. 把自己当做一个具有专业技能的组织者.推动者.强大的执行着.

.Net Core开源通讯组件 SmartRoute(服务即集群)

SmartRoute是基于Dotnet Core设计的可运行在linux和windows下的服务通讯组件,其设计理念是去中心化和零配置即可实现服务通讯集群.SmartRoute是通过消息订阅的机制实现服务与服务之间的通讯,它可以让广播网段内所有服务器上的应用自动构建通讯集群: 而通讯集群完全是SmartRoute自动构建并不需要进行任何配置或安装中间服务.通过这种全新的通讯开发方式可以让开发者更轻松和简单地构建基于服务的集群通讯应用. SmartRoute的发展目标   智能集成服务通讯交互 不