开篇吹牛,吹大牛了各位。

接连几篇博文,已经将了我们系统常用的东西,主要针对服务端,非桌面系统。

聊了这么久了,最后将这所有内容打包,完成一个系统。可能称为组件才合适,因为我没有提供启动程序。

每一个模块都是尽量做到公共化,统一化

总结一下:

通信组件,序列化组件,特性反射,扩展方法,结构返回模板,缓存,负载均衡,etcd的注册中心(这个是在java部分讲的,我只是提供了c#版本的客户端代码)。反射方法有了。

这样组合起来,再加上你们的业务模块,就是一个完整的系统了,任意使用组合。

我自己组合了一个,不知道叫什么名字。暂时就叫特性服务吧。

天下大势,分久必合,合久必分。

最开始写代码,一个系统,一个项目到底。后面分项目,再后面分系统,再后面分布式。

然后运维麻烦了,代码要少要通用,再次合成通用的,最好一个组件很多功能。高大尚。。。。

现在呢?微服务来了,把你写的多功能强大系统再分出来。哎。。。。

回到我这里。

根据现在经常用到的三个方面。RPC,MQ另外加上RestFull模型。

统一一下,定义一个特性SrvAttribute,放在类上就是服务名称,放在方法上就是要暴露的方法。

这样提供TPC就可以接收HTTP请求了,就是RestFull了。

定义一个公共的接口,服务端实现接口,或者不实现也可以。只要把特性加上就是了。

客户端实现接口,在实现的接口方法里面,打包自己的参数,方法名称,以及服务名称;序列化以后传递到服务端

服务端反序列化,然后解析服务名称,方法名称,然后反射调用。

这样就把2者合并了。

MQ怎么办?凉拌,自己写个方法传输byte[]数组就是了,在服务端写一个接收注册的方法就是了。

就一个注册分发,一个数据接收方法,保持注册地址对象,就是一个MQ服务了,MQ需要开发服务端功能。

如果再加上etcd的分布式部署,就是一个分布式集群了。

所有代码项目都上传了GIT,就是前几篇博文的地址。

关于反射多说一下。

现在分了几个平台。

发现Emit确实快,但是它只支持.net framework,没有支持,.net standar不支持,没有办法,就写了2个相同的。

另外就是动态编译,也是只有.net framework,所以写了个客户端项目,动态编译实现接口,这样你只要一个接口库就可以了,什么都不需要写,配置写好就可以了。动态编译里面自动继承接口,然后打包方法参数,名称。定时编译缓存dll,下次启动就直接动态加载dll就可以了。RPC你什么都不做,就是用结果,设置通信就可以。安逸吧?

如果是其它平台就得直接实现接口打包参数了。

大吹牛就这样结束了。刚刚买了一本.net性能的书,等我看完看有没有和大家吹的。没有的话就基本这样了。

很久没有来csdn了。来了就系统的和大家吹牛皮。

c# 分布式系统开发的更多相关文章

  1. 分布式系统开发的一些相关理论基础——CAP、ACID、BASE

    本文主要讲述分布式系统开发的一些相关理论基础. 一.ACID 事务的四个特征: 1.Atomic原子性 事务必须是一个原子的操作序列单元,事务中包含的各项操作在一次执行过程中,要么全部执行成功,要么全 ...

  2. 分布式系统(Distributed System)资料

    这个资料关于分布式系统资料,作者写的太好了.拿过来以备用 网址:https://github.com/ty4z2008/Qix/blob/master/ds.md 希望转载的朋友,你可以不用联系我.但 ...

  3. Spark菜鸟学习营Day5 分布式程序开发

    Spark菜鸟学习营Day5 分布式程序开发 这一章会和我们前面进行的需求分析进行呼应,完成程序的开发. 开发步骤 分布式系统开发是一个复杂的过程,对于复杂过程,我们需要分解为简单步骤的组合. 针对每 ...

  4. 分布式系统中的必备良药 —— RPC

    阅读目录 前言 成熟的解决方案 剖析 性能测试 结语 一.前言 在上一篇分布式系统系列中<分布式系统中的必备良药 —— 服务治理>中阐述了服务治理的一些概念,那么与服务治理配套的必然会涉及 ...

  5. 微软开源rDSN分布式系统开发框架

    摘要:微软亚洲研究院系统组开发的分布式系统开发框架——Robust Distributed System Nucleus(rDSN)正式在GitHub平台开源.据悉,rDSN是一个旨在为广大分布式系统 ...

  6. 【.net开发者自学java系列】使用Eclipse开发SpringMVC(2)

    大概熟悉了 Eclipse. 然后先上Spring MVC 官网看看. 可是英文太差?翻译咯.现在翻译可屌了,真高兴生活在现在科技发达的时代.活着在中国太美好了. 没出过国门就能看懂英文.我都崇拜自己 ...

  7. Spring Cloud与分布式系统

    本文不是讲解如何使用spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义. 背景 2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去” ...

  8. Docker:分布式系统的软件工程革命(上)

    转自:http://cxwangyi.github.io/story/docker_revolution_1.md.html Docker:分布式系统的软件工程革命(上) 作者:王益 最后更新:201 ...

  9. 快速搭建 SpringCloud 微服务开发环境的脚手架

    本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 SpringCloud 项目. 本文作者:HelloGitHub-秦人 HelloGitHub ...

随机推荐

  1. 初学Hadoop之计算TF-IDF值

    1.词频 TF(term frequency)词频,就是该分词在该文档中出现的频率,算法是:(该分词在该文档出现的次数)/(该文档分词的总数),这个值越大表示这个词越重要,即权重就越大. 例如:一篇文 ...

  2. Android界面编程--使用活动条(ActionBar)--实现Tab导航

    使用ActionBar结合fragment实现导航 1,调用ActionBar的setNavigationModel(ActionBar.NAVIGATION_MODE_TABS)设置使用tabs导航 ...

  3. asp.net之cookie

    1.创建cookie HttpCookie userCookie = new HttpCookie("userInfo"); userCookie["name" ...

  4. node.js中的模板引擎jade、handlebars、ejs

    使用node.js的Express脚手架生成项目默认是jade模板引擎,jade引擎实在是太难用了,这么难用还敢设为默认的模板引擎,过分了啊!用handlebars模板引擎写还说的过去,但笔者更愿意使 ...

  5. 键盘按键keyCode大全,js页面快捷键

    字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66 K 75 T 84 2 50 C 67 L 76 U 85 3 ...

  6. Spring课程 Spring入门篇 5-2 配置切面aspect

    本节主要讲了在xml中配置切面的demo 1 解析 1.1 配置切面xml 1.2 配置切面xml 1.3 问:什么是动态代理? 2 代码演练 2.1 配置切面xml 1 解析 1.1 配置切面xml ...

  7. C++里将string类字符串(utf-8编码)分解成单个字(可中英混输)

    最近在建词典,使用Trie字典树,需要把字符串分解成单个字.由于传入的字符串中可能包含中文或者英文,它们的字节数并不相同.一开始天真地认为中文就是两个字节,于是很happy地直接判断当前位置的字符的A ...

  8. Error creating bean with name 'com.cloud.feign.interfaces.xxxFeignClient': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalSt.PathVariable annotation was empty on

    环境: Spring Cloud:Finchley.M8 Spring Boot:2.0.0.RELEASE 报错信息: Error creating bean with name 'com.clou ...

  9. 用大白话告诉你什么是Event Loop

    文章原文地址 前沿 从前有座山,山里有座庙,庙里有个小和尚在讲故事.讲什么呢?讲的是: 从前有座山,山里有座庙,庙里有个小和尚在讲故事.讲什么呢?讲的是: 从前有座山,山里有座庙,庙里有个小和尚在讲故 ...

  10. 5.Zabbix 3.0案例

    请查看我的有道云笔记: http://note.youdao.com/noteshare?id=15d986179cb65b45c5824e90995109ee&sub=D2E73572D97 ...