(OO + 分布式计算) = 软件架构的方向

(OO + 分布式计算) = 软件架构的方向

如果说分布式云计算是一条老百姓通往美好未来的康庄大道,那么选择怎样的座驾驶入这条道路,无疑是关系到我们每个程序员的职业素质和水平。

http://www.jdon.com/artichect/architecture.html

微软首度反思长期策略:8年前.NET战略很天真

4月17日下午,微软中国董事长张亚勤对外表示,微软8年前提出的.NET战略过于天真,促使企业在发展过程中走了弯路.在历经8年市场的发展之后,微软首度公开反思了这一曾经的重大策略,认为有些“天真”,并承认这个计划没有“完全成功”.“微软在2000年的时候提出.NET,当时有天真的想法,认为所有的存储都会到网络上,所以为什么我们当时提出这个战略”.张亚勤说,“这个计划并没有完全成功,我们过度的依赖网络里面的计算,过度依赖网络的存储,过度依赖软件”.

在微软.NET战略中有几大重点,一是将网络作为计算存储中心,二是基于网络的操作系统和开发工具的架构;第三个更加人性化的自然界面.“在第一点上我们 走了弯路,这个需要检讨”,张亚勤表示,但接下来的第二点拯救了.NET,也促使其获得了今天的业界地位.在人性化的自然界面上,张亚勤则认为有些工作做 的不错,有些则比想象中落后,如“语音方面”.

张亚勤也给第一个重点给出了D的低分,第二个重点打出了A,第三个重点则由于部分业务有些落后,只拿到C.

在2007年年底,微软在基于反思的基础上,提出了自己的“云计算”的概念.但这一思路和目前业界主流的提法不尽相同.此间,业界多家互联网及软件厂商认 为,用户资料和软件工具都存储在服务器中,通过高速带宽到达客户端,客户端可以是手机和电视也可以是游戏机、汽车等任何设备.这一模式将会成为主流.

张亚勤认为,业界“云计算”与8年前微软提出的.NET战略相似,只是因为微软当时翻译方式不同,而更多称之为网络计算或网格计算.“现在有些企业、学者在炒作'云计算'的概念,其实没有什么新的”,他说.

“不管是ADSL还是现在的无线网络,带宽都不是免费的,作为用户,可以用解决方案来均衡这些资源.Office、ERP,及现在的实时通讯,是软件的两 种模式.企业有时候很喜欢一个产品并经常升级换代.因此,底层应用中,如操作系统和 Office里面大量的固定功能可以固定在PC中,其中一些新的功能则可以通过网络来实现.”而这一思路正是目前微软眼中的“云计算”.

张亚勤表示,微软也一直在就自己的“云计算”新思路与业界进行更多沟通和均衡.他也透露,微软会在新的理解下,于今年底或明年初时发布更多产品和服务.


这个张亚勤说话有些嚼文字,既然是天真承认错误,看其具体文字好像没有错,都是表扬自己,不知是学会E文,忘了本,还是学了官话一套,我来剖析,撕开其虚伪的面貌:

>在2000年的时候提出.NET,当时有天真的想法,认为所有的存储都会到网络上
>过度依赖网络的存储
>网络作为计算存储中心

过度依赖存储说白了,就是过度依赖数据库,误导初学者用户走上数据库编程思维,这也是大量只受过数据结构、算法的程序员觉得.NET好用的原因。

.NET就是过度依赖网络存储,就是依赖数据库,认为可以通过集中式数据库计算模型或数据库操作系统的集群来解决爆炸式的计算能力。


[该贴被banq于2008-04-19 17:53修改过]

不久前李开复博士到我们学校来演讲,就云计算和google的未来搜索技术扯了一大半天,听得我晕乎乎的,banq这么一解释,醍醐灌顶!

>李开复博士到我们学校来演讲
多谢,看来我也可以做个“博士”了,哈哈,这些都是我本人的思考,是我一直重视性能和OO设计的结合,正好借云计算进行了几年的总结。

能不能说说跟软件即服务(SAAS)的关系啊?感觉差不多啊?

能不能说说跟软件即服务(SAAS)的关系啊?感觉差不多啊?

>能不能说说跟软件即服务(SAAS)的关系
一样的,只不过取一个迷惑人的新名词,为了商业利益,商业利益的掺入将原本很简单的技术复杂化。

Eclipse也在继续推进他们的OSGI,进入分布式计算领域:

First Ever Demo of Distributed OSGi:
http://blogs.iona.com/newcomer/archives/000569.html

那老些异构系统,不想重新开发业务模块就要整合,这方面soa无疑很胜任,因为它不排斥其它技术。其实我很讨厌.net(这是我个人的偏见,仅仅因为我觉得vs的开发界面不习惯),不过有时候还得用它的服务。
osgi应该是技术层次上的,但是soa我想指的是业务层次上的,接口可以不必实现,用的时候再传入接口就好了,缺点是失去了编译期语法检测。

呵呵,难道真的看到了本质了么??
.net真正的原因是因为微软是一家软件公司,而且是一家产品类型非常多的软件公司,如果想对旧版本升级,势必要考虑旧版本的兼容性问题,微软通过增加.net framework来增加了缓冲,将来对于系统的修改可以通过封装的.net framework来解决。

没看出来为什么依赖网络存储就是依赖数据库,难道分布式缓存不是通过网络访问的吗?或者缓存不能叫存储?
我认为实际的意思是过于乐观的估计了网络的发展,毕竟现在完全通过网络完成日常工作,例如Office,还不太现实。

