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

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

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

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

总结一下:

通信组件,序列化组件,特性反射,扩展方法,结构返回模板,缓存,负载均衡,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. setInterval()设置页面5,4,3,2,1秒后跳转

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. C# 读写xml、excel、word、ppt、access

    C# 读写xml.excel.word.access 这里只是起个头,不做深入展开,方便以后用到参考 读写xml,主要使用.net  的xml下的document using System;using ...

  3. es6变量解构赋值的用途

    这里是我觉得es6解构赋值,在平时我们写js的时候非常有用,而且经常用到的地方,能简化我们的代码,让写代码简介优雅易读; 用途 1.交换变量的值,太方便了这逼,写法不仅简介而且一看就明白 let [x ...

  4. twaver拓扑图拖拽后保存json数据

    功能描述:拓扑图.对节点进行拖拽,序列化获取拓扑图信息,保存到本地localStorage,刷新页面,执行反序列化,从本地获取之前保存的数据,展现之前拖拽后的拓扑 拓展:此处存储用的是web本地存储l ...

  5. 【阿里云产品公测】服务器测性能,PTS多快好省

    作者:阿里云用户goldsix PTS(性能测试服务)的官方定位是:集测试机管理.测试脚本管理.测试场景管理.测试任务管理.测试结果管理为一体的性能云测试平台.  不管定义是否高大上,一般用户尤其是我 ...

  6. MonkeyRunner之MonkeyRecorder录制回放脚本

    MonkeyRunner强大的功能之一便是允许用户自由录制需要的脚本,录制和回放需要两个脚本文件 monkey_recorder.py和monkey_playback.py 首先来看 monkey_r ...

  7. Flask入门 flask结构 url_for 重定向(一)

    Flask入门(一) 1 安装虚拟环境Mac,linux sudo pip install virtualenv ​ ubuntu系统 sudo apt-get install python-virt ...

  8. 【Leetcode】【Medium】Single Number II

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  9. 【面试虐菜】—— 常用SQL语句

    创建表 create table emp( id decimal, name ), age decimal) 删除表 DROP TABLE EMP 插入默认值 CREATE TABLE EMP( Id ...

  10. python 提取字符串中的数字组成新的字符串

    方法一 # 有一个字符串text = "aAsmr3idd4bgs7Dlsf9eAF" # 请将text字符串中的数字取出,并输出成一个新的字符串 import re text = ...