首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 数据库 第二书店 程序员

conanpaul/ 


共1423个网摘 [ 1  2  3  4  5  6 ... 48 ]  下一页  |  访问conanpaul的个人空间

Mashups: 让SOA走出后台办公室

conanpaul收录,使用标签:SOA,时间:2007-12-27 13:14:01 | 相关网摘我也收藏

我们刚刚完成了您所要求的SOA项目。”

  “太好了,那我什么时候可以看见第一批的ROI成果?”

  “……”

  “……”

  “我们的销售人员是怎么给您说的?”

  对于如何界定和考核SOA所带来的投资回报率(ROI),即便你认为这不是不可能的,那你也应该清楚这会是一件非常困难的事。不知您有没有注意到在网上的新闻和博客中充斥着SOA的执行者和分析师,他们讨论着SOA的投资回报率,并且从这一角度评断如此卓越的SOA但是为其所付出的努力却将付诸东流。为什么会有这样的现象? SOA只是一项中间件技术,而ROI的衡量是基于使用基础上的。最终,这些关于ROI的讨论都将得到同样一个结论,来自EbizQ的JoeMckendrick指出,那就是:企业级SOA的投资回报率取决于其向企业宏观展现价值的能力――更多的增长、收入机会、以及所有的好处。而这个就是症结所在。

  我们必须要面对的是,如果把SOA比作是水管,很受欢迎,很流行的水管,但它仍旧是水管一根。普遍的你的业务主管人员(销售经理、市场总监、金融主管或是客户支持)都不了解SOA,更重要的是,他们不能领会SOA如何能在他们日常的工作中起到协助的作用。事实上,商业人士要是仔细想想这一切,也许他们会想让SOA离开视线,并且不要阻碍那些解决他们需求的IT项目的进展。

  SOA需要完成从以IT为中心的技术向业务加速器解决方案的转型。Macehiter/Ward-Dutton在最近的发言中指出“从大与小的思路出发, SOA对应BPM,IT必须要注重SOA的真正商业价值之所在。这意味着SOA需要帮助。”他还指出,BPM能将部分SOA价值提升到业务层面。正如一些企业Ajax公司能够证明,诸如Silverlight, Flash/Flex, 和Ajax等丰富的互联网应用(RIA)工具也能成为很好的SOA使用者。但是一些RIA应用程序并不认可企业范围内的多年性SOA成果。我们需要一些商业人士像谈论CRM与ERP那样谈论SOA,这也是他们工作的关键之处。

  客户线索,采购订单,库存,这些才是商务用户能理解的东西。如果SOA能更快更省地得到这种数据以及功能,那么它就是赢家了。这恰恰是企业Mashups介入地领域――一项涉及用户的中间件技术。Mashup是复合网络驱动源的微观整合。“网络驱动源”是个SOA花哨的说法,也指所有的符合标准,在通用网络协议中运行服务:HTTP。

  你要是想再进一步研究mashup与SOA的关系,以下是一些具体的互动模式,比较通用的有:

  服务虚拟化:Mashups 不仅将多个服务的数据连合到一起,还能从未SOA化的资源中创建用户消费服务。众所周知,SOA要取得成果需要好几年的时间。在SOA功能正式实现之前,这是一项标准化的便捷的服务,能帮助用户更早起步。

  用户级服务:Mashups允许用户根据自身需求确定服务规模大小。目前IT没有必要去猜测、研究或是分析一项服务提供的数据是否“太过具体”,“太过概括”,“太陈旧”或是“太冰冷”。

  Mashup协作:Mashups允许用户通过在业务云上的发布与其他用户共享他们的Mashup。目前,IT也没有必要独立的承担建立所有服务的职责,而用户则可以以前所未有的方式相互协作。

  Mashup互动:Mashup允许用户以图表、表格、地图等形式与其SOA mashups。除了期望公司的门户能实现其应有的功能,用户现在也有除IT之外的另一种方式根据需要与数据对话。

  SOA边缘:现在的SOA努力大多集中在内部思想或是中间件上的。Mashups使得用户能够从企业内部和外部链接点数据。如此以来,SOA努力就能与那些更能体现其意义和价值的外界资源联系起来。SOA“边缘化”使这一切成为可能。

  但是,让我们不再受缚于这个理论。如下是一个来自SOA架构是的真实故事,相信从中我们可以清楚的看到Mashup和SOA之间的关系。

  我们主要工作则是完成数据业务,对此我们有着一个非常优秀的数据中心。这是一个非常出色的数据中心,它的存在可以让我有条件冷静下来并有效缓解工作上的压力。看着周围大规模的阵列服务器,路由器,交换机以及存储设备,人们总是很轻易的无法意识到大量的数据正是在这些机器中传输和存储。在我们的数据中心包含着TB级的数据资料,通过汇总、打包之后再为那些有数据需求的客户以Web应用或是传统的FTP访问的形式出售给客户或合作伙伴。我们的数据是如此宝贵以至于客户和合作伙伴即便是对于低科技,甚至是毫无科技含量访问手段也愿意去接受。当然,当他们看到简单易用的Web2.0技术之后,在消费者的世界里还是有很大一部分声音在强烈表示希望能够在访问方式上实现类似的特效与功能。

  正是出于这样的考虑我们开始了SOA,力图主动为新到来的Web2.0特性提供良好的基础。实际上,我们许多的同行和竞争对手也同样的关注SOA,并开始走在“数据服务化”的发展道路上,这也在很大程度带走了一部分曾经属于我们的客户和合作伙伴。但是,当我们开始对外推出我们的服务的时候,这一部分人又重新回到了我们这里,并开始要求更多的整理后的数据,同时也促进了我们更好的将服务整合为单一全面的服务。现在,他们希望通过我们将这些服务数据与其内部业务数据联系到一起。这些客户和合作伙伴告诉我们,我们所提供的服务目的在于更有效的帮助他们,但是他们在在利用这些服务的时候还得花费大量不可理解的时间和金钱去将这些数据和他们的数据结合起来。为什么?他们从我们的服务中获取数据,通过我们的服务,他们自己的服务以及第三方服务将这些数据通过各种技术有效的整合在一个报表中。这确实带来了很大的好处,但是讽刺的是,随着越来越多的业务数据需要被整理的时候这种工作方式的效率之低下是显而易见的。更多的“协作”已经成为我们所面对的高科技客户和合作伙伴所需要解决的问题。

  肯定会有这么一天,当这种需求成为我们进一步吸引客户和合作伙伴的手段,“企业级Mashup”必将为帮助我们更好的实现以数据为导向的服务,并为不断变化以及客户和合作伙伴一直在问的问题提供最有效的解决方法。供应商总是通过一些难以接受的新行业术语来过度形容他们的东西,诸如“新型大型应用中的简捷”,“过程而不是终点”,“新用户的杀手级应用”……但是,务实的态度可以让我们更好的学到更多。企业级Mashup将补充和完善我们的服务,帮助我们的服务和数据产品更贴近客户和合作伙伴的需求。


JAVA使用魔法数值

conanpaul收录,使用标签:Java,时间:2007-12-27 13:12:21 | 相关网摘我也收藏

说明:所谓魔法数值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义。

  魔法数值使代码的可读性大大下降。而且,如果同样的数值多次出现时,到底这些数值是不是带有同样的含义呢,谁也说不清楚。另一方面,如果本来应该使用相同数值的地方,一旦用错了,也很难发现。因此,需要注意以下几点,极力避免使用魔法数值。

  ① 不使用魔法数值,代之以有名字的Static final或者enum值

  在Java语言中,对有名字的值的定义,可以使用用Static final或者enum来声明的值

  注意(命名方法):在取名时一定要注意增加名字的信息量。比如,为16命名为SIXTEEN是没有意义的。

  如果16表示的是价格表的一个元素,则应该命名为PRICE_TABLE_MAX。关于命名规则,还要参照本小册子的第6条。

  ② 原则上,数值就是魔法数值

  但是,0,作为数组的最小下标是经常使用的。

  例:for( int i = 0; I < table.leERRORth(); i++ )

  读到这里,读者都会认为这里的0是数组的最小下标,所以在这里不认为0是魔法数值。

  另外,0经常被作为变量初始化的缺省值,这时候一般也不认为0是魔法数值。

  通过使用有名字的值,一方面可以提高代码的可读性,另一方面,也可以把变更的地方局部化,从而提高可维护性。

  例子:

  魔法数字的例子

  int priceTable[] = new int[16]; //ERROR:这个16究竟有何含义呢?

  使用了带名字的数值的例子

  static final int PRICE_TABLE_MAX = 16; //OK:带名字

  int price Table[] = new int [PRICE_TABLE_MAX]; //OK:名字的含义是很清楚的


JAVA代码应该流畅和结构化

conanpaul收录,使用标签:Java,时间:2007-12-27 13:11:34 | 相关网摘我也收藏

说明:为了使逻辑更易懂,也为了可维护性更高,应该把代码按模块分割,而构成模块的类的方法,原则上只能有一个入口和一个出口。另外,关于嵌套的深度和模块的行数,也应该控制在一眼就能看清楚的程度上。

  就Java语言来说,有如下的几点需要在编码的时候特别留意。

  ① switch的case,default部分原则上必须以break终止

  如果不用break来终止的话,必须代之以编码规约中既定的注释。但是,如果swich或者if/else需要反复进行,就需要重新考虑是不是应该使用多态。

  ② 处理途中只允许返回异常,返回方法中不允许把异常和return混杂在一起。

  处理途中发生的错误,原则上都要使用异常来返回。例如,在对参数进行检查时发生异常时,要抛出IllegalArgumentException。在一本程序里,把错误一会儿用异常抛出,一会儿又用返回值(返回ERROR等)返回,往往是程序混乱的根源。必须在设计阶段明确方针,避免这种混乱。

  ③ finally中,不要写return。

  例:

  ① switch中需要考虑的要点   Int dd = 0;
  Switch(status) {
  case ‘ A’ :
  dd = 9;
  break; //OK:正确,用break终止
  case ‘ B’:
  dd++;
  /* FALL THROUGH */ //OK:有意不使用break文,插入了规定的注释
  case ‘ C’:
  dd++; //ERROR:没有插入注释,明显是缺少break的Bug
  default:
  dd = -1;
  break; //OK:default里也没有忘记break
  }
  ② 用异常处理来返回错误   If (value == null) {
  throw new IllegalArgumentException(); //OK:不使用return,用抛出异常的方式返回错误
  }
  ③ 在finally块中,对返回值有影响的情况   Int value = 1;
  Try{
  return value;
  } finally{
  value = 4;
  return value; //ERROR:因为finally块是肯定会被执行到的,所以在try里本来想
  //返回1,而最终结果永远是4
  }
  //OK:如果在这里写return的话,出口就只有一个了。
  补充说明 多态的使用

  sweitch或者if/else的多次反复,往往造成程序难懂,可维护性下降。建议声明Interface或者abstract class,通过多态来解决。


JAVA—避免克隆代码

conanpaul收录,使用标签:Java,时间:2007-12-27 13:11:04 | 相关网摘我也收藏

说明:所谓克隆代码,是指代码中类似或者干脆一样的部分。克隆代码往往是通过粘贴操作有意地重写同样的处理而产生的。

  一般情况下,克隆代码是可维护性下降的一个重要原因。比如说,如果对同一处理进行了拷贝,那么当原来的代码发生问题,所有拷贝形成的部分都必须跟着进行修改。可是,如果不是原来那个人的话,其他人来做修改,难免遗漏应该修改的部分,从而造成代码的质量下降。

  

  完全避免克隆代码确实比较困难,但是,作为程序员,完全应当时刻想着把类似处理抽取出来(参照下面的例子)。

  另外还应当充分利用后面补充说明中推荐的工具,对代码进行检查,看看有没有克隆代码,经常有意识地进行改善。

  例 有克隆代码存在   Void someMethod ( int arg1, int arg2) {
  …
  if (arg2 != 0) { //类似处理的候补
  p = arg1 / arg2;
  }else {
  p = 0;
  }
  …
  if (arg2 != 0) { //类似处理的候补
  q = arg1 / arg2;
  }else {
  q = 0;
  }
  …
  }
  例 对存在克隆代码的程序进行改善  Int checkSetVal ( int val1, int val2) { //OK: 抽出来的克隆部分

   补充说明: 用来检查克隆代码的工具

  用来检查克隆代码的工具主要有CPD,CCFider等。


高性能分页标签extremeTable的Limit设计架构思想剖析

conanpaul收录,使用标签:Java,时间:2007-12-27 13:09:25 | 相关网摘我也收藏

这是一个目前最好的一个开源分页标签的实现---extremeTable标签。今天谈谈它的Limit的设计架构思想。

这个设计很通用,经过作者的多次重构,现在extremeTable的架构非常漂亮。这个标签现在缺点是有些参数对mvc控制器屏蔽了,应提供一致的对外接口。不过整体上设计还是很精致的,面向对象来处理 html元素,与spring非常的默契,非常便于开发和测试。

类图关系


1, 工厂LimitFactory
TableLimitFactory,AbstractLimitFactory,LimitFactory

TableLimitFactory是最终实现的工厂,它extends了AbstractLimitFactory抽象类,AbstractLimitFactory 类implements了LimitFactory接口。

TableLimitFactory主要是用来实例化,通过构造函数传入参数。同时创建Registry来完成jsp页面参数传入Registry。当然还有一个功能就是从web.xml的配置文件读取一些全局参数。首先读取配置文件参数,然后根据参数创建LimitRegistry对象。

this.registry = new LimitRegistry(context, tableId, prefixWithTableId, state, stateAttr);

AbstractLimitFactory主要是用来获取jsp页面上设置的参数,比如分页的信息(第几页,起始行,结束行,每页显示行数,查询条件,排序条件等),当然他是通过工具类Registry来实现。

2, Limit
TableLimit,Limit。其主要作用是一个参数参数器,就是把Registry对象的参数传入TableLimit,考虑到分层吧,TableLimit是该标签和action通信的桥梁。就像我们的j2ee项目vo是dao和struts等view等数据传输工具。

3, Preferences
TableProperties,Properties 主要是来实现从web.xml配置的文件中读取配置的一些全局参数。

InputStream input = this.getClass().getResourceAsStream(preferencesLocation);

if (input != null) {

properties.load(input);

}

其中preferencesLocation是路径,在TableLimitFactory初始化时候,通过工具类TableModelUtils.getPreferencesLocation(context)获取。

这个设计也是大多数需要配置文件的系统常用的方法。

4, Registry
LimitRegistry,AbstractRegistry,Registry

这个体系结构和上面的工厂模式一样,就是LimitRegistry主要是用来实例化,通过构造函数传入参数。AbstractRegistry是实际实现类,获取jsp表单提交的参数,并提供getter方法供Limit来使用。Registry是一个接口。

所以这设计模式,我们可以来学习,

经典表述:类—抽象类—接口

l 类:初始化,定义构造函数,传入参数。

l 抽象类:定义业务方法在此。

l 接口:定义接口方法,这个不用多说。


数据库关系表解决方案

conanpaul收录,使用标签:数据库,时间:2007-12-27 13:08:37 | 相关网摘我也收藏

数据库关系的表之间定义一个连接,而所定义连接的方式由表之间存在的关系类型决定,有三种情况:

·一对一关系

在这种关系中其中一个表被看作是“主”表,在该关系中占主导地位;另一个表被认为是“下属”,在该关系中出于从属地位。通常我们的做法就是在主表中选取一个主键的副本,把它插入从属表中,然后标记为新的外键。

Managers

……………………

Employee ID PK

Email Address

Cellular Phone Number

Departments

……………………

Department ID PK

DeptName

Maximum Staff Level

Managers

……………………

Employee ID PK

Email Address

Cellular Phone Number

Departments

……………………

Department ID PK

Employee ID FK

DeptName

Maximum Staff Level



·一对多关系

从该关系的“一”端表总选取一个主键副本,将其插入“多”端表中(这个字段将成为一个外键)

Buildings

………………

Building Number PK

Number of Floors

Elevator Access

Site Parking Available

Rooms

………………

Room Number PK

Building Number FK

Type of Room

Square Footage

Phone Available



·多对多关系

多对多关系是使用一个链接表创建的,通过从该关系里的每个表中选取主键的一个副本,并使用这些主键来创建新的连接表。接着给该表取一个有意义的名字使它可以表示这两个表之间的关系。

Students

………………………

Student ID PK

StudFirst Name

StudLast Name

StudCity

StudState

StudZipcode

Classes

…………………

Class ID PK

Class Name

Class Description

Instructor ID

Category

Student Classes

…………………

Student ID CPK/FK

Class ID CPK/FK



Groovy 1.5,你将去向何方?

conanpaul收录,使用标签:Java,时间:2007-12-27 13:08:07 | 相关网摘我也收藏

从当初的1.1,Groovy已经发布到了1.5的版本了。而Groovy1.5具有哪些新特性呢?

整合Java 5:支持Java中注释、enums、static imports、泛化等Java 5特性;

语法扩充:Elvis操作符、for 循环、无括号的命名参数;

IDE改进:主要的IDE,特别是IntelliJ IDEA,已经可以友好的支持Groovy及Grails了;

Groovy文档生成工具:像早期的Javadoc生成一样,可以为Groovy脚本生成说明文档的工具得到了很好的改进;

更具交互性的命令Swing控制台:控制台改进了不少;

性能提高:解决了很多Bug,优化了性能,据称性能有大约45%的提高;

提高动态能力:借鉴了Grails框架的Expando-meta类;

SwingBuilder改进:简化的组件构建机制,可以与JIDE及SwingX整合。

当本年度Groovy刚发布1.0的时候,在不到一年的时间里,很多人都想不到Groovy1.5的版本会发展这么快。不仅仅是在Groovy语言的横向,更加重要的是它有纵向的发展或是深度上的发展。

发展这么好,大家不禁要问一下,Groovy1.5将去向何方?

IDE工具的改进,应该像Ruby一样的融入NetBeans中去?Eclipse、Emacs的支持?

稳定性及性能优化,性能比得上Scala?

语法上的扩展?支持多值返回,例如

Def blah(){

Return 1,2

}

a,b=blah()

Groovy的网站应该好好规划与美化一下?至少查找文档时应该更加方面?如果Groovy只是像garage/wiki/geek这样的一点地方,那企业级的应用别人敢吗?

如果读者正在使用Groovy,那么您认为Groovy下一版本将在哪些方面有更加良好的改进呢?


Web2.0:与合理架构相关的六大关键问题

conanpaul收录,使用标签:Web开发,时间:2007-12-27 11:11:08 | 相关网摘我也收藏

Web2.0仍处于基础建设阶段,合理的系统架构与6大关键问题息息相关。

搜索、照片、音乐、视频、混搭式应用(Mash-Ups)、维基(Wiki)、网络日志(Blog)、社区,还有那些来自各地展示天堂般美景的高清晰图片——它们一起构成了Web2.0 热潮的丰富内容。但是对于正在成长的新一代Web服务来说,最重要的也许不是内容,而是通过浏览器窗口,让用户获得更有趣的体验。

要在这个Web世界里占有一席之地,你需要把握创建交互式网站的诀窍。而此类成功网站背后的诀窍和业务模式又是什么呢?商界和技术领域的领袖们,包括亚马逊公司(Amazon,下称亚马逊)的杰夫。贝佐斯(Jeff Bezos)、微软公司(Microsoft,下称微软)的雷。奥齐(Ray Ozzie)和黛博拉。克拉帕蒂(Debra Chrapaty)、谷歌公司(Google,下称谷歌)的埃里克。施密特(Eric Schmidt)、Salesforce.com公司的马克。贝尼奥夫(Marc Benioff)和Skype公司的尼可拉斯。詹斯特罗姆(Niklas Zennstrom)最近在旧金山(San Francisco)共同探讨了Web新应用的未来。我们知道:Web2.0 需要全新的软件和服务器架构,以及不同以往的IT基础设施。下文将从6个方面分别讨论相关的核心话题:规模、内容管理、安全、开发技术、用户体验与社区。

规模效应

极少有人在网站上线不久就期待迎来百万或千万级别的访问量。但事情真的就这样发生了。根据互联网流量测量机构comScore Networks的数据显示,YouTube网站从一年前的十几万访问量上升到2006年9月的2,000多万次美国独立访问量(Unique Visitor)。

对多数网站来说,网络和IT架构其实并不如你想的那么重要。没错,没有可扩展和可用的IT资源,就谈不上业务—这是Web2.0公司共同的起步资本,而不是将他们加以区分的个性化资源。尽管谷歌视频(Google Video)背后有成熟和强劲的技术架构,YouTube公司却超越了它,赢得了大量终端用户的支持,最后迫使谷歌购并了这个曾经的竞争对手。当然,基础架构只是赌注之一。要稳操胜券还需拥有更多筹码:创意、社区活力和独特的魅力等。

实际上,Web2.0 初创公司在开始阶段并不一定需要拥有自己的数据中心。在线零售商亚马逊就把自己的基础架构服务分割成小块,销售给一些需要强劲运算能力支持的初创公司。亚马逊网络服务公司(Amazon Web Services)负责产品管理和研发人员关系的副总裁亚当。塞利普斯凯(Adam Selipsky)认为,尽管架构里的元素——比如服务器、操作系统、数据库软件、网络连接等都非常关键,但是对于用户体验而言却没有增加任何新内容。塞利普斯凯指出,这些基础架构的组成部分可能会非常耗资源:公司需要投入70%的资源在搭建和维护自己的IT基础架构上。

与第一次Web扩张热潮不同,那时候大家都把购买上百万美元的服务器和迅速扩张奉为无上真理,而现在的2.0初创公司却不会纠缠于这些与运算能力有关的底层部件。在线图片共享网站SmugMug的首席执行官(CEO)兼共同创始人唐。麦卡吉尔(Don MacAskill)表示:“我们当然不会认为底层数据中心是我们业务或价值定位的核心。”SmugMug采用亚马逊的S3存储服务,该服务通过存储管理软件连接一个庞大的存储设备阵列,这样可以提升SmugMug内部的IT架构。

“这非常简单,因为亚马逊为我们完成在多个数据中心和存储介质之间复制文件的复杂工作,”SmugMug总裁兼共同创始人克里斯。麦卡吉尔(Chris MacAskill)这样认为。

SmugMug只有18位员工,却处理着18万付费用户和1.15亿张图片。“我们认为自己的价值定位是用户体验,” 唐。麦卡吉尔总结道,“这包括我们的Web用户界面和客户服务。”

唐。麦卡吉尔认为,扩展客户服务也许比扩展服务器更困难。SmugMug在硅谷一个数据中心刚好与YouTube比邻,而两家公司都面临着同样的基础架构挑战,如服务器、冗余与自愈型文件系统,他评论道:“如果我们不选择现成的商业化产品,而打算自己发明轮子,那实在是有点犯傻。”

很多基础架构组成单元都有现成商品。根据在线视频编缉网站Eyespot的共同创始人兼首席技术官(CTO)大卫。杜达斯(David Dudas)介绍,这些现成商品中包括:价格便宜,但是功能强劲的英特尔(Intel)芯片服务器;由多个供应商提供的,并且价格比几年前大大降低的带宽资源;廉价而且更节省空间的磁盘存储设备;以及开源软件,其中包括免费企业级操作系统(Fedora Linux)、关系型数据库(MySQL)、网络服务器(Apache)和应用框架(Ajax)。

杜达斯分析说,Eyespot的优势在于它能把这些零散的产品组合成一个可扩展规模的在线视频编缉平台。“如果你不知道怎样把它们正确地组合在一起,那些廉价的硬件对你来说根本就没用,当达到5,000万用户门槛时,差劲的架构会使系统发生故障或宕机。”

这的确是一个挑战。其中的一个要点是,把这些IT部件组合在一起,如服务器、数据库、路由器,但是它们都能独立于彼此单独扩展。另一个要点是,你必须认识到不同的媒体服务功能,如流媒体、图片服务、网页服务、数据库等所需要的资源是不同的。

租用数据中心的方式也许只适用于当下。最近互联网排名增长第三位的Metacafe公司共同创始人兼CEO阿里克。泽涅克(Arik Czerniak)认为,到一定时候,“我们也需要建立自己的系统。”comScore Networks数据显示,去年9月Metacafe在全球有1,660万独立用户访问数和4.92亿页读数。泽涅克认为,“到这种规模,要确保网站顺畅地运行是一项巨大的技术挑战。”

共同创始人兼首席产品官(CPO)伊亚。赫索格(Eyal Hertzog)透露,Metacafe设计自己的软件架构,包括服务、模板库(Template Libraries)、统计评估、版本控制和架构监控等。同时,在线视频网站还依赖网络内容推送公司Limelight Networks公司的服务来缓存文件以提供更高效的访问,并由主机服务提供商RackSpace公司提供主机托管。Metacafe使用Lamp (代表Linux、 Apache、MySQL、 PHP等软件)组合软件包。

对Metacafe来说,有效的调整意味着原来需要几千台服务器现在则只需要几百台。 泽涅克指出:“如果我们现在还在使用起步时的老一套技术的话,现在我们可能就需要一万台服务器了。”

——文/Thomas Claburn

内容管理

如果你要建一个网站,它包含照片、视频Blog和其他的用户生成内容(User-Generated Material),你知道该如何应对吗?

对主要目标是产生内容、封装内容、然后推送给几百万用户的网站来说,挑战是找到管理这些文件的最佳方式。Web2.0 公司有可能需要开发自己的产品,因为Web2.0的交互性特点,如标签、评分、上传,在商业化的内容管理系统中支持得并不好。网页设计公司Adaptive Path公司的用户体验策略总裁兼合伙人杰西。詹姆斯。加勒特(Jesse James Garrett)认为:“可扩展性是用户生成内容中的最大问题。”

加勒特表示,目前已有的内容管理架构不适合Web2.0公司,因为“Web2.0的内容管理定义与软件开发商在开发内容管理系统时想的完全两样。”大多数企业使用的内容管理系统只是为处理文件、电子表单、数据库和其他常规型文件而设计的,它们并没有考虑到照片、视频或在线社区的需求。

照片共享网站SmugMug的CEO唐。麦卡吉尔表示,他们的网站现在每天新增30万到50万张图片。他认为SmugMug的内容管理系统也不是特别复杂,只是“一点‘胶水’,还不是大量的代码。”他最关心的是从亚马逊S3存储服务那里获得的大容量、万无一失的(Bulletproof)存储数据,而与这个存储服务一起提供的还有用户友好的管理界面以及亚马逊的技术支持。这些“胶水”代码用来确保文件写操作失败时不会导致有数据丢失的事情发生。

使Web2.0公司的内容管理系统面临更大挑战的原因是他们还需要处理用户生成数据;这些公司做的每件事情都围绕着数据和数据管理。

克里斯。麦卡吉尔解释说,SmugMug在保存收到的文件之前,会做大量的工作,如确保图片的色彩空间无误,并提取可用作标题和关键字标签的信息,生成各种大小的复件以加快显示速度。在这之后,亚马逊会把这些文件复制到多个数据中心和存储服务器上。

对Metacafe来说,挑战在于不但要处理大量的视频,还包括用户和研发人员产生的数据。这意味着需要选择合适的内容推送网络、追踪全球各地的缓存时间、做各种研发工作以记录网页下载和数据库的压力。CEO泽涅克认为:“我们为用户做数据挖掘,返回收集的信息,这中间所牵涉的数据量非常之大,在这点上Metacafe做的的确与众不同。”

该公司在生产和开发环境等各方面都用到了开源软件。首席产品官赫索格证实,公司用Wiki系统管理开发周期,同时用作主要的知识管理工具。“我们把每个点子和想法都写到Wiki里去,再由公司人员评估和编辑。”他说,“一旦想法获得认可,我们继而为它订立标准、展开设计和编写测试计划。”

无论从哪方面来说,内容管理对Web2.0 公司来说都是困难的。但好消息是人们已在摸索中学习。加勒特指出,在20世纪90年代末期,许多网站碰了壁,因为他们缺乏可扩展性。他说:“过去5年里的行业经验让我们获益良多,我们知道怎么从一开始就考虑灵活性,设计未来可以服务于庞大受众的系统架构。”

——文/Thomas Claburn

安全难题

Web2.0 有一个显而易见的特点就是:它并不比第一波网络热潮来得更安全。

Web2.0公司纷纷采用互动技术,他们会发现在更好地吸引和留住用户的同时,也把更大的风险带入了防火墙之内。使用JavaScript的 Ajax 开发者可以创建在访问者浏览器窗口里自动执行的程序。多种脚本语言都可在浏览器端执行并向服务器发出恶意代码,而JavaScript不过是其中最著名的一种。其他脚本语言还包括微软的Visual Basic以及微软开发的与JavaScript相对应的ECMAScript.另外还包括奥多比系统公司(Adobe)的ActionScript(另一种ECMAScript风格的脚本),它可以在浏览器窗口通用的Flash播放器里运行,而98%~99%的互联网用户都安装了这种播放器。

Ajax的一个组成部分是异步JavaScript,它是谷歌地图(Google Maps)应用的幕后功臣。谷歌地图可追踪用户光标在地图网格上的位置并把信息发回服务器。实际上,JavaScript程序是在告诉服务器,“用户正指向北方。请返回更多他当前位置往北的数据。”

这种互动功能一直是个潜在威胁,因为尽管可以减轻危害,但却不可能完全根除它。对缺乏经验而意识不到自己的程序会出问题的程序员来说,经过培训也只能做到缩减危害。因为Ajax应用程序可以在服务器端和浏览器里运行许多脚本代码,令黑客有可乘之机,攻击与应用程序通信的数据库。

即使经验丰富的程序员也可能中招。一年前,社交网络网站MySpace上存放着一位叫Samy的新用户的个人主页。在他提交的信息里有一个隐藏的JavaScript蠕虫,它可以感染任何访问Samy空间的MySpace用户的浏览器,并把这段代码复制到该访问者的个人主页里。某种程度上,这纯粹是场玩笑:Samy的目标是把“Samy是我的大英雄”这段文字复制到尽可能多的MySpace用户的“英雄”分类里。

感染开始迅速传播。在20小时内,这个JavaScript蠕虫已经感染了上百万MySpace用户。随着感染的增加,这个蠕虫引起的人为流量使MySpace服务器陷于崩溃。MySpace谢绝就此事进行评论,但据Blog媒体Slashdot报道,该公司不得不临时关闭网站以清除感染。

这是为什么Web2.0 开发者必须从一开始就考虑安全问题的例证之一。Web2.0 技术的一个大危险在于,用户从表单或数据字段里提交回复时,开发者可能需要的是某个特定的输入,如名字或邮编,但很少有网站会仔细校验用户的输入。安全软件公司SPI Dynamics公司的研发经理布赖恩。沙利文(Bryan Sullivan)评论说,“在客户端,你没法控制电脑内真正输入的内容。主导权完全在用户手里。”

美国加州大学伯克利分校(University of California, Berkeley)计算机科学系的助教大卫。瓦格纳(David Wagner)警告说,可能有1,001种方式在HTML页面中隐藏JavaScript代码,比如在Wiki、MySpace、Yahoo Mail这类型的网站里。“但即使你拦截了其中1,000种,你还是可能会倒霉,”瓦格纳认为,“坏人更有优势。”2005年春天,Yahoo的网页邮件(Web Mail)服务器就被一个用户上传的Yamanner蠕虫入侵了。

如果一个懂行的用户在地址栏里输入一个SQL语句,这个语句就可以在服务器上可用的数据库里得以执行。这种花招就叫SQL注入攻击。如果一个 MySpace用户在自己的MySpace服务器上的网页里加入JavaScript蠕虫,蠕虫就可以在访问者的浏览器窗口里执行。MySpace已经采取措施阻止会自我克隆的Samy蠕虫,但恶意程序的作者们下次肯定会尝试其他的方法。

不像以前的病毒,Samy蠕虫与操作系统无关。作为一种与网页相关的技术,Ajax不依赖于平台,而这也催生了一个跨平台蠕虫。无论苹果公司(Apple)的Mac电脑、Linux工作站还是Windows PC都可以触发它。它默默地在后台窃取用户的信息,不会出现任何警告信息提示用户系统被感染了,而且还会继续感染他人。沙利文警告说:“想象一下,如果银行网站上有Ajax蠕虫,那会是怎样的情景。”

——文/Charles Babcock

轻量级开发

快速变更是Web2.0的一个标志性特点。网站可以非常迅速地添加和去除功能,有时候简直就是一天一个样。而一个固定的尺码肯定不适合所有的人。Web2.0网站必须具有高度的可适应性,以适应用户常变的兴趣,对研发人员来说,轻量级的开发工具能帮上大忙。

两个受欢迎的选择是Ruby和Flash,与Ajax类似。Ajax是个轻量级的、基于浏览器的JavaScript和XML组合,已经在谷歌地图和其他许多互动网站里得到应用。Ruby和Flash这两种网站工具并不像Ajax技术那么新,它们已经有成熟的工具集支持。

Backchannelmedia公司是一家传媒咨询公司,它就用 Ruby on Rails工具开发自己的网站,这是一套使用轻量级编程语言Ruby开发的专用网站平台。该网站为客户提供庞大的电视广告收视率数据库的快速访问。广告商可以根据电视观众打到800免费电话的下单时间,结合当时不同地域投放电视广告的内容,来获知广告效果。

Backchannelmedia的首席信息官(CIO)玛德琳。诺兰德(Madeleine Noland)表示,公司的25名员工里,有熟悉Java、Visual Studio .Net、Ruby和PHP技术的,一年多前他们决定重新设计客户交互服务,即电视直销(DRTV)研究时,最后选择了Ruby on Rails工具。 技术主管杰森。托伊(Jason Toy)证实这个服务只花了两个月就完成了,而如果选择Java则可能要花上9个月的时间。Ruby on Rails工具的代码量只有Java的十分之一。这个服务每天要添加250万条广告数据到数据库中,并根据用户请求提供上百万次不同的网页查询结果。

此外,耐克网上商店(NikeStore)是用Adobe的Flash技术搭建的又一个交互式网站,Flash是可在浏览器窗口运行 ActionScript脚本的多媒体引擎(该技术由Adobe从Macromedia公司购并),提供最新的购物互动体验。例如,访问者的光标移向标题的“男装”或“童装”位置,就会显现相关产品的下拉菜单。而点击选中的货品,则会弹出一个新窗口,可展示不同颜色的同一产品和其他相关产品。改变就在瞬间发生,所在的页面无需重新加载。

——文/Charles Babcock

用户体验

Web2.0 的一个最大挑战是如何定义和提高用户体验。谷歌用一个简洁、可快速加载的网页,展示了在搜索上可以做到多么与众不同。然而其他网页臃肿、速度缓慢的网站 ——比如MySpace—也仍然大获成功。成功的秘诀关键在于让用户感到惊喜和愉悦,在他们需要的功能外,还提供连他们自己都未意识到会需要的功能。

极少有公司花在提高线上用户体验的时间比微软的MSN网站更多,它从1995年开始提供在线内容业务,至今仍然是互联网上最受欢迎的网站之一。但下载音乐的人们会选择iTunes,而不会有选择微软的冲动,也没有类似iPod的产品制造者来和微软签订合作协议。人们会说去“Google”一下信息,但不会说“MSN”一下信息。另外也是谷歌地图和谷歌地球(Google Earth),而不是微软的虚拟地球(Virtual Earth)在地图定位和寻址上获得更多认可。显然微软网站还不太入引领潮流的年轻一代的法眼。

认识到这些问题,微软正计划一场Web革新。微软公司计划在这个财政年度花费5亿美元在互联网搜索引擎和其他可与谷歌和雅虎竞争的软件研发上。这个投资计划里还包括一个新的数据中心,以支撑将来的家用型和商业软件。此外的产品包括新的Zune音乐播放器和音乐销售网站。微软的在线地图软件—搜索功能广受好评的一个应用—也推出了较大的升级,把地图转换成令人赏心悦目的3D图像。

如果这个产品能受大众欢迎,新网站可帮助微软与谷歌地球一争高下,谷歌地球允许用户全球自由缩放,一下子就从大峡谷飞越到金字塔等标志性建筑,以俯瞰的视角找出离自己最近的星巴克咖啡店。

微软会用什么技术来提高虚拟地球的用户体验呢?我们可以从2006年早些时候的两项购并里一窥端倪。微软购并了Vexcel公司,该公司的 Photogrammetry技术可以通过航拍照片创建出城市和乡村的3D图像。微软还购并了Massive公司,这家软件公司的技术允许赞助商把广告插入视频游戏。像谷歌和雅虎的地图软件一样,微软已经把虚拟地图的应用编程接口授权给百思买公司(Best Buy)、Expedia公司等。这样可以允许合作伙伴为这些应用注入自己的创新,毫无疑问这是十足的Web2.0特色。

谷歌去年年底发布了新版本的谷歌地球,也加入了一些新花样。包括来自发现网络公司(Discovery Networks)和国家地理杂志(《National Geographic》)对一些世界著名景点的描述、国家公园服务的扎营地点和旅游线路的信息,还提供把自己飞越谷歌地球上空时的影像录制成高清电视(HDTV)的功能。这些功能呈现的前所未见景象,都可能会令用户眼前一亮。在这场对峙中,快速、细节和趣味性最重要。

——文/Aaron Ricadela

质疑社区

Web2.0里最引人瞩目的一方面就是社区概念。从Web的初始阶段开始,大家都认可的一个观念就是,成功的网站需要锁定一批稳定的社区用户,他们有共同的兴趣、乐于讨论和争辩、积极分享自己的音乐、照片、代码和观点。就在2006年10月底,谷歌购并了硅谷初创公司JotSpot公司,该公司用Wiki软件让用户分享电子表单、日历和相册。

但在线社区也是一个令人困惑的概念。他们很少像这个词的表面含义那样意味着“我们都在这里”。奥莱利媒体公司(O′Reilly Media)CEO蒂姆。奥莱利(Tim O′Reilly)在Web2.0 大会上直言不讳地说:“我讨厌‘社区’这个词,人们常用这个词来逃避认真思考什么是Web最核心的概念。”奥莱利媒体公司和《InformationWeek》母公司CMP集团共同召开了Web2.0 大会。

在奥莱利的观点里,一些最成功的社区型网站实际上与人们印象中的和谐型互联网的分享想法可能完全背道而驰。

比如在亚马逊鼓励下,其用户贡献了百万条书评、乐评和产品评论等。“他们不断压榨用户。”奥莱利指出。亚马逊还是一个社区网站吗?

在线社区通常为用户提供交谈、分享和彼此联系的功能——但是最后对网站的业务模式却没有什么帮助。奥莱利认为这就是问题的关键。

以Flickr网站为例,这个雅虎旗下的照片共享网站非常受欢迎。分享照片是很不错,但Flickr网站充分利用了照片的单向链接,所以我可以看到你的照片,而你却不知道我在浏览。这里面几乎没有交流可言。另一个非常受欢迎的网站是由用户驱动的Craigslist,但只是以本人的兴趣为中心,你回应我的广告,而我受惠。

MySpace把社区的概念转化成了真金白银,但绝大多数模仿它的网站都失败了。甚至维基百科(Wikipedia)乌托邦式的理想是收集、编辑与传播全球的知识,现在其实也是被一群核心作者主导着。

“真正的问题在于,用户可以为你的事业做出什么贡献?”奥莱利说道,“社区只不过是Web2.0大局里的一小部分。”


安全焦点 保护终端Web安全

conanpaul收录,使用标签:安全,时间:2007-12-26 17:14:46 | 相关网摘我也收藏

一直以来,对终端安全的保护更多的是采取加密措施,而很少加载网络层面的安全防御。但今年出现的几起重大的由僵尸网络造成的网络安全事件后,终端的基于Web的安全防护显得空前重要。这其中既包括基于Web的互联网访问安全,也包括访问Web的终端的信息安全。

  稍微留心都不难发现,无论是传统的老三样产品—防火墙、防病毒、入侵检测,还是身份认证、反垃圾邮件、VPN产品,甚至还有一些集合了漏洞扫描、风险评估、审计、防御及数据安全的系统解决方案,都纷纷亮出保护终端Web安全的招牌。

  很显然,即便是传统网关级的产品,如今也不得不考虑网络内部每一个终端的Web安全。这是因为,对于外部互联网而言,终端已经和网关一样不断发生着与互联网信息交互的行为,譬如终端个人信息、网游账户及商务应用中的网银账户等。这就使得终端面临着的几乎是赤裸裸的外部网络威胁。网关除了需要在入口处对外部威胁进行防御,更需要对内部终端实现Web安全防御和信息保护。

  木马成为2007年病毒领域的“钉子户”,以此形成的网络钓鱼和网络间谍等恶意攻击成为反病毒任务的重中之重。而对于系统类安全解决方案和终端安全类产品而言,由于其对终端的保护更加专注,因此其上基于Web的防护更容易实现。所有这些无不昭示这样的现状:基于Web的互联网安全时代到来了,而且它涉及每一个终端。

  值得一提的是,2007年中国安全市场有三种理念非常盛行:SRM(安全风险管理)、DLP(数据防泄露)及Web过滤。Web过滤技术已在前两年有所提及,但是2007年随着互联网游戏和商务应用的风靡,Web访问和应用成为最强势的风险源头。因此,如反垃圾邮件、反病毒、入侵检测、防火墙等所有涉及网络防御的产品都将Web过滤视为一项关键技术,只是网页监测和拦截性能上还有待不断提升。

  另外,安全风险管理是一种整体的安全解决方案,它的范畴从漏洞扫描、安全审计,到病毒防范、威胁防御,一直到数据防泄露。其中,数据防泄露更是填补了网络安全技术的空白,使得安全技术在抵御网络及终端威胁的同时,仍能关注并保护内部数据信息,从而实现核心的信息安全,这也正是2007年终端安全受到关注的最重要原因。

  总体来看,今年信息安全技术与产品的趋势呈现出泛边界状态,即终端防护策略正在向传统的网关靠近,以Web防御和数据安全为核心的终端安全机制正在改变着安全产业的发展。

  安全网关

  凹凸科技

  邮件安全网关SifoML L5000

  产品特点

  邮件安全,邮件审计,邮件生命周期管理

  参考价格:51万元

  编辑点评

  SifoML支持反垃圾邮件、反病毒邮件、反中继转信、反DoS攻击、反邮件入侵、反间谍程序、反邮件钓鱼等7个层面23级邮件安全过滤功能。采用SifoML邮件网关解决方案后,垃圾及病毒邮件正确拦截率达99.8%左右,有效杜绝了垃圾和病毒邮件在企业内的扩散。同时,SifoML提供强大的邮件备份、统计、审计和邮件报表等邮件管理功能,切实满足企业用户在邮件管理方面的需求。

  SifoML在系统管理员和客户端两个层面考虑系统解决方案的易用性和维护的人性化,大大降低系统管理、维护的难度与成本。系统管理层面通过人性化的管理界面设计以及邮件网关和邮件报告模块独立设计、分级管理员等设计,大大降低系统管理难度和配置工作量。在客户端管理层面,可以根据权限自行管理个人邮件,进行自定义个人黑、白名单等客户端邮件处理,减少系统总体维护难度。


管理企业黑匣子 ERP中的安全使命

conanpaul收录,使用标签:信息化,时间:2007-12-26 17:14:24 | 相关网摘我也收藏

 ERP系统就像企业的“黑匣子”,内部涵盖了应用企业最关键和最敏感的信息资源。为此,如何在开展应用的基础上确保安全,一直是ERP部署中的最大挑战。

  安全刻不容缓

  ERP的特点是大而全,使用者可以从中寻找出一个企业的组织架构、管理理念、客户资源、人力资源组成、企业产能、销售渠道、合作伙伴、竞争对手等方方面面的信息。正因为如此,建立信息安全管理机制、保护ERP的安全已经迫在眉睫。有专家建议,在ERP应用过程中,信息安全应成为业界关注的焦点和亟待解决的问题。

  然而目前很多企业在探讨、推广ERP项目建设的时候,没有建立事故灾难的预见与应对机制,经常难于有效考虑信息安全的要求,往往忽略了ERP系统信息安全的建设问题。无论是ERP系统的产品供应商、实施服务商、还是第三方咨询机构,也都对ERP系统功能倾下过多关注,而对涉及ERP信息安全问题大都轻描淡写。

  同时由于ERP系统的实施过程相对较为复杂,厂商技术力量有限,在实施过程中也难于建立有效的ERP系统信息安全管理机制,使ERP处于整个企业信息安全管理最为薄弱的的环节。而完善可靠的信息安全管理是影响ERP系统成功实施的中心环节,如果不能对ERP系统的信息安全问题施以有效的管控,不但可能增加系统的实施成本,还可能很大程度地限制系统功能的充分应用,最终使ERP建设事倍功半甚至功亏一匮,从而导致我国ERP项目建设成功率不到35%。

  ERP的安全总结

  可以说,随着ERP系统在国内企业的普遍应用,ERP的安全问题日益暴露出来,而且日渐严重,总结其产生的原因,主要如下:第一,物理环境,主要为水、火、供电等灾难以及人员的使用、决策、控制等水平低下;第二,系统硬件,主要为监测和控制设备、计算机系统、网络设备、连接线等缺陷;第三,系统软件,主要为计算机操作系统、数据库管理系统、服务器等缺陷;第四,应用软件,主要为ERP系统自身的设计缺陷、技术薄弱等所致;第五,外来侵入,主要为病毒、黑客等篡改和破坏;第六,内部滥用,主要为操作失误、人为破坏、内部作案等。

  在信息化应用迅速普及的今天,尤其是基于Internet能多方内外远程访问的ERP系统时刻遭遇着病毒、黑客甚至竞争对手获取、篡改和破坏的风险,稍有不慎,就会给企业带来巨大风险损失,因此如何兼顾ERP系统的安全与高效,增强企业识别、防止、减少和控制组织信息安全风险的管控能力、建立安全可靠、行之有效的安全管理系统与机制正成为企业信息化建设的头等大事,也是众多企业面临的一大难题。

  四大重点

  ERP信息系统安全应当包括实体安全、信息安全、运行安全和人身安全四大内容。其中,实体安全是指有关保护计算机设备、基础设施(含网络)以及其他设施免遭自然和人为破坏的措施、过程;信息安全是指防止信息被故意的或偶然的非法授权泄漏、更改、破坏或使信息被非法系统辨识、控制的措施、过程;运行安全是指系统风险管理、审计跟踪、备份与恢复、应急四个方面的措施、内容;人身安全主要是指系统使用、管理人员的安全意识、法律意识、安全技能等表现。

  建立ERP系统安全管理机制为的是在企业ERP信息系统工程项目建设过程中,保证用户企业信息系统在可用性、保密性、完整性与ERP信息系统工程的可维护性技术环节上没有冲突;在控制投资的前提下,确保信息系统安全设计上没有漏洞;督促企业的ERP信息系统管理人员、应用人员在安全管理制度和安全规范下严格执行安全操作和管理,时刻建立安全意识;监督承建单位按照技术标准和建设方案实施,检查承建单位是否存在设计过程中的非安全隐患行为或现象等。


项目管理的信息化

conanpaul收录,使用标签:信息化,时间:2007-12-26 17:10:54 | 相关网摘我也收藏

信息化建设的项目化有越来越明显的趋势,在需要多方资源配合才能达成目标时,按照项目管理的思路来组织队伍、安排计划、展开行动的确是最有效的投资保证手段。无论是CIO自己担纲信息化项目的领导还是配合供应商展开项目,都需要掌握项目管理的知识和技能,信息化的项目自然也会存在一定的个性,需要通过实践来体会。
  其他方面的管理知识更多是帮助CIO形成正确的判断,而项目管理的知识和经验具有可操作的特点,更能帮助CIO在实际工作取得成绩,防范可能存在的风险。这里所要探讨的信息化项目管理中所需要运用的一般的管理知识,以及具有个性化特点的方面。

  CIO在信息化项目管理中同样需要关注项目的范围、目标、计划、风险、效益、沟通等方面,信息化项目的难点在于缺乏规范的东西明确目标,及计算项目的时间、资金方面的投资成本,理论界已经就ERP项目的实施进行这方面进行有益的探讨,提出了实施成熟度的概念,可以给CIO更多的帮助。

根据美国Hackett公司的一项调查发现,只有37%的信息化项目在计划时间内完成,只有42%的信息化项目在预算内完成。那么如何去定义信息化项目的成败?如何分析项目存在的风险?如何进行有效的项目管理?以及如何进行信息化项目风险的防范?本文将从以下四个方面予以探讨。

  信息化项目成败的判定标准

  信息化项目如何衡量其成功与否,一直是业内争论很久的话题。而且信息化本身是一个复杂的管理系统工程,以什么样的指标体系去衡量,如何衡量,确实是个大难题。

  本文不想就此展开过细的指标体系的讨论,仅从几个可控的关键要素来分析信息化项目的成败标准。从我们对项目的定义,可以知道信息化项目的关键要素只有三个,即时间、成本、质量。因此,我们不妨把这三个要素落实到信息化项目的成败标准讨论中来。即项目有没有在进度上超出计划?项目在成本上有没有超出预算?项目在质量上有没有满足需求?后者还可以进一步分解成更细的标准,如:系统的功能是否符合需求计划?系统的信息处理和运行方式是否合适?项目的整体运行状态是否适应企业的运营体系?等等。

  如果对以上问题的回答是否定的,则基本可以判定项目是失败的;如果对以上问题的回答是不确定的,则说明项目的建设是不彻底的,也是存在风险的;如果对以上问题的回答是肯定的,则基本可以判定项目是成功的。

  信息化项目的失败,具体分析可能会发现很多种原因,而信息化项目的成功,归纳起来,还是可以有一些标准来描述的,比如:用户对系统满意,系统运行达到设定目标等。

  信息化项目风险及失败原因分析

  由于信息化不仅仅是一个技术工程,更是一个管理工程和系统工程。因此,信息化项目的风险也主要来自于以下三个方面:

  一是技术风险。包括项目的技术结构、项目的规模以及项目实施方的技术能力和经验。项目的技术结构设计过于复杂,项目的信息处理结构化程度过低,都会直接影响项目实施方对技术的把握,从而影响项目的质量,以及用户对技术的理解和消化。项目的规模过于庞大,则会造成资源配置和进度控制的困难。此外,项目实施方的技术能力直接决定项目开发的水平。

  二是管理风险。管理风险主要来自于项目人员的组织有效性,项目时间、资源的计划确定性和可控性,以及项目质量监控的力度和立场。项目五类角色如何有效组织,并协同发挥积极因素是一个项目组织的课题,存在很多的不确定性。而项目进度的计划和项目预算是否具有确定性直接影响项目的可控程度。最后,项目监控的力度和立场在实际过程中会面临来自各方面的干扰和阻力。

  三是系统风险。系统在这里指的是由信息化相关要素组成的动态联系的有机体系。主要指的是用户自身的组织规范化、组织的观念转变、组织责任与控制体系的适应性等。一个信息化项目如果没有相适应的组织体系和观念体系做保障,很难想象项目不会面临风险。


开发框架:利用STRUTS实现国际化支持

conanpaul收录,使用标签:Java,时间:2007-12-26 17:10:29 | 相关网摘我也收藏

一.JSP页面部分

  1. 页面文字处理

  1.1概述

  由于STRUTS提供了很好的国际化的支持,因此JSP页面可以STRUTS的这一特性做到国际化。

  STRUTS允许将不同语言的文字写在多个资源文件中,每个资源对应一种语言,而在JSP页面上则通过STRUTS标签< bean:message>来显示文字,该标签可以根据浏览器的当前语言设置确定从对应的语种资源文件中取出字符串,显示在页面上。

  1.2资源文件

  实现国际化,首先需要准备好资源文件,需要支持的语言各对应一个。资源文件一定要用支持多国语言文字的文本编辑器(如WORD,一定不能用NOTEPAD、UE等)编写,其格式如下:

  # Project international

  index.title=XX信息系统

  index.copyright=XXX有限公司 版权所有

  其中以#开头的行是注释,其它的行都是KEY=VALUE的形式,定义了一个KEY对应当前语言下的文字。保存资源文件时,需要在文件类型选项中选择纯文本类型,编码选择其它>>UTF-8,注意资源文件的扩展名为.properties,文件名可以任意取。

  这样保存的资源文件还不能直接被STRUTS使用,JDK提供了一个工具native2ascii对编写的资源文件进行转换,该工具位于%JDK%/bin/目录下,一般在JDK正确安装后可以直接在命令行使用。使用native2ascii工具转换的资源的文件的命令行格式如下:

  native2ascii -encoding UTF-8 ApplicationResources.properties ApplicationResources_zh_CN.properties

  其中-encoding参数指明编写的资源文件的编码格式,这里必须与编辑时选择保存的编码格式一致,后面两个参数分别是需要转换的资源文件名和转换后保存的资源文件名。

  转换后的资源文件名都必须以一个特定的前辍开头,该前辍写在struts-config.xml配置中,后辍是对应语言的简称,如

  英文(美国) ApplicationResources _en_US.properties

  中文(简体)ApplicationResources _zh_CN.properties

  中文(繁体)ApplicationResources _tw.properties

  泰语 ApplicationResources _th.properties

  资源文件的存放目录可以是/WEB-INF/classes/下的任意目录,为了便于管理 ,建议在/WEB-INF/ classes/下建立目录resources,将所有的资源文件都放在该目录下。STRUTS通过配置文件struts-config.xml配置资源文件的所在位置,如:

  < message-resources parameter="resources.ApplicationResources" />


组建理想的 SOA 团队

conanpaul收录,使用标签:SOA,时间:2007-12-26 17:09:56 | 相关网摘我也收藏

 软件开发领域的主要发展趋势是从传统软件体系结构过渡到面向服务的体系结构 (SOA)。在传统软件体系结构中,将项目视为单个新应用程序的交付。在 SOA 中,将项目视为集成服务的交付——一些是新建的,一些是现有的。无论其规模和预算如何,几乎所有信息技术(Information Technology,IT)部门当前都在进行过渡到 SOA 的工作。您可能已经读过多篇关于 SOA 采用、成熟度模型和实现的文章了。本文将描述在组织采用 SOA 或过渡到更高的 SOA 成熟度水平的过程中,您的 IT 团队成员中所需的一组新角色及其各自的职责。

  在形成 SOA 团队时,最大的范式转换是从组合应用程序交付过渡到服务交付。传统软件开发人员通常构建应用程序中的一个模块,或典型的三层体系结构中的单个层的一部分。开发人员的一个例子就是在模型-视图-控制器(Model-View-Controller,MVC)体系结构中负责控制器或模型层的人员。在 SOA 环境中,这些开发人员现在负责服务实现。他们并不需要知道何时、如何或为什么调用服务以及谁调用服务。他们所关心的就是,服务进行什么工作以及需要符合什么样的服务水平协议(Service Level Agreement,SLA)。

  为了进行此范式转换,您需要形成完整的 SOA 团队,其中的每个角色的职责与传统软件开发团队中的相同角色略有不同。本文将说明 SOA 团队中以下角色的情况:

  架构师

  开发人员

  业务分析人员

  项目经理

  在典型的 IT 组织中还包括多个其他角色,包括基础设施支持、数据库支持、安全性等等。不过,了解了这些主要角色如何改变后,您就能够对其他角色进行调整,以与其匹配。

  理解架构师的角色

  在较大的组织中,通常有两个体系结构小组。企业体系结构小组定义组织内的每个应用程序小组都必须遵循的控制策略、最佳实践和过程。应用程序体系结构小组负责其特定应用程序的体系结构,确保体系结构能够支持当前和将来的业务需求。

  企业架构师

  在 SOA 组织中,企业架构师的角色是推动和促进 SOA 的采用。他们需要帮助应用程序架构师和各个开发小组理解 SOA 的基础知识并将业务需求转换为有意义的服务,以便这些小组进行实现和公开。

  仅由您自己的应用程序或业务流程使用的服务几乎没有价值。企业架构师需要确保所有应用程序架构师定期讨论其项目,以确定他们可以公开或使用的服务。在不能重用现有服务的情况下,企业架构师还需要确保充分利用构建新服务的每个机会。促进对现有服务的重用肯定比编写新服务具有更高的优先级。最后,他们必须确认服务是在可靠的技术之上构建的,且能够满足所确立的 SLA。

  企业架构师负责定义测定和跟踪 SLA 的机制。他们定义有关控制、安全性、灾难恢复等等的策略和过程。他们通常是涉及到 Web 服务管理、编排和企业服务总线的解决方案的主要决策者。

  应用程序架构师

  应用程序架构师的角色是确保所编写的代码是面向服务的,且遵循可用于面向服务的开发的最佳实践和流程。他们需要在不会对解决方案进行过度设计的前提下将业务需求转换为有意义的服务。典型的服务创建和使用比代码的直接调用开销更大。因此,确定作为服务公开的粒度级别以及如何进行公开是此角色的主要工作职能。


四种让SOA关注业务的途径

conanpaul收录,使用标签:SOA,时间:2007-12-26 17:09:32 | 相关网摘我也收藏

 区分项目在各个阶段的优先次序,更关注用户的利益,而非技术的实施。

  “虽然实施SOA项目需要解决大量的技术升级问题,但是,一个好的项目应该在解决后端基础设施的问题之前,先解决好一些具有战略意义的业务问题。”法国Kemper Auto and Home Insurance公司的CIO Keith Sievers说。

  在Kemper公司,Keith Sievers领导了一个SOA项目的开发,这主要是要取代在上个世纪80年代所部署的那些应用。Sievers是从改造价格查询、错误处理和信用卡付款处理这些基本业务服务开始的,当然,这也就意味着完成了某种程度上的基础设施的升级,例如那些用于数据建模的基础设施。

  Sievers特别介绍说,他让那些位于“幕后”的服务延迟执行,比如那些主要负责任务更新的批处理程序。“在你所部署的SOA项目中,应该让那些对于你的用户来说更重要的应用先执行。因为对于用户来说,也许你花费了4年的时间建设的SOA项目在他们看起来却像是一个很短的项目。”他补充说。

  同时,专家也认为,一定要计算出在SOA项目中哪些部分具有更大的商业价值。因此,当你在进行SOA项目规划和决策时,就需要有用户的参与。“在某些组织或企业中,IT部门界定了业务流程,”Dole Foods and Yum Brands前首席信息官及IT咨询公司Leverage Partners的创立者Bart Perkins说: “但事实上,用户并不需要让IT部门对这些业务流程做出界定,而这一点确实造成了许多的麻烦。”

  避免专业术语

  不要经常使用SOA的专业术语或行话,以免用户产生混淆。

  很多专家都认为,由于使用了英文缩写,SOA等缩略语势必会让用户产生混淆。其实,对于用户来说,他们关注的是IT项目如何让业务受益,而不会去关心具体是怎样实现了这个IT项目。

  “CIO们应该从他们的词汇库中放弃‘SOA’这个缩略语,”Current Analysis的首席数据管理分析师James Kobielus说: “从商业的角度来看,这种缩略语事实上是让业务表达变得更模糊了,相反并没有清晰地解释业务,因为即使是技术人员对于SOA的内涵也没有一个统一的认识。”

  Nucleus Research的分析师David Connell也很赞同上面的观点,他认为:“SOA这个缩略语太技术化了,现在已经逐渐显现出了弊端。”而David主张使用最能表达SOA精髓的那些词汇,而不是简单地、毫无内涵地使用首字母的缩写。

  但也有一些专家在讨论这个问题的时候态度比较乐观,他们并不是采用简单的二分法——不是对就是错。“假如这些词汇能够被很好地解释,那么用户也可以理解其中的内涵”,Saugatuck Technology副总裁兼高级战略顾问Mike West说: “用户现在对于一些计算机词汇都已经很了解了,比如什么是磁盘、什么是文件。那么为什么不能理解SOA呢?他们当然可以理解,只要你能够很好地向他们解释清楚SOA的真正内涵。”

  Kemper公司的Sievers也这样认为:“与用户一起使用SOA这个词汇,应该说是没有什么问题的。”不过,Sievers也强调,要把讨论的重点放在了一些用户感兴趣的业务指标上,比如上市时间和成本节约等,而不是SOA这个词汇。

  找出应用场景

  找出SOA能自动化实现传统手工流程的应用场景。


SOA带你体验简单与快捷

conanpaul收录,使用标签:SOA,时间:2007-12-26 17:09:04 | 相关网摘我也收藏

在今天,很可能你已经开始着手进行一个或者两个SOA项目了。当然,这并不奇怪,在世界范围内的11000家大型企业中,有95%的企业已经开始投入某种努力去实现SOA了。

  市场调研公司WinterGreen Research的高级分析师Susan Eustis介绍说:“这些SOA项目中的大部分都是以各部门之间或者是部门内部的互相协调作为开始的,随后开始逐步扩展,再后来就把用户的业务管理也包括了进去。可以说,SOA在扩大其影响力之前,也是从很小的尝试开始的。”

  随着学术界和工业界的研究与实践的深入展开,原来笼罩在SOA头上的炫目光环也在渐渐褪去。仅存的一道光辉可能就是SOA被业界所接受的那条真理:对于SOA来说,网络便是一切。

  事实上,并不是每一个项目都能与SOA完美地搭配,或者说,并不是所有的项目都能够很好地利用SOA这一架构模式。因为如果要想使其他项目能够重用一堆已经构建好了的服务(当然,假定这种重用并不难实现),那么,在SOA项目或者SOA服务的初始建设阶段,往往需要花费惊人的代价。另外,那些元老级的技术,如.NET和Java,仍然流行于SOA的世界中。因此,或许有很多人会觉得自己的.NET或者J2EE程序运行得还不错,那就没有必要部署SOA了。

  有分析师表示:“令人欣慰的是,SOA技术已经足够成熟了,因为它在不断地吸取实践过程中的那些经验和教训,现在已经是千锤百炼了。”而来自MindTree Consulting的CTO Kamran Ozair却表示:“在过去的几年中,SOA被吹捧成了‘下一个梦想’,因此,很多项目和工程就都被部署成为了基于Web的服务,而后来人们却感觉到,这并不是一条合适的发展之路。”

  或许我们最大的教训就是学习到什么时候不应该使用面向服务的这种方法。“SOA并不是一条终结之路,你需要使用SOA的时候,往往是在你需要解决一个业务问题的背景下。”一家生产数字音频设备的厂商Crutchfield的IT主管Steven Weiskircher说。

  Crutchfield公司开始SOA的破冰之旅是在两年前,那时公司升级了紧急任务目录、访问中心、电子商务和零售订单处理程序,在这些程序中90%都是自定义代码。Weiskircher介绍说,他的开发团队支持代码和对象的可重用性,而且团队中的大部分开发人员对于微软的编程工具也都比较熟悉,因此,他们选用了基于.NET的服务策略,但是后来他们马上意识到,他们不得不把关注的重点转移到业务目标上,而不是以前的技术目标。

  “当然,软件开发的原则在几年之内并没有什么重大的改变。代码的可重用性,以及为了保护数据所产生需求的可持续性等,都是很有价值的设计原则。因此,对于服务来讲,有其发挥功能的地方,但也有其不适用的地方”。Weiskircher说。

  在这其中,服务的延时性是问题的关键。“如果你把SOA看做是Web服务的话——不同的厂商对此有不同的争论——你应该意识到服务会给你的交易带来很大的开销。任何的传输都是依赖于多个组件的,并且会给网络造成影响,包括延时、抖动和丢包等。因为在20年前传输的是简单的ASCII文件,而现在却是时常臃肿不堪的XML文件。当你再在其上添加简单对象协议(SOAP)和Web服务的安全标准(WS-Scurity)时,就有可能会增加延时,因为光是SOAP消息的封装和解析,就会耗费不少的处理器资源和网络资源。”Weiskircher解释说。

  在决定哪一段代码应当抽象成SOA服务的时候,还需要考虑的是,服务可重用性带来的利益是否大于服务延时所带来的负面影响。如果代码主要是在同一台机器的同一个应用程序中运行,那么最好还是不要采用服务的方法; 但是如果代码被许多分布式的应用程序所重用,比如在一个工作流组件中的商业流程,那么把这段代码封装成服务就是适合的。


开发安全的ASP.NET应用程序

conanpaul收录,使用标签:.NET,时间:2007-12-26 17:08:39 | 相关网摘我也收藏

Web应用程序会遭到几种类型的攻击,其破坏效果会因程序本身的不同而不同。因此,安全性是与程序的用法和用户与其功能交互的方式密切相关的。那么,应该如何来设计和编码ASP.NET应用程序呢?

  从应用程序的角度来看,安全性通常指对用户的鉴别以及对系统资源授予访问权限。ASP.NET提供了许多鉴别和授权机制,它们与IIS、。NET Framework以及操作系统底层的安全服务是相连的。

  当一个客户端发出一个Web请求时,将发生下列顺序的鉴别和授权事件:

  1.IIS鉴别

  2.ASP.NET鉴别

  3.ASP.NET授权

  鉴别用户

  如果页面是可以被察看的,而请求来自一个非受限的IP地址,IIS将通过预定义的鉴别机制来对调用请求进行鉴别。首先IIS确保请求来自一个可信任的IP地址。如果不是,请求将以HTTP错误403.6而被拒绝。第二个措施是检查被请求的资源是否可以被读或被浏览。如果不是,请求将以HTTP错误403.2而被拒绝。然后IIS尝试使用Intergrated、Digest或Basic方法来鉴别这个调用。如果用到了Windows的Intergrated方法,Kerberos或NTLM将被使用。如果请求通过了这一关,就轮到ASP.NET出场了。

  ASP.NET支持三种类型的鉴别方法:Windows、Forms和Passport.如果ASP.NET被配置为Windows鉴别,则它不需要其它的步骤,而是直接承认任何从IIS传来的安全标记。如果ASP.NET被配置为Forms鉴别,将使用一个HTML表单提示用户输入信任资料。通过用户ID和密码在存储的合法用户列表中查寻。应用程序可以任意选择最合适的存储机制,包括SQL Server数据库或Active Directory服务。最后如果ASP.NET被配置为Passport鉴别,用户将被转入一个Passport Web站点并由Passprot服务来鉴别。

  第四中类型的鉴别是None,这意味着ASP.NET并不执行自己的鉴别而是完全依靠已经由IIS执行的鉴别。在这种情况下,匿名用户可以连接进来,而访问资源使用的是ASP.NET账户。将ASP.NET鉴别模式设定为None并不妨碍程序实现自己的鉴别层。

  在Web.config文件中通过使用区段来选择ASP.NET的鉴别机制。默认的鉴别模式是Windows.

  授权

  当然,鉴别只是意味着用户被确认为是其本身。下一步是确认用户拥有足够的权限来访问请求的资源。

  在鉴别完之后,ASP.NET将校验调用是否被授权用以访问请求的资源来执行操作。一对HTTP模块提供了这项服务:UrlAuthorizationModule和FileAuthorizationModule.前者确保Web.config文件中区段中的授权规则完全实现。后者在使用Windows鉴别时来检查调用是否有足够的访问许可来访问请求的资源。在这种情况下,通过比较访问资源的控制列表(ACL)调用的标记来执行校验。在处理过程中,也可以用。NET roles来改变调用者的权限以便使用某个资源。

  授权规则由两部分独立的信息组成,它们定义了哪些是允许的那些事禁止的。在区段内,标记定义了允许的用户、任务和操作。相反,在标记中包含了不被允许的用户、任务和操作。

  你也许注意到鉴别模式只能在machine.config文件或在程序层的Web.config文件中设置,子目录继承了程序的鉴别模式。但是,授权设置可以在每个子目录的Web.config文件中设置。换句话说,授权比鉴别支持更细。

  基于角色的安全

  如果你需要鉴别用户,你同样需要为他们建立个性化的页面。这里有两大的选择:一是实现一个个人资料系统,为每个用户存储配置信息;二是定义一些角色,把用户映射到这些角色上。


随需应变 SOA助企业激活传统应用

conanpaul收录,使用标签:SOA,时间:2007-12-26 17:07:21 | 相关网摘我也收藏

旧资产激活(legacy enablement),即将企业遗留的软件和信息资产应用在新的业务系统中。它也被称之为企业现代化(enterprise modernization)、旧资产转换(legacy transformation)、旧资产现代化(legacy modernization)等等,不一而足,但整体而言,描述的都是同一个意义。其中,旧资产激活这个词最能够生动地表现出准确的内涵。尽管对某些人而言,“旧资产”(legacy)这个词有负面内涵,但实际而言并非如此。

  旧资产软件是以前安装的软件以及十多年以前就有的软件。该软件很有可能正在运行关键的业务过程。它可能是企业在合并或并购之后进来的。当一个有没什么经验的厂商试图劝说替换某些软件的时候,可能正是这个在他看来过时的软件最能够满足企业运营的需要。可能正是这个过时的软件使您开怀大笑。

  基本上来说,“旧资产”是指部署在基础结构中的现有IT资产。通常,它对业务有重要的价值。要想认识旧资产软件的重要性,请看这样的事实:据估计,目前存在2000亿行COBOL代码,而全世界70 %的业务数据是由COBOL应用程序处理的,并且每天要处理300亿个基于COBOL的交易。显然,这些程序都是可以利用的、非常有价值的资产。

  在维护旧资产系统方面,存在成本和竞争力问题。大型部署大都非常昂贵,并且对新的或替换解决方案进行投资也会同样昂贵。这意味着,为了同时维护旧的和新的系统,可能有不必要的重复投资,而且从事开发任务的员工必须具备异常广泛的技能。

  从业务和竞争力角度,我们可以用一个词来概括其要求:速度。业务需要迅速响应市场机会,并第一个推向市场。同时,业务需要可缩放、可靠和安全的生产性应用程序。单独依靠旧的或新的技术不可能获得高性价比、完整或足够灵活的解决方案,也就无法向客户交付所需的服务质量。在新旧技术之间需要有一座桥梁,它可以不断扩展现有资产,同时还能提供像Web服务这样的新技术。幸运的是,现在已经有了这样的桥梁,也就是最近炙手可热的“面向服务体系结构”(SOA)。

  在SOA世界里,完成业务任务的方式是执行一系列“服务”以及具有良好定义的与服务交谈的方式,还有良好定义的交谈取消方式。对用户来说,只要服务按期望的方式做出响应,并提供了他所需要的服务质量,那么,服务是如何实现的并不重要。这意味着,服务必须足够安全、可靠和快速。这样,在部署了多个厂商的软件和硬件的IT环境中,或者在一个现有资产与新的应用程序、集成技术或数据源混合在一起的企业中,SOA成为近乎理想的方式。

  有很多企业得益于使用SOA实现的旧资产激活。在业务方面的首要任务是从现有资产和系统创造新的价值,通常这需要利用新的业务过程和复合的应用程序(例如,门户应用程序)来实现。SOA可以帮助客户实时地访问先前的批处理事务,由此提高做出业务决定的速度和准确性。通过SOA来重复使用关键业务数据和应用程序有助于提供更好的客户服务,从而提高这些客户保持率。


国产中间件厂商对SOA实行“追踪”态度

conanpaul收录,使用标签:SOA,时间:2007-12-26 17:06:12 | 相关网摘我也收藏

与国外厂商的热捧形成的鲜明对比,国内的中间件厂商对SOA并不狂热,这个宣称是未来软件产业的革命对于中国软件企业来说,是否是突围机会?同样是水,国外的企业实际具有的势能高,势能高就形成了瀑布,而目前国内的企业还是河流、小溪。这与国内企业的产品管理的认识和实践有着相当大的关系。
  目前,绝大多数的国产中间件厂商对SOA实行的是"追踪"态度。过去,中间件是以技术作为驱动,但是现在业务已经成为中间件技术和产品发展的驱动力。SOA技术和Web服务技术的发展,使得中间件已经摆脱了纯粹的技术影响,更多地加入了业务特性。

  中创软件商用中间件公司总经理刘江宁说:"在2003年以前,可以说国内中间件市场几乎是IBM、BEA等国际中间件巨头的天下。但从2003年开始,国产中间件迅猛发展。到2005年,中间件产业迎来新的拐点,国内厂商进行了反攻。CCID发布的'2005-2006年度中间件软件市场研究年度报告'的数据中,我们也可以看出,国产中间件市场份额较去年上升了6.3个百分点。"在逐步向上与业务系统靠拢的过程中,中间件逐渐成为原来业务系统的共性平台。

  而国内的中间件厂商,比如中创软件、东方通、中和威等等其实都推出了基于SOA总线的中间件产品,并且具备了部署和运用SOA的能力。只不过他们没有更多地去市场上进行炒作。东方通公司表示他们已经有了很多的SOA应用的成功案例,尤其是在电子政务这一块。而且,东方通是少数可以提供"既可以传统技术也可以SOA"双重解决方案的厂商。

  SOA概念的提出就是为了解决动态的B2B业务整合的问题。虽然SOA已成为一个趋势,但目前国内还没有达到规模化的推广应用阶段。

  国防科技大学王怀民教授道出了一个很重要的观点,国外厂商非常善于制造新的理念,这也是中国企业需要学习国外中间件厂商的优异之处。

  不久前北京市科委的长风联盟公布了"长风联盟SOA发展战略与技术推进战略",宣布要利用SOA的巨大机遇,在中国推动SOA,重新改变产业价值链格局,争取更大市场空间,也积极加入到提升产业话语权的阵营里来。

  王怀民认为,SOA其实是由于Web技术传播的成功,将Web服务进行了更大范围的拓展,一方面是源于技术的驱动,另一方面是由于厂商需要找到新的技术市场的原因驱使。应该说SOA更易于培训更易于更广泛的推广,同时也更接近用户,而且在未来的技术发展上将有可能对生化信息服务有积极的推进作用。

  "如果用SOA去解决互联网上的问题,又觉得他过于复杂了,如果让SOA去解决分布式应用的问题,他又不能完全解决。"王怀民说,在某种意义上,SOA其实是厂商们的一种新的营销模式,是新壶装旧酒,对于国外厂商来说,他们原来的积货很多,所以推广很积极,同时通过这种深度推广获得用户和市场的支持,当然将来必然也会对自己的软件的革新和改造带来良性的互动。

  SOA与现今流行的Web服务紧密联系在一起。Web服务提供了技术,而SOA则提供了应用这种技术的框架,是一个非常好的思路,因此得到了软件业界普遍的认可。中间件对于Web应用具有简化和帮助其相互连接、相互访问的作用。

  目前,几乎所有新的中间件类型、新的中间件产品都支持Web服务,可以基于它们实现SOA架构的应用。正因为如此,人们将中间件视为实现SOA架构的理想平台。凭借这种天然的联系,中间件搭车SOA也是一个增加曝光率的明智选择。


探索SOA中服务的开发、接口和操作语义

conanpaul收录,使用标签:SOA,时间:2007-12-26 17:04:46 | 相关网摘我也收藏

面向服务的体系结构(Service-Oriented Architecture,SOA)正快速成为很多企业中的主要体系结构样式。构建 SOA 解决方案的主要目的是通过松散耦合其系统来对企业进行武装,从而能更好地响应业务需求。在 SOA 解决方案内设计 Web 服务的主要目标之一是支持快速构造业务流程。您还希望加速企业内以及与外部业务合作伙伴的应用程序集成。

  在实现 SOA 解决方案的上下文中,服务接口的结构非常重要。设计糟糕的服务接口可能会极大地导致使用此接口的很多服务使用者应用程序的开发过程变得非常复杂。从业务角度而言,设计糟糕的服务接口可能使得业务流程的开发和优化变得复杂。相反,设计良好的服务接口可以加速开发计划的执行,并对业务级别的灵活性起到促进作用。

  Web 服务从本质上就非常适合用于构造 SOA 解决方案。Web 服务领域的很多现有和未来的行业标准可确保互操作性,此类标准包括 SOAP、Java API for XML-based RPC (JAX-RPC)、WSDL 和 WS-* 规范等等。各种流行的开发环境(如 IBM? Rational? Application Developer 和 IBM WebSphere? Integration Developer)中均包含了基于标准的工具,从而能够加速 SOA 项目的进行。

  本文的重点是服务接口设计抽象层面的东西:

  设计与开发方法

  服务粒度

  操作签名

  开发方法

  基于 XML 和 Web 服务的编程模型和开发工具定义了三种构建 Web 服务的方法:

  自底向上

  各种先进的集成开发环境(Integrated Development Environment,IDE)提供了用于从现有代码(如 Java? 或 COBOL)创建 Web 服务实现的工具。使用此方法时,开发人员通常将选择现有的 JavaBean 或 EJB 组件,并调用向导来生成 WSDL 文件,以用于将 Bean 或 EJB 作为 Web 服务调用。

  自顶向下

  使用此方法时,开发人员将首先使用 WSDL 和 XML 模式(XML Schema,XSD)构造定义 Web 服务接口,然后为服务生成框架实现代码。接下来,开发人员将完成框架服务实现。大多数先进的 IDE(如 Rational Application Developer V6 和 WebSphere Integration Developer V6)都为此方法提供工具支持。

  中间相遇

  此方法对前面两个方法进行了结合。开发人员首先使用 WSDL 和 XSD 定义服务接口,并为服务生成框架实现。如果有必要,开发人员还可以使用自底向上技术来通过方便的应用程序编程接口(Application Programming Interface,API)公开现有代码。然后开发人员将编写在新设计的接口和旧接口之间进行转换的代码。

  很多熟练的 Java 开发人员喜欢使用自底向上技术来加速 SOA 项目中的 Web 服务开发。他们将首先用 Java 开发新服务的实现,然后将使用强大的代码生成向导来为这些服务创建 WSDL 接口。尽管此方法可以加速各个服务的实现,但这对整个 SOA 项目通常都意味着问题。

  之所以出现问题,是因为自底向上生成经常会得到无法重用的类型定义以及多个定义为表示语义等效信息的类型。

  最佳实践:使用自顶向下和中间相遇开发方法,而不使用自底向上技术。使用 XSD 和 WSDL 设计您的服务接口,然后生成框架 Java 代码。

  当存在现有遗留代码(例如 JavaBeans、EJB、COBOL 等)时,就适合使用自底向上开发方法。采用此方法时,应该仔细地复查现有类的接口,然后再生成 WSDL 接口。如果 Java 接口仅包含任何以下内容,则可以将其视为弱类型:

  作为方法的参数或返回类型使用的 java.lang.Object


从项目管理看SOA SOA并非新观念

conanpaul收录,使用标签:SOA,时间:2007-12-26 17:04:09 | 相关网摘我也收藏

SOA不是新的观念

  胡百师认为,SOA所处理的技术都没有新的知识。从技术方面来看,SOA并没有引入新的技术理念;软件工程角度来看,SOA是一个软件应用的过程;从管理的角度来看,SOA只是用另外一种方式来诠释企业应用。企业使用SOA的目的大多一样(比如降低成本,加速服务开发等),但是应对的环境却千变万化。

  "质量不是100%!"胡百师认为,软件做到60%的程度即可,再做多就是了增加了开发成本。只有控制好开发成本与周期,才能做出一个好的软件产品。SOA的作用就是让我们实现成品优,品质好,成本低的开发;在开发的过程中,要记得把必要的东西优先完成。

  项目管理就是风险管理

  风险在事前可预测得到;与此相对,在执行项目的某些状况叫做问题。分清楚风险(已发生)与问题(未发生)并执行有效的管理,才能不把风险变成问题。面对风险,防范于未然,是项目开发中应该得到注意的事项。

  分离关注点有助于项目管理中的分工,提高工作效率。"各司其职,分工合作"才是项目管理中最更要的理念。在软件工程中将一个大的系统分离成小的模块,不断地完善其功能,最后慢慢再整合成一个系统,如此才能完成客户的要求。一个Process是一个工作的模型,定义了"什么人在什么时间做什么事情",这正是分解一个项目的关键。在SOA里,要得到目标成果,分离组合的应用是才是完善服务的基础。

  SOA与需求

  需求是永远也不会冻结的,但是可以通过一系列的方法与手段来应对需求的变化。而人的问题才是直接影响的到需求的导入与实践需求。

  简单够用就好--胡百师先生一直强调SOA不是一个新的理念。这也是他在本次讲座中的中心理念。

  讲师介绍

  台湾三商电脑股份有限公司 Process Group Leader ,负责公司EssUP项目管理模式的导入,并推动软件工程标准化开发。同时担任台湾铁路管理局大型系统整合项目"自行车高度无线电话系统"项目负责人,带领专业技术团队完成目前世界上最大的TETRA无线电通讯系统。曾服务于台湾资讯工业策进会(台湾IT产业的龙头)担任经理,专门负责信息管理系统规划与建置,先后完成多个重要政府部门的办公室自动化整体规划任务。对于大型项目管理、电子商务任务规划、ERP整体规划、系统整合、ISO 9000 质量体系统建立及质量保证拥有丰富的实践经验。


.NET反射、委托技术与设计模式

conanpaul收录,使用标签:.NET,时间:2007-12-26 17:03:41 | 相关网摘我也收藏

1 反射技术与设计模式

  反射(Reflection)是。NET中的重要机制,通过放射,可以在运行时获得。NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。

  1.1 .NET可执行应用程序结构

  程序代码在编译后生成可执行的应用,我们首先要了解这种可执行应用程序的结构。

  应用程序结构分为应用程序域—程序集—模块—类型—成员几个层次,公共语言运行库加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。

  程序集包含模块,而模块包含类型,类型又包含成员,反射则提供了封装程序集、模块和类型的对象。我们可以使用反射动态地创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型,然后调用类型的方法或访问其字段和属性。反射通常具有以下用途。

  (1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。

  (2)使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。

  (3)使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。使用Type的GetConstructors或GetConstructor方法来调用特定的构造函数。

  (4)使用MethodInfo了解方法的名称、返回类型、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。使用Type的GetMethods或GetMethod方法来调用特定的方法。

  (5)使用FiedInfo了解字段的名称、访问修饰符(如public或private)和实现详细信息(如static)等,并获取或设置字段值。

  (6)使用EventInfo了解事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,添加或移除事件处理程序。

  (7)使用PropertyInfo了解属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,获取或设置属性值。

  (8)使用ParameterInfo了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的位置等。

  System.Reflection.Emit命名空间的类提供了一种特殊形式的反射,可以在运行时构造类型。

  反射也可用于创建称为类型浏览器的应用程序,使用户能够选择类型,然后查看有关选定类型的信息。

  此外,Jscript等语言编译器使用反射来构造符号表。System.Runtime.Serialization命名空间中的类使用反射来访问数据并确定要永久保存的字段,System.Runtime.Remoting命名空间中的类通过序列化来间接地使用反射。


SaaS即将引领潮流还是陷入与ASP一样的境地

conanpaul收录,使用标签:项目管理,时间:2007-12-26 17:02:26 | 相关网摘我也收藏

贝尼奥夫提出了“终结软件”的思想,虽然这一局面还没有真正到来,但整个软件业的风向已发生改变。当SAP、微软和甲骨文都把按需软件作为未来,SaaS市场变得更加活跃。

  在1999年3月,马克·贝尼奥夫在自己家旁边租了一个公寓,创立了为客户提供On Demand(按需供应)和Software as a Service(软件即服务)的Salesforce公司。而在这之前,他曾是甲骨文公司最年轻得志的副总裁。

  在一次甲骨文内部讨论中,贝尼奥夫了解到网络服务取代软件包的可能性,凭着对软件产业的了解,贝尼奥夫觉得,这个模式有足够的破坏力,足以改变软件产业。

  因为SaaS概念的核心是,使用者不需要再在自己的计算机上装任何软件,只要连上网络,就可以透过浏览器,完成过去用软件才能做的事。

  因此,贝尼奥夫提出了“终结软件”的思想,虽然这一局面还没有真正到来,但整个软件业的风向已发生改变。当SAP、微软和甲骨文都把按需软件作为未来,SaaS市场变得更加活跃。

  软件巨头的下一站

  “终结软件”这一表面看起来充满挑战性的字眼,如今正在变成现实。这多少让甲骨文公司令创始人埃里森有些始料未及,Salesforce公司日渐成为甲骨文公司的竞争对手也让埃里森有点烦。

  像贝尼奥夫这样,出身甲骨文又成为其竞争对手的事情已经不是第一次了,已经被甲骨文收购的仁科与Siebel也是如此。两家公司都曾在上世纪90年代以商用软件叱咤市场一时,两家公司创始人康威与西伯尔同样也是出身甲骨文的业务人员。

  所不同的是,Salesforce公司还没有被收购,不过有分析人士认为, Salesforce公司很可能被甲骨文收购,因为收购是甲骨文的一贯作风,而SaaS作为一种发展趋势,甲骨文正在向这方面努力,收购Siebel便是加强托管型CRM(客户关系管理)的重要举措。

  与甲骨文相比,一直以来占据管理软件头把交椅的SAP也坐不住了,不过它还是延续其一贯的自主开发业务的战略。

  9月中旬,SAP发布了基于SaaS的按需软件服务—Business By Design,它能帮助客户自动化管理从供应商、客户关系管理到预算、计划等业务流程,每个用户每个月只需花费149美元就可以使用这一软件。

  12月12日,微软在北京宣布,“S+S”(软件+服务)将成为微软未来的发展方向。据微软院士、CTO办公室成员Donald Ferguson博士介绍,微软的“S+S”(软件+服务)战略,旨在打通“内部业务整合(SOA)+外部业务拓展(SaaS)+丰富用户体验”等多重资源,将软件和服务有机地结合在一起。

  针对SaaS市场,IBM扮演的角色更多的是幕后推手,到目前为止,IBM已经与QAD、金蝶等厂商分别展开SaaS合作。

  不仅只有这些商业管理软件领域的传统巨头看好SaaS,互联网公司也已经有所动作。Google在今年年初推出了基于SaaS的套装软件,雅虎公司则在9月中旬通过收购Zimbra公司加强其在SaaS市场的竞争力。


SCA:企业应用开发的利器

conanpaul收录,使用标签:SOA,时间:2007-12-26 16:30:38 | 相关网摘我也收藏

 SCA无疑是目前业界最为火热的词语之一,粗略的翻阅了一下SCA V0.9的规范,先不论SCA的商业因素,不得不感叹于SCA确实可以称为企业应用开发的利器,而SCA的野心也是从目前的规范中可见一斑。

  SOA是近些年来各大厂商一直炒作的一个热门词语,不过基于SOA思想如何来开发系统是没有规范的,各大厂商可谓是各有一套,而SCA呢,就是出于这个目的来制定的,SCA旨在为基于SOA思想的系统制定开发、部署的规范,对于SOA大家千万不要以为就是Webservice,Webservice只是实现SOA思想的一种可选的技术而已,SOA思想只是一个纯粹的概念,意在强调系统是以服务的方式来形成架构,而其实只要你的系统是这么做的,就可以称为是SOA的系统,而不是说一定要是采用了象webservice这些的才能称为SOA的系统。

  既然SCA是为基于SOA思想的系统而制定的开发、部署规范,它首先必然是具备了SOA的一系列的优点,象跨语言、分布式、以服务的思想构建系统等。

  SOA的思想方式多种多样,SCA则为基于SOA思想的系统制定了统一的开发规范,那就是面向服务的组件架构,这个部分和OSGi的DS基本可以说是完全一样的,都是一种对于模块规范开发的标准的定义,SCA中对于模块同样的划分为多个组件,每个组件可对外提供一个或多个服务,同时可引用其他组件提供的一个或多个服务,由于SCA是基于为企业应用开发提供方便的思想而制定的,这就使得在面向服务的组件架构的考虑上,和OSGi相比呈现了更全面的考虑,最重要的自然是体现在了对于分布式应用以及本地调用集成这两点上:

  1、分布式应用

  SCA支持远程调用其他组件的服务,而这点正是OSGi的一个巨大的缺点,也是EEG现在正在努力做的;SCA对于远程调用其他组件的服务支持象Webservice、JMS、JCA、RMI、CORBA等等方式的调用。

  2、本地调用集成

  本地调用的集成上是OSGi中的一个挺大的缺点,当然,这也是因为OSGi制定时考虑的目标不同的原因,本地调用的集成上SCA支持象Spring调用SCA中的服务、EJB的调用等等,当然,SCA同样支持其他语言的调用,象php、c++等等。

  基于SCA,无论对于构建本地的应用或分布式的应用都是不错的,SCA制定的面向服务的组件架构无疑是一种不错的开发规范,其实,这也就是将我们平时在设计系统的方法进行了规范化(模块--组件--服务),由于SCA目标就是为了支撑企业应用的,它对于各种技术集成的考虑上无疑使得它在这块超越了OSGi。

  对于部署,SCA制定了很方便的方式来完成,对于每个组件可选择多种绑定方式,通过选择的绑定方式来决定该组件的服务对外提供的方式,如可为组件选择webservice的绑定方式,那么在外部就可以通过webservice的方式来调用这个组件的服务,又或者可以提供java接口等其他的方式,完全可以根据应用来决定组件对外提供服务的方式。

  对于SCA中的组件的修改,SCA同样是支持动态的方式。

  SCA对于组件中的服务的调用提供了异步调用的支持,在异步调用的支持上SCA的考虑也较为全面,象JMS方式的、RMI方式的等等。

  SCA对于组件中的服务的通讯数据采用SDO标准。

  对于企业应用,SCA还提供了关键的一些基础设施,象安全性、事务、可靠调用等,这对于企业应用的开发而言就变得很方便了。

  总体而言,SCA在企业应用开发层次而言,吸取了OSGi的模块化开发、部署的规范的优点,同时又考虑到了企业应用中的需求,这使得对于企业应用而言,SCA规范无疑是全面超越了OSGi,而各大厂商的积极推进必然会使得SCA在短时间内全面流行, IBM的WPS已经支持SCA方式的开发、部署了,SCA提供的规范的模块化的开发、灵活的部署以及调用方式、跨语言的标准以及提供的声明式的基础设施使得它足以成为企业应用开发的利器。

  SCA确实可以成为企业应用开发的利器,因为它分离了企业应用开发中的开发以及部署,而在开发上通过它提供的声明式的基础设施(就像spring中的POJO Enhanced)使得开发人员的关注点可以集中到业务的实现,基于SCA规范了系统的开发和部署方式,同时对开发人员屏蔽了其中诸如远程调用、事务、安全这些复杂的东西的实现,但是SCA是否真的就能成为对于企业应用集成可用的东西呢值得打上一个很大的问号。


Eclipse开发Apache Tuscany上的SCA应用

conanpaul收录,使用标签:Java,时间:2007-12-26 16:30:07 | 相关网摘我也收藏

本文将会介绍一个Eclipse的SCA开发插件,用以协助开发者使用Eclipse进行Apache Tuscany开发,完成相关的配置和运行任务。该工具工作在Eclipse 3.3 Europa上。

  从Eclipse的工作区的菜单项中选择Help - Software Updates - Find and Install。打开Install - Feature Updates对话框。

  选择"Search for new features to install",按下一步。显示"Update sites to visit"对话框。

  按下New Remote site.在弹出对话框中,填入:

  Name: Tuscany

  URL: http://people.apache.org/~jsdelfino/tuscany/tools/updatesite

  点击确定,将会如图1所示:

  

  图1

  点击完成,将会显示Updates - Search results对话框。如图2选择Tuscany。


高效的java异常处理

conanpaul收录,使用标签:Java,时间:2007-12-26 16:29:40 | 相关网摘我也收藏

Java应用中的异常处理在很大程度上揭示了其所基于架构的强度。架构是在应用程序各个层次上所做出并遵循的决定。其中最重要的一个就是决定应用程序中的类,亚系统,或层之间沟通的方式。Java异常是Java方法将另类执行结果交流出去的方式,所以值得在应用架构中给予特殊关注。

  一个衡量Java设计师水平和开发团队纪律性的好方法就是读读他们应用程序里的异常处理代码。首先要注意的是有多少代码用于捕获异常,写进日志文件,决定发生了什么,和在不同的异常间跳转。干净,简捷,关联性强的异常处理通常表明开发团队有着稳定的使用Java异常的方式。当异常处理代码的数量甚至要超过其他代码时,你可以看出团队之间的交流合作有很大的问题(可能在一开始就不存在),每个人都在用他们自己的方式来处理异常。

  对突发异常的处理结果是可以预见的。如果你问问团队成员为什么异常会被抛出,捕获,或在特定的一处代码里忽视了异常的发生,他们的回答通常是,“我没有别的可做”。如果你问当他们编写的异常真的发生了会怎么样,他们会皱皱眉,你得到的回答类似于这样,“我不知道。我们从没测试过。”

  你可以从客户端的代码判断一个java的组件是否有效利用了java的异常。如果它们包含着大堆的逻辑去弄清楚在何时一笔操作失败了,为何失败,是否有弥补的余地,那么原因很有可能要归咎于组件的报错设计。错误的报错系统会在客户端产生大量的“记录然后忘掉”的代码,这些代码鲜有用途。最差的是弄拧的逻辑,嵌套的try/catch/finally代码块,和一些其他的混乱而导致脆弱而难于管理的应用程序。


SCA支持以SOA解决方案组合现有应用

conanpaul收录,使用标签:SOA,时间:2007-12-26 16:29:08 | 相关网摘我也收藏

  SCA支持以SOA解决方案组合现有应用,其中讲到三个案例,值得学习

  使用SOA构建业务解决方案主要的优势之一就在于其能按照业务需求的变化和革新快速组装新的解决方案。解决方案组装的关键是包含现有的应用和功能的能力,而不是什么都从头开始。的确,只有尽可能地复用现有的功能,才能完成快速开发的目标。

  SCA一种是使用SOA的业务解决方案的编程模型。SCA提供了这么一个特性,使得将已存在的功能组装成新的解决方案尽可能的简单。该文档检验了这些特性中的一些。

  本文档举例说明通过对用EJB技术实现的业务应用的复用从而组合出新的解决方案。

  集成已存在应用的方式

  构建自依靠松耦合服务接口连接的一系列分隔的组件的业务解决方案术语称为“composite application”(译为:构件应用),因为他们包含了将这些片段组合形成解决方案的能力。

  SCA提供了各种将已存在应用连接成为一个新的构件应用的方法。每种方法都提供了特定的功能集合,当然不可能一种方法会适合所有的应用环境。部分地,要使用的方法依赖于已存在应用的特征,也依赖于为应用所使用的运行时基础设施的功能。

  来自已存在应用的必须保证的东西就是可调用接口的某种形式。通过该接口形式,可以访问应用的功能。它可以有多种形式—也许是通过如Web service或CORBA IIOP的标准协议访问的开放接口,也可以是私有访问方式。SCA被设计来处理广泛的协议,并能适应多种接口方式。


开发框架:深入了解 Struts Validator

conanpaul收录,使用标签:Java,时间:2007-12-26 16:28:45 | 相关网摘我也收藏

Struts 提供了一个名为 Validator 的优秀组件。Validator 可以插入 Struts 应用程序,甚至直接和最新的 Struts 发行版绑定在一起。只要几个 JAR 文件就可以了。但是 Validator 强在什么地方呢?为什么要用它代替 JavaScript 呢?

  而且,您应当认识到,Validator 的大部分执行都使用 JavaScript。所以实际上并没有离开 JavaScript,而且得到的客户端验证也是 JavaScript 擅长的内容。但是,Validator 消除了 JavaScript 的许多问题。首先,它是由成千上万的 Struts 开发人员和用户编码、测试和调试过的,因此降低了您需要进行的测试