Web2.0编程思想:16条法则_web2.0

来源:脚本之家  责任编辑:小易  

只是依附在某个类上。 然而,面向对象仅仅是一个概念或者编程思想而已,它不应该依赖 其次,按照一切事物皆对象这个最基本的面向对象的法则来看,类 (class) 本身并不是一个

1、在你开始之前,先定一个简单的目标。无论你是一个Web 2.0应用的创建者还是用户,请清晰的构思你的目标。就像“我需要保存一个书签”或者“我准备帮助人们创建可编辑的、共享的页面”这样的目标,让你保持最基础的需求。很多Web 2.0应用的最初吸引之处就是它的简单,避免并隐藏了那些多余的复杂性。站在创建者的立场,可以想象Google的几乎没有内容的主页,还有del.icio.us的简单的线条。从最终用户的角度来看,与之齐名的就是Diggdot.us所提供的初始化页面。你能够并且希望加入更多功能,但是先做好最开始的。在一个时候只做一个特性,完成一个目标。这听起来很太过于单纯化了,但它将使你更加专注,而且你也会明白我的意思。

2、链接是最基础的思想。这就是我们称之为Web的一个理由。链接是把Web中各种实体连接起来的最基本的元素。你的信息、你的关系、你的导航,甚至是能够被写成URL的任何内容。这里有一个链接应该遵循的规则(其实你也不必严格的遵守):

首先,重要的事情说三遍!!!南昌是一个二线城市!!!!南昌是一个二线城市!!!!南昌是一个二线城市!!!!而且这个二线还是看在它作为江西省省会兼江西省GDP第一(3668亿,2014)的情况下给予的一个地位。3668亿什么概念?全国40名左右,大致和扬州差不多,比长沙,合肥都要低,美食是南昌永恒的主题。南昌几乎是所有的街道,都有大大小小的餐馆,赣菜,即南昌口味家常菜是南昌人的最爱,老牌的像江西饭店,凯莱大酒店,家常饭,民间饭庄,独一处系列,灶王爷,柴米油盐,菜肴故事系列,新开的也多了去了,比如西江月,佐佑,80小馆,红家庭厨房,胡同大约几百个吧。吃东西主要在中山路太平洋百货后面的火神庙,丁公路

1. Web上的任何东西都是可以被URI或者是URL所连接的。

锤子系统和MIUI都是国内比较好用和有特色的手机系统,MIUI现在最新的系统版本的是MIUI9,主打流畅、稳定、省电,目前小米6等一大批小米机型已经开始升级至MIUI9,个人觉得MIUI9相比MIUI8确实在系统上精简了不少,砍掉了不少没用的,用的人少的功能,在精简系统的同时,也加入了一些新的功能,例如说分屏、相册搜索、分词搜索等,总的来说MIUI9确实不错。对于锤子系统,个人感觉比MIUI9还要精简一下,目前最新的系统版本是SmartisanOS3.6/3.7,该系统最大的特色就是BigBang和OneStep,这两个功能确实挺好用。除了这两个功能外,锤子系统的UI也是其一大特色之一,不过个

2. 把所有的链接都保存为他的原始出处,这样可以让你与任何人、在任何地方、任何时候都能分享它。

在遇到地震时,如果一个楼倒塌,那么上面的幸存率高还是下面的幸存率高?这样看具体情况。第一种情况,如果生活在低层的居民能够在震时能够迅速的从楼里面跑出来,并且能够迅速逃到安全区域避险,那么底层的居民实际上就更为安全。而住在高层的居民就只能就近避灾,比如躲避在卫生间、比如躲避在三角区域或坚固的床底下或家具旁等等。但是,现在的情况是楼倒塌了,那么即使住在最高层的居民,也可能被压埋,那么也有可能被压死、压伤。因此,如果楼房由一定的抗震性能,倒塌较慢的话,住在低层的居民相对来说生存的几率比住在高层的居民要更高。第二种情况,如果楼房的抗震性能较差,倒塌过于迅速的话,连住在低层的居民都跑不出来的话,那么显然

3. 第二条中任何时候的前提是链接必须是持久的,它不会在没有任何缘由的情况下被改变或者是消失。

明确的说,素颜的女生到底没有化妆的引人注意,我比较懒,基本不化妆,化妆也就是让室友帮我修下眉毛,然后我自己擦个口红,女生化了妆精气神都不一样的,我很白,可以说面无血色,不擦口红就是死人脸,平时出门上课逛街都不化妆,毕业酒会化了妆就连续被三个男人搭讪,不是男生,是男人-_-||跟一位事业有成的学长因酒会的事联系了两次,差点被强啪,搞得很惊悚,幸亏毕业了,感觉真的城市套路深这张是纯素颜也没美颜的,原谅我实在没照片,关注我的应该都看过了这张是有美颜纯素颜的,在寝室拍的这张是擦了口红在图书馆拍的这张也是擦了口红但是没有美颜的,大学毕业就没修过眉毛了,之前也有人说我眉毛太淡了,没办法,真的懒→_→看别的

4. 链接应该是人类可读的、稳定的、并且能够自我诠释的。 

3、数据应该属于创建它的人。是的,你听我的。任何用户创建的、贡献的或分享的都是他们自己的,除非他们很明显的放弃这个权力来让你自由处置。他们贡献到Web上的任何信息都应该是可编辑的、能被删除的、并且能够取消共享,无论在任何时候,只要用户愿意。这也包含了那些间接的数据,像他们所关心的记录、日志、浏览历史、网站访问信息,或者是任何可以被跟踪的信息。所有的网站必须清晰简单的陈诉那些信息是用户创建的,并且提供他们停止创建的方法,甚至是清除的方法。

4、数据优先,体验与功能其次。无鬯俏谋尽⑼计⒁羝祷故鞘悠担琖eb最终还是把这些解析为数据。换句话说,你无法脱离数据去呈现内容。所有这些数据都通过那些易于发现的URL来定位(参见第2条)。通过另一种形式来看待这些,Web最终是名词优先,动词其次,虽然最近正在向动词偏移。来看看名词的例子:日历的条目、家庭照片、股票价格。还有一些动词的例子:定一个约会、共享一张图片、买一份股票。

5、做好积极分享一切的准备。尽可能的分享一切,你所拥有的所有数据,你所提供的所有服务。鼓励不遵循原有意图的使用,提倡贡献,不要那些需要分享的内容坚持设置为私有的。在分享与发现之后,提供易于使用的浏览方式是显而易见的需求。为什么呢:话说回来,你会从别人的共享之中受益匪浅。注意:这里没有许可让你去侵犯版权保护的法律,你不能够去分享你刻录的DVD或者是拥有商业版权音乐,因为你已经同意不会去分享这些东西。但是你可以发现并分享那些完全开放的媒体内容。一个小小的建议,你可以学习一下Creative Commons license(共创协议).

6、Web是一个平台;要让它成长。当然,我们还有很多其他的平台(Windows、Linux、Mac),但是那些已经不是重点了。换句话说,Web是无法脱离的平台,不会中断的平台,你可以通过各种方式去扩展的平台。你在Web上提供的数据与服务将会成为Web一部分,最终你会在Web平台的某一处扮演你的角色。扮演好你的角色并照顾好后来者。

7、理解与信奉“阶梯性”。现在的Web越来越大,几乎蔓延到了全世界的所有国家,并且已经拥有了10亿用户。我的观点是Web的各个组成部分存在着细微的区别和不同,就像不同地方的用户那样。例如Web的设计部分:易用性永远优先于速度、可靠性、重用性与可集成性。你也应该提供同样的体验给你的用户。它已经被一次又一次的被人们在文档中强调,忠诚的用户很快会成为专业的用户,他们期待更快的速度还有更多。退一步支持他们。同样,也有很多很多的用户会进入这个阶梯的底端,如你所期待的那样。他们可能不会说你的语言,不熟悉你的文化,甚至不知道是如何到这里的。所以你需要向他们表达清楚。

8、任何东西都是可编辑的。或者是它应该被编织的更好。要确定的是,只有很少的东西是不能被编辑的,剩下的都可以,这是一个可写的Web。这并不意味着原始内容的丢失,而通常被理解为用户能够很容易的对内容加以评论,或者评注内容是在那里发现的。如果你对此应用的好,他们能够比你所想象的做的更多(把内容串起来并且给予原始内容来创建自己的,等等)。

9、Web上的身份是神圣的。不幸的是,这并不意味着你能够得到更多的隐私(这完全是上个世纪的想法)。但对身份的验证是必要的,你应该感谢那些只需一个邮件地址就能确定你身份的服务。这意味只要你对你的用户承诺了,你就必须保证他们的隐私安全。必要的时候,在这个世界的某处你还得为你的用户挺身而出,向当地的权威挑战。如果你没有打算那样做,你就得把实际情况告诉你的用户。另一方面,如果身份是必须的,不要试图伪装它,不然在某一天我们将会在Web上放弃我们的最后一点点隐私的权利。

10、了解流行的标准并且使用他们。从一个消费者或者是创作者的立场来看,数据将会以不同的格式与任何一个人交换。同时这样的数据也会反过来促进标准的完善与采纳。这通常意味像RSS、 OPML、XHTML、Simple XML、JSON等简单标准的流行,而避免SOAP、XSD,还有RDF、ATOM也一样,使用它们会给我的内心带来痛苦。请你也为你所钟爱的标准投上一票来支持它们。

11、遵循无意使用的规律。如果你把非常有趣的数据和服务用广泛使用的格式开放和共享出去,你将会得到你所应得的,其他人也将会基于你的那一块Web平台来构建。或许还会从别人那里得到更多,所以为这个做一下准备比较好。我已记不清有多少次我看到一个播客(podcasting)服务因为流行过渡而导致服务垮掉,就是因为他们被 Slashdot和del.icio.us给收录了。这一点要知道:网络上的大量化意味着如果一个内容非常有趣,即使是一个很小的角落也会得到惊人的访问量。鼓励使用这种方式,它还是非常有价值的,前提是你要有所准备。

12、粒化你的数据与服务。我们应该在很早以前就明白这些,大规模集成的数据仅仅适用于无需管理的下载与批量操作。分解你的数据,让他们独立成可描述的URL地址,对你的服务也一样。反过来说,你不要创建一些巨大的、复杂的、像圣诞树那样的数据结构和服务。保持简单,要非常的简单。让这些分离的片断能够容易的被重组和发现。

13、提供用户能够单独受益的数据和服务。渐渐依赖于这种社会化参与是存在风险的,你需要让你的用户有一点点动机来贡献时间、热情和信息,除非他们能够直接受益。社会化分享比个体行为的利益大很多,除非你能够激发用户的个人动机,否这你将无法享受这份厚礼。

14、让用户组织并过滤信息。不一定是必须的,但却是非常重要的。让用户以他们自己的方式来标注和组织数据,因为你自己是永远无法及时的处理他们的。用户会按照他们自己理解的最佳方式来处理并构建。要保证你的Web服务能够按照用户所需所想的方式来工作。这也是标签(tagging)和通俗分类(folksonomies )的方式如此成功的主要因素。

15、提供丰富的用户体验。Web一直都在和本地的应用程序进行着激烈的竞争。为什么?因为本地程序还是感觉上好一些,速度也快一些。但是这不会长久的(确信在5年或者15年后,这种竞争就不存在了)。是的,我在谈论Rich Internet Applications, Ajax, 还有那些不可思议的交互应用。他们让Web成为了一个真正的“无平台”的平台,如果你知道我是怎么想的。

16、信奉并支持快速改进和反馈。这个通常意味着加快步伐,但也意味着使用轻量级的工具、技术和不要做出那些适得其反的痛苦决定(例如使用一个被层层环绕的Ajax框架来代替可以通过混合来实现的,或者用C++来构建所有的东西,其实使用Ruby会更好一些)。这同时也意味着需要一个非常快速的方式来处理错误报告,修复Bug,释放新版本。从一个用户的角度来看,报告你所发现的任何问题,还有那些你经常抱怨的地方,甚至那些都不是一个Bug。

当然,Web 2.0是一个极其广泛和深奥的话题,没有一个人能够列举出它的所有重点和特征。如果你对此充满了兴趣,请花一点时间来补充我没有提到的地方。我想这就是Web 2.0的参与性吧!

原作者的这个标题借鉴了Bruce Eckel的两本畅销书的名字:《Thinking in C++》和《Thinking in Java》,《C++编程思想》与《Java编程思想》,在此说明一下为什么要这样翻译这个题目:)

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

Java的有几种技术架构

Java架构:

软件架构作为一个概念,体现在技术和业务两个方面。

从技术角度来说:软件架构随着技术的革新不断地更新其内容,软件架构建立于当前技术和一些基本原则的基础之上。

先说一些基本原则:

分层原则:分层是为了降低软件深度复杂性而使用的关键思想,就像社会有了阶级一样,软件有了层次结构。

模块化原则:模块化是化解软件广度复杂的必然手段,模块化的目的就是让软件分工。

接口实现分离原则随着软件模块化的不断深入改进,面向接口编程而不是面向实现编程可以让复杂度日趋增高的软件降低模块之间的耦合度,从而让各模块更轻松改进。从这个原则出发,软件也从微观进行了细致的规范化。

还有两个比较小但很重要的原则:

细节隐藏原则很显然把复杂问题简化,把难看的细节隐去,能让软件结构更清晰。其实这个原则使用很普遍,java/c++语言中的封装原则以及设计模式中的Facade(外观)模式就很能体现这个原则的精神。

依赖倒置原则随着软件结构的进一步发展,层与层之间、模块与模块之间的依赖逐渐加深,而层、模块的动态可插拔要求不端增大。依赖倒置原则可看视为接口实现分离原则的深化,根据此原则的精神,软件进入了工具时代。这个原则有点类似于知名的好莱坞法则:Don't call us, we'll call you。

以上这些原则奠定了我们的软件架构的价值指标。但软件架构毕竟是建立在当前技术之上的。而每一代技术都有架构模式。过去的不再说了,让我们现在就来看一下当前流行的技术,以及当前我们能采用的架构。

因为面向对象是当前最流行开发技术,且设计模式的大量使用使面向对象的走向成熟,而数据库是当前最有效的存储结构、web界面是当前最流行的用户接口,所以当前最典型的三层次架构就架构在以上几项技术的基础之上,用数据库作存储层、用面向对象来实现业务层、用web来作为用户接口层。我们从三层次架构谈起:

因为面向对象技术和数据库技术不适配,所以在标准三层次架构的基础上,我们增加了数据持久层,来管理O-R双向映射,但目前一直没有最理想的实现技术。cmp和entity bean技术因为其实现复杂,功能前景有限,已接近被淘汰的边缘。JDO及hibernate作为o-r映射的后期之秀,尤其是hibernate,功能相当完备。推荐作为持久层的首选

在业务层,因为当前业务日趋负载,且变动频繁,所以我们必须有足够敏捷的技术来保证我们的适应变化的能力,在标准j2ee系统中session bean负责业务处理,且有不错的性能表现,但采用ejb系统对业务架构模式改变太大,且其复杂而昂贵,业务代码移植性差。而spring 作为一个bean配置的轻量级架构,漂亮的IOC模式实现,对业务架构影响小,所以推荐作为中间层业务框架。

在用户结构层,虽然servlet/jsp/jstl/javaBean 能够实现MVC架构,但终究过于粗糙。struts对MVC架构的实现就比较完美,Taperstry也极好地实现MVC架构,且采用基于事件的方式,非常诱人,惜其不够成熟,我们仍旧推荐struts作为用户接口层基础架构。

因为业务层是三层次架构中最有决定意义的,所以让我们回到业务层细致地分析一下,在复杂的业务我们常常需要以下基础服务的一种或几种:事务一致性服务acid(tool:jta/jts)、并发加锁服务concurrent&&lock、池化管理服务cache、访问控*务(tool:jaas)、流程控*务workflow、动态实现服务IOC,串行化消息服务(tool:jms)、负载平衡服务blance等。如果我们不采用重量级应用服务器(如weblogic,websphere,jboss等)及重量级组件(EJB),我们必须自己实现其中一些服务。虽然我们大多情况下,不需要所有这些服务,但实现起来却非易事。幸运的是我们有大量的开源实现代码,但采用开源代码却常常是件不轻松的事。

随着xml作为结构化信息传输和存储地位日渐重要,一些xml文档操作工具(DOM,Digester,SAX等)的使用愈发重要,而随着xml schema的java binding工具(jaxb,xmlbean等)工具的成熟,采用xml schema来设计xml文档格式,然后采用java binding来生成java bean 会成为主要编程模式,而这又进一步使数据中心向xml转移,使在中小数据量上,愈发倾向于以xquery为查询语言的xml数据库。最近还有一个趋势,microsoft,ibm等纷纷大量开发中间软件如(microsoft office之infopath),可以直接从xml schema 生成 录入页面等非常实用的功能。还有web service 的广泛应用,都将对软件的架构有非常重大的影响。至于面向服务架构(SOA)前景如何,三层次架构什么时候走入历史,现在还很难定论。

aop的发展也会对软件架构有很深的影响,但在面向对象架构里,无论aspectJ还是jboss-aop抑是aspectWerks、nanning都有其自身的严重问题:维护性很差,所以说它将很难走远。也许作为一个很好的思想,它将在web service里大展身手。

rdf,owl作为w3c语义模型的标志性的语言,也很难想象能在当前业务架构发挥太大影响。但如果真如它所声称那样,广泛地改变着信息的结构。那么对软件架构也会有深远影响。

有关架构设计的一些忠告:

尽量建立完整的持久对象层.可获得高回报

尽量将各功能分层,分块,每一模块均依赖假定的其它模块的外观

不能依赖静态数据来实现IOC模式,应该依赖数据特征接口,静态数据仅是数据特征接口实现方式之一

架构设计时xml是支持而不是依赖.但可以提供单一的xml版本的实现

从业务角度说:软件架构应是深刻体现业务内部规则的业务架构,但因为业务变化频纴,所以软件架构很难保持恒定不变,但业务的频繁变化不应是软件架构大规模频繁变化的原因,软件架构应是基于变化的架构。

一种业务有其在一段时间内稳定存在的理由(暂且不谈),业务内部有许多用例,每一种用例都有固定的规则,每一规则都有一些可供判定的项,每一项从某一维度来观察都是可测量的,我们的架构首先必须保证完美适应每一项每一种测量方式,很多失败的架构都是因为很多项的测量方式都发生变更这种微观变化中。

每个用例都有规则,我们在作业务用例分析,常常假定一些规则是先验的,持久稳定的,然而后来的业务改变常常又证明这种看法是错误的,然而常常我们的架构已经为之付出了不可挽回的代价。大量事实证明:规则的变化常常用例变化的根本原因。所以我们的架构要尽可能适应规则的变化,尽可能建立规则模版。

每个用例都关系着不同的角色。每一个用例的产生都必然是因为角色的变更(注意:不是替换,而是增强或减弱),所以注意角色的各种可能情况,对架构的设计有举足轻重的意义。在我们当前的三层架构里,角色完美地对应接口概念。

在一个系统里很多用例都相互关联,考虑到每个用例均有可能有不同的特例,所以在架构设计中,尽量采用依赖倒置原则。如架构许可可采用消息通信模式(JMS)。这样可降低耦合度。

现在我们谈一下业务稳定存在理由对业务的影响。存在即是合理,在这里当然是正确的。业务因人而存在,所以问业务存在的理由即是问不同角色的需要这项业务的理由以及喜欢不喜欢当前业务用例的理由,所有这样的角色都应该在系统里预留。《待续》

在架构设计中有几个原则可以考虑:

用例尽量细分

用例尽量抽象

角色尽量独立

项测量独立原则

追求简单性

这里未提供相关的例子,例子会在以后的更新时提供。

业务和模式之间的关系

业务中的一些用例之间的关系常常和一些常规的模式很相似。但随着时间的演化,慢慢地和先前的模式有了分歧。这是个正常的现象。但这对系统架构却要求非常高,要求系统架构能适应一些模式的更替。在这里我们尽可能早地注意到用例之间的相互角色变化,为架构更新做好准备.

java架构有哪些

Java架构:软件架构作为一个概念,体现在技术和业务两个方面。从技术角度来说:软件架构随着技术的革新不断地更新其内容,软件架构建立于当前技术和一些基本原则的基础之上。先说一些基本原则:分层原则:分层是为了降低软件深度复杂性而使用的关键思想,就像社会有了阶级一样,软件有了层次结构。模块化原则:模块化是化解软件广度复杂的必然手段,模块化的目的就是让软件分工。接口实现分离原则随着软件模块化的不断深入改进,面向接口编程而不是面向实现编程可以让复杂度日趋增高的软件降低模块之间的耦合度,从而让各模块更轻松改进。从这个原则出发,软件也从微观进行了细致的规范化。还有两个比较小但很重要的原则:细节隐藏原则很显然把复杂问题简化,把难看的细节隐去,能让软件结构更清晰。其实这个原则使用很普遍,java/c++语言中的封装原则以及设计模式中的Facade(外观)模式就很能体现这个原则的精神。依赖倒置原则随着软件结构的进一步发展,层与层之间、模块与模块之间的依赖逐渐加深,而层、模块的动态可插拔要求不端增大。依赖倒置原则可看视为接口实现分离原则的深化,根据此原则的精神,软件进入了工具时代。这个原则有点类似于知名的好莱坞法则:Don't call us, we'll call you。以上这些原则奠定了我们的软件架构的价值指标。但软件架构毕竟是建立在当前技术之上的。而每一代技术都有架构模式。过去的不再说了,让我们现在就来看一下当前流行的技术,以及当前我们能采用的架构。因为面向对象是当前最流行开发技术,且设计模式的大量使用使面向对象的走向成熟,而数据库是当前最有效的存储结构、web界面是当前最流行的用户接口,所以当前最典型的三层次架构就架构在以上几项技术的基础之上,用数据库作存储层、用面向对象来实现业务层、用web来作为用户接口层。我们从三层次架构谈起:因为面向对象技术和数据库技术不适配,所以在标准三层次架构的基础上,我们增加了数据持久层,来管理O-R双向映射,但目前一直没有最理想的实现技术。cmp和entity bean技术因为其实现复杂,功能前景有限,已接近被淘汰的边缘。JDO及hibernate作为o-r映射的后期之秀,尤其是hibernate,功能相当完备。推荐作为持久层的首选在业务层,因为当前业务日趋负载,且变动频繁,所以我们必须有足够敏捷的技术来保证我们的适应变化的能力,在标准j2ee系统中session bean负责业务处理,且有不错的性能表现,但采用ejb系统对业务架构模式改变太大,且其复杂而昂贵,业务代码移植性差。而spring 作为一个bean配置的轻量级架构,漂亮的IOC模式实现,对业务架构影响小,所以推荐作为中间层业务框架。在用户结构层,虽然servlet/jsp/jstl/javaBean 能够实现MVC架构,但终究过于粗糙。struts对MVC架构的实现就比较完美,Taperstry也极好地实现MVC架构,且采用基于事件的方式,非常诱人,惜其不够成熟,我们仍旧推荐struts作为用户接口层基础架构。因为业务层是三层次架构中最有决定意义的,所以让我们回到业务层细致地分析一下,在复杂的业务我们常常需要以下基础服务的一种或几种:事务一致性服务acid(tool:jta/jts)、并发加锁服务concurrent&&lock、池化管理服务cache、访问控*务(tool:jaas)、流程控*务workflow、动态实现服务IOC,串行化消息服务(tool:jms)、负载平衡服务blance等。如果我们不采用重量级应用服务器(如weblogic,websphere,jboss等)及重量级组件(EJB),我们必须自己实现其中一些服务。虽然我们大多情况下,不需要所有这些服务,但实现起来却非易事。幸运的是我们有大量的开源实现代码,但采用开源代码却常常是件不轻松的事。随着xml作为结构化信息传输和存储地位日渐重要,一些xml文档操作工具(DOM,Digester,SAX等)的使用愈发重要,而随着xml schema的java binding工具(jaxb,xmlbean等)工具的成熟,采用xml schema来设计xml文档格式,然后采用java binding来生成java bean 会成为主要编程模式,而这又进一步使数据中心向xml转移,使在中小数据量上,愈发倾向于以xquery为查询语言的xml数据库。最近还有一个趋势,microsoft,ibm等纷纷大量开发中间软件如(microsoft office之infopath),可以直接从xml schema 生成 录入页面等非常实用的功能。还有web service 的广泛应用,都将对软件的架构有非常重大的影响。至于面向服务架构(SOA)前景如何,三层次架构什么时候走入历史,现在还很难定论。aop的发展也会对软件架构有很深的影响,但在面向对象架构里,无论aspectJ还是jboss-aop抑是aspectWerks、nanning都有其自身的严重问题:维护性很差,所以说它将很难走远。也许作为一个很好的思想,它将在web service里大展身手。rdf,owl作为w3c语义模型的标志性的语言,也很难想象能在当前业务架构发挥太大影响。但如果真如它所声称那样,广泛地改变着信息的结构。那么对软件架构也会有深远影响。有关架构设计的一些忠告:尽量建立完整的持久对象层.可获得高回报尽量将各功能分层,分块,每一模块均依赖假定的其它模块的外观不能依赖静态数据来实现IOC模式,应该依赖数据特征接口,静态数据仅是数据特征接口实现方式之一架构设计时xml是支持而不是依赖.但可以提供单一的xml版本的实现从业务角度说:软件架构应是深刻体现业务内部规则的业务架构,但因为业务变化频纴,所以软件架构很难保持恒定不变,但业务的频繁变化不应是软件架构大规模频繁变化的原因,软件架构应是基于变化的架构。一种业务有其在一段时间内稳定存在的理由(暂且不谈),业务内部有许多用例,每一种用例都有固定的规则,每一规则都有一些可供判定的项,每一项从某一维度来观察都是可测量的,我们的架构首先必须保证完美适应每一项每一种测量方式,很多失败的架构都是因为很多项的测量方式都发生变更这种微观变化中。每个用例都有规则,我们在作业务用例分析,常常假定一些规则是先验的,持久稳定的,然而后来的业务改变常常又证明这种看法是错误的,然而常常我们的架构已经为之付出了不可挽回的代价。大量事实证明:规则的变化常常用例变化的根本原因。所以我们的架构要尽可能适应规则的变化,尽可能建立规则模版。每个用例都关系着不同的角色。每一个用例的产生都必然是因为角色的变更(注意:不是替换,而是增强或减弱),所以注意角色的各种可能情况,对架构的设计有举足轻重的意义。在我们当前的三层架构里,角色完美地对应接口概念。在一个系统里很多用例都相互关联,考虑到每个用例均有可能有不同的特例,所以在架构设计中,尽量采用依赖倒置原则。如架构许可可采用消息通信模式(JMS)。这样可降低耦合度。现在我们谈一下业务稳定存在理由对业务的影响。存在即是合理,在这里当然是正确的。业务因人而存在,所以问业务存在的理由即是问不同角色的需要这项业务的理由以及喜欢不喜欢当前业务用例的理由,所有这样的角色都应该在系统里预留。《待续》在架构设计中有几个原则可以考虑:用例尽量细分用例尽量抽象角色尽量独立项测量独立原则追求简单性这里未提供相关的例子,例子会在以后的更新时提供。业务和模式之间的关系业务中的一些用例之间的关系常常和一些常规的模式很相似。但随着时间的演化,慢慢地和先前的模式有了分歧。这是个正常的现象。但这对系统架构却要求非常高,要求系统架构能适应一些模式的更替。在这里我们尽可能早地注意到用例之间的相互角色变化,为架构更新做好准备.