>>>张亚勤认为,业界“云计算”与8年前微软提出的.NET战略相似
这话他也敢说?当心被小沈阳骂:臭不要脸!
《Microsoft .NET战略》一书,印了无数,.NET产品仍在使用,不知道有哪些云计算的味道?

>>>在微软.NET战略中有几大重点,一是将网络作为计算存储中心,二是基于网络的操作系统和开发工具的架构;第三个更加人性化的自然界面.“在第一点上我们 走了弯路,这个需要检讨”,张亚勤表示,但接下来的第二点拯救了.NET,也促使其获得了今天的业界地位.在人性化的自然界面上,张亚勤则认为有些工作做 的不错,有些则比想象中落后,如“语音方面”.
第一点没错,现在整个世界在走存储虚拟化的路。错的是,MS根本没能力搞这个,更没能力引领世界搞这个。
第二点,看不出有什么伟大处。中间码是个老掉牙的东西,连MS自己也早在MBASIC里玩过。他要实现的统一语言平台至今也没真正做到。更重要的是,这玩意儿对当今世界有多少意义?
至于第三点,到是真正的MS特色,一贯的。

>>>如果Google当初选择了这种集中式超级计算模式,那么也许就没有我们普通百姓可以享用的方便低廉的搜索服务
楼主在那篇文章里把Google说得太伟大了。
搜索的处理对象,本身就是分布的。
大家知道,分布式是件比较复杂的活。但是,在某些特殊的场合,它却非常简单,搜索就是一个极端的例子。
现在,最大规模使用PC集群的,也是Google。但是,技术含量很低。对这种需求,最容易集群。如果有谁能搞个PC数据库集群,那技术水准要高几个数量级。

这篇文章被国内网站多家转载,还有人翻译成因为了:
http://www.codeweblog.com/oo-distributed-computing-software-architecture-direction/

英文,如下,翻译得不错,分页转载:
Recently, a new term "cloud computing (cloud computing)" very popular, it is the further refinement of grid computing, we take a look at some of the network on the definition of cloud computing:

Google search engine used to calculate more suitable interpretation of Cloud Computing: Web pages are usually substantial and complex changes, but cloud computing can easily deal with huge amounts of data, it can not only search mission will be cut into multiple small mission module implementation, but a single mission module can use different algorithms, such a calculation is the search results collection. (Excerpt from Google Cloud Computing leaked secret)

"Clouds" is not only the distribution of those mesh computer analogy, but also refer to data calculated with the process of being hidden by the server according to your needs, from large clouds "carving out" you need that one. It is very romantic metaphor.

Cloud computing is an emerging model for business computing. The use of high-speed Internet transmission capacity, will process data from a personal computer or server to the Internet on a computer cluster. These computers are very common industry-standard servers, from a large-scale data-processing center management, and data center according to the needs of customers distribution of computing resources, supercomputers to achieve the same result. (Excerpt from the calculation if the cloud)

Therefore, from a conceptual point of view, cloud computing is the essence of a distributed computation, this mode of calculation compared with the traditional database centric computing model, no doubt has a huge potential and superiority.


The so-called database centric computing model, is to deal with software systems and load capacity mainly concentrated in one or two database servers, to improve treatment capacity calculation can only continue to improve the level of database server hardware, from the ordinary dual-core multi-core PC-to Minicomputer, until medium-sized machines and supercomputers, with the ability to improve treatment, the system's construction costs more and more high-end, enjoy the super-computing power no longer be the ordinary people the right to become a noble and special defense of patents, country to show off the computer and become a symbol of strength.

In fact, maybe we took a wrong direction, if Google had chosen such a centralized super-computing model, then perhaps there would be no us ordinary people can enjoy the convenience of low-cost search service, use the search has become my 8-year-old son basic tools, he 1 Institute of Chinese characters, these characters will find themselves at google want to play the game, search, and Chinese characters has been at the same time into the next generation of our people's blood, which benefited from the calculation of changes in thinking: the distribution of computing cloud computing.

In Java, and from start EJB birth, it had already announced the beginning of distributed computing revolution, EJB the most important value is to allow us to develop a model of distributed computing software system no longer become difficult and complicated. Cloud computing model is now more up to SOA and Service We see the following IBM's Blue Cloud architecture, a basic core of EJB / SOA server Websphere (chart from cloud computing leaked Google's secret):

cloud computing

Having said that many distributed computing, then and object-oriented OO design thinking what this relationship? In fact, these two are the same strain, the opinion I have already mentioned at the forum jdon.com for several years: Just think: distributed computing is the data treatment, only the data is packaged in the Target Object, and the objects are running on application server of memory, so that the entire calculation of the load will be concentrated on these application servers, and then we can set up multiple application servers, distributed computing; If these data are packaged in the data table that can only be run on the database server Medium, it will only take a centralized mainframe development.

Journey of a thousand miles begins with a single step, Fashion cloud computing revolution has nothing to do with us if, in fact, it started in the direction of our most basic programming design, only if we set an OO programming idea, our business will be the use of data objects The container package, and can be possible in the future to enjoy the benefits of distributed computing clouds, otherwise, can only be replaced to re-design, this also shows that: the pursuit of software scalability and flexibility are the soul of modern software.

When you use Evans DDD refining these OO analysis method needs you after you get you a lot of business object system, then how to make these business objects in the computer to run distributed computing it: At the current Java world, there are two route can achieve the distributed cluster computing cluster: