zoukankan      html  css  js  c++  java
  • 珍贵的体验:在Linux平台发挥.Net的强大威力

    珍贵的体验:在Linux平台发挥.Net的强大威力

    2011年7月10日 下03时56分45秒

    最近跟爱立信合作了一个项目,要做一个分布式的系统,其中服务端由我领头来开发,用什么技术不限,但就是有一条:所有的服务器、客户端,全都是Linux的。

    大胆地采用了Mono,有了Mono这个好东西,就可以在Linux平台发挥.Net的强大威力了。

    仅仅2周就把项目做出来了,而且做出来的结果是:客户非常非常满意,据说远远超出了客户的期望。公司上下皆大欢喜。

    下一步这套系统,基于多方合作共同开发的需要,也许将继续采纳我的这套.Net架构,也许将全面porting到Python。

    但是这套.Net架构确实是一个非常好的案例。

    服务器端完全设计成分布式的。有几个角色:Controller、Log Server、Agent Server,这几个角色的服务可以完全装在一台机器上,也可以分开,每个角色独立装载一台服务器上,也可以由一个服务器群来实现其中一个角色。比如说,Log Server不够用了,没关系,现买一台1U的服务器,装上Linux系统,部署上这套程序,然后Controller就能自动发现这台新的Log Server,并且把别的Log Server处理不过来的任务安排给这台新的Log Server。其余的角色也都是这样,可以从1台扩展到N台,有一个简单的算法来按照每台Server的资源利用率自动分配任务,保证合理地利用这些Server。

    B/S和C/S的架构共存于这套系统中。Web Server采用Apache,.Net引擎采用Mono 2.10,OS采用Debian Linux 6.0,数据库采用Postgresql 9.0.3,主要用C#语言实现,部分由Python语言实现。大量采用了PL/SQL来进行数据库端开发。大量采用JSON来进行系统之间的对象传递。

    无论B/S的部分还是C/S的部分,其实都是用HTTP来通讯,而且尽可能做成RESTful Web Service。

    Mono提供了在Linux上运行.Net的环境。之前我也曾经在苹果的Macintosh OS X 10.6上试用过Mono,表现良好。但是这回在Linux的实际项目上正式采用Mono,对我以及对其他人,还是头一次。经过两周的奋战,总之,还好,有个别地方不顺利,不顺利的地方主要牵扯到文件操作,但是别的地方比如数据库操作都是和Windows下的表现完全一致的。至于文件操作这部分,当时没敢多花时间,所以用Python写了个小服务,然后通过HTTP Post这种方式来调用这个服务。别的地方挑大梁的都是.Net/C#。

    至于当时用Mono运行.Net遇到的小小的不顺利的几个地方,打算项目结束后我来作一番调研。我相信这些地方都会解决的。而且昨天我去codeplex和codeproject上面查了一下现有的Mono案例,发现资源还是挺丰富的。

    所有这些东西由我带着两个人耗时2周完成,其中一名是ASP.Net程序员,完全没接触过Linux环境,另一名是Python程序员,基本上没怎么接触过Windows。我在项目里做的事很杂,架构基本上是我一个人做的,然后分配任务、设计接口,当临时的系统管理员和DBA,现学PL/SQL,用PL/SQL写了大约1千多行的存储过程,然后还为小模块写测试工具,给大家部署开发和测试环境,部署svn,然后还承担了大约60%的具体的开发任务。充当了一个Dev Lead的角色,还充当了一个PM的角色。

    前天结束了这个项目,然后爱立信过来了一大帮人来看,都很满意。公司也很高兴,给我们几个放了一天假,今天过来上班。

    这个项目对我来说真是印象深刻。
    原文链接:http://www.leadbbs.com/a/a.asp?B=205&ID=2869830&Aupflag=1&Anum=1

       
  • 相关阅读:
    js数组与字符串的相互转换
    JS怎么把字符串数组转换成整型数组
    element-UI的操作步骤steps每一项添加事件,比如click,hover
    element-UI ,Table组件实现拖拽效果
    修改本机域名localhost为任意你想要的名称
    el-tree 设置目录树中的某个节点为高亮状态
    Akka-CQRS(2)- 安装部署cassandra cluster,ubuntu-16.04.1-LTS and MacOS mojave
    Akka-CQRS(1)- Write-side, Persisting event sources:CQRS存写端操作方式
    Akka-CQRS(0)- 基于akka-cluster的读写分离框架,构建gRPC移动应用后端架构
    Akka-Cluster(6)- Cluster-Sharding:集群分片,分布式交互程序核心方式
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/2486535.html
Copyright © 2011-2022 走看看