SOA到底是什么?作用是什么?"

对于SOA,目前我听到有两种说法:一种讲它是"颠覆性的*架构",一种是"谨慎观望"。但无疑,SOA最近几年发展得非常快,各主要软件厂商纷纷高调跟进,关于SOA的报道可以说是不绝于耳。对"SOA热",程序员们有的兴奋和期待,有的则感到困惑,最近我在金蝶中间件于广州、上海等城市举行的"Java俱乐部"上和程序员们交流时,他们或是以一种朝圣者的表情说:"以前面向对象的技术过时了,SOA时代来了",或者一再恳切地追问我:"

那么,SOA是什么?到底能解决什么问题、解决得怎样?我们和客户都准备好了吗?我给出的答案是"Just Processing,SOA-现在进行中"。SOA到底是什么?SOA(Service-Oriented Architecture)的定义是面向服务的架构,就是说将软件按照功能设计成一个个服务,这些服务用标准的方式定义接口、并通过标准的协议进行调用。SOA所定义的接口和调用方式是独立于编程语言和运行平台的,广义上讲SOA可以基于不同的底层技术实现,比如CORBA和Web Services。但CORBA由于过于复杂和臃肿已很少使用,所以目前所说的SOA绝大多数是基于Web Services技术实现。在Web Services的实现方式下,SOA服务的接口用XML进行定义。在SOA架构下,软件开发从业务流程分析开始,使用组件化业务建模的方法识别和分析各种业务模型,将各种实践融入其中,在这个基础上建立用例,用例直接产生BPEL,这些BPEL则可以被融入一个服务整合框架中,其描述了各种服务的信息,从而把ESB上的各个模块统一起来,形成一个巨大的服务仓。这样,SOA甚至是所有软件人员的一个梦:将中间层再进行抽离,在中间层作一个跨技术架构的元数据和业务逻辑,使之成为跨技术架构的、可长期继承、并不断积累的企业业务库和最宝贵的信息资产,也就是面向服务的组件库,而且这个服务组件库也可以被其它企业复用,且不依赖于任何一种技术架构。夸张一点说,如果所有软件企业都使用SOA架构,那么世界软件业将会发生彻底的改变。显然,这样一个框架不是一种产品,也不仅仅是一种技术,而是一种解决问题的方*。SOA可能应用的两个场景及现有问题那么,SOA要解决的问题是什么?我认为,从技术本质上讲,SOA可能应用于两个场景:第一种是业务互通互联;第二种是封闭交易系统,即将元数据和业务逻辑抽离,形成可复用。举个例子,在第一种场景中,当不同企业之间的业务需要相互调用,这时就可能采用SOA技术;在第二种场景中,在企业内部需要将系统进行迁移时,利用SOA技术定义的原有数据和业务流程,可以很快完成。无疑,SOA是一个伟大的思想,它试图定义一个大家(各种软件厂商)都"认"的、都"遵循"的法则,大家都使用这样的方法来进行互联互通,从而实现无界限的联通,以及服务组件库的继承和复用,解放无效和重复劳动。打一个不那么恰当的比喻,就像人类的语言一样。SOA或许就像《圣经》中那个著名的"通天塔"的故事:人们用同一种语言交流产生的威力是如此之大,以至于他们在巴比伦几乎要修成一个"通天塔",直达上帝所在的天庭。但是,在SOA应用的两个场景中,现存的问题同样也是明显的:第一种场景:业务互联互通,就是应用系统互联。业务互联,与其说是技术问题,不如讲是业务问题,例如ERP、CRM的异步整合,数据层面整合都不能很好将两个系统整合,SOA仅仅是一种实现工具之一,整合效果并不会好不到那里去。我们可以说,在没有其他选项之前,SOA是一种最"不坏"的方式,但它并不能解决所有的问题,实际上EAI的牵涉面很广,而我们知道,有些问题并不是单纯靠技术就能解决的。第二种场景:封闭交易系统,缺点是性能慢,而且基于Web Services的交易没有形成明确的规范。使用XML作信息交互比较慢是大家都承认的,性能问题将对SOA的发展造在一定的阻力。同时SOA规范本身没有完善,比如Transaction规范还在不断完善,而且Web Service多年来收效甚微。总的来说,SOA现在还处在一个发展阶段,很多标准还在制定,不同厂商间还存在不兼容的现象,因此SOA还不能说已经是一个成熟的技术,还需要时间的检验,还在"进行中"。当然,金蝶中间件作为JCP组织成员,也会推动SOA规范在J2EE平台上的实现。中国用户的现实选择之惑在憧憬SOA技术可能带来的前景之余,我们不得不回过头来冷静地说:SOA和我们大家的共同客户――中国企业还有距离。中国信息化进程与欧美不同,大量的基础业务系统还没建立起来,整合需求并不如想象的那么大。从我们对客户的了解,发现很少有客户有SOA的需求。简单地总结就是,互通无基础,以新建系统为主,需求并不强烈。而欧美市场大量业务系统已建立起来需要整合,从这个角度讲,SOA是适用于他们的。同时,在成功案例极少的前提下,SOA还处于培育期,新建封闭交易系统使用SOA技术还是有一定风险的。一项新技术需要市场的消化,大型企业出于保护企业投资,不会轻易地转移到新的技术平台;而即使像J2EE这样成熟的技术经过了这么多年的发展,也不敢说占有统治地位的市场份额。SOA还需要整个IT界的用户和供应商共同促进。中国信息化需要什么样的技术架构、能够接受什么样的成本价位?这不仅仅是我们的客户需要考虑,我们软件厂商要比客户考虑得更清楚、更进一步。在这个充满变数的激烈竞争市场,只有冷静务实才能生存、发展。

SNS是什么啊 是什么意思啊

在互联网领域有SNS三层含义:服务 Social Network Service,软件 Social Network Software,网站 Social Network Site。Social Network Service中文直译为社会性网络服务或社会化网络服务,意译为社交网络服务。中文的网络含义包括硬件、软件、服务及网站应用,加上四字构成的词组更符合中国人的构词习惯,因此人们习惯上用社交网络来代指SNS(包括Social Network Service的三层含义),用社交软件代指Social Network Software,用社交网站代指Social Network Site。SNS专指旨在帮助人们建立社会性网络的互联网应用服务。 医学领域:Sympathetic Nervous System 【解】交感神经系统 sns是soft net system的缩写,即柔性网系统,在建筑方面,特别是公路、铁路建设方面应用很大,用于防护边坡细微垮塌的防护。根据防护方式不同,分为主动防护和被动防护。主动防护是防护网系统将有垮塌倾向的岩体笼络在一起,使它不发生位移;被动防护是在有垮塌倾向的岩体下设一道起阻挡作用的钢网,拦截垮塌的石块。SNS:Social Network Software,社会性网络软件,依据六度理论[1],以认识朋友的朋友为基础,扩展自己的人脉。并且无限扩张自己的人脉,在需要的时候,可以随时获取一点,得到该人脉的帮助。 SNS是一个采用分布式技术,通俗地说是采用P2P技术,构建的下一代基于个人的网络基础软件。SNS通过分布式软件编程,将现在分散在每个人的设备上的CPU、硬盘、带宽进行统筹安排,并赋予这些相对服务器来说很渺小的设备更强大的能力。这些能力包括:计算速度,通信速度,存储空间。 社会性网络(社会网络,Social Networking:SN):是指个人之间的关系网络,这种基于社会网络关系系统思想的网站就是社会性网络网站(SNS网站)。现在许多WEB2.0网站都属于SNS网站,如网络聊天(IM)、交友、视频分享、博客、播客、网络社区、音乐共享等。社会性网络的理论基础源于六度分割理论(Six Degrees of Separation)和150法则(Rule Of 150)。另外不仅现在一些大公司网站开始了一些SNS应用,一些垂直领域的行业站点也开始了SNS的尝试,并且效果不错,例如以华人视觉艺术家为目标用户群体的蜂巢网、以情感与音乐为主的漂泊一族以及基于Manyou开放平台的社交游戏推广平台社交游戏。

  • 本文相关:
  • html5 websocket技术使用详解
  • web2.0中流行的设计元素:颜色
  • 什么是web2.0?
  • web2.0的几个开源项目
  • web2.0编程思想:16条法则
  • web2.0色系
  • web移动端fixed布局的解决方案
  • Java的有几种技术架构
  • java架构有哪些
  • SOA到底是什么?作用是什么?"
  • SNS是什么啊 是什么意思啊
  • SNS是什么?
  • 全面理解面向对象的 JavaScript(来自ibm)
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页web2.0html5 websocket技术使用详解web2.0中流行的设计元素:颜色什么是web2.0?web2.0的几个开源项目web2.0编程思想:16条法则web2.0色系web移动端fixed布局的解决方案什么是web2.0?web2.0的几个开源项目web2.0中流行的设计元素:颜色web2.0编程思想:16条法则web2.0色系web移动端fixed布局的解决方案html5 websocket技术使用详解web2.0色系什么是web2.0?web移动端fixed布局的解决方案web2.0中流行的设计元素:颜色web2.0的几个开源项目web2.0编程思想:16条法则html5 websocket技术使用详解
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved