构建企业级应用的六大误区

类别:Java 点击:0 评论:0 推荐:
在你的团队进行编码之前,我们来看看在企业级应用中经常出现的一些错误,在把焦点集中在怎么去做之前,我想先着眼于考虑什么是不应该做的。

很多程序员从书上得到知识,然后在代码里添加一些好的东西,但是也在程序里留下了同样的错误,所以我将涉及一些企业级编码上的经常出现的错误,然后简要的说明怎么避免这些错误。

1.你所用的数据存储的类型是无关紧要的。
  设计一个应用的第一步决定于你的数据的存储。所有的应用都是基于一个数据库的,这不仅仅是一个结果。然而,最近也有一些流行的其他观点:你可以用关系数据库,xml数据库,对象数据库,目录服务,和更多的东西。

   结果就是,很多的公司开始经常不带有自己的任何思想交换这些不同形式的数据存储,如果目录服务比数据库便宜的话,有的公司就会用目录服务来替代数据库,xml数据库也因为它的“迷人”和工业上的活力放到应用上来。然而,在任何案例上运用任何数据存储的趋势是很可笑的。你的性能会随之降级,代码会越来越复杂,你将没有办法知道该怎么做。

   每个数据存储方式都有其特有的特点。例如:目录服务对于频繁的读和很少的写支持的最好。验证和搜索名称和地址是目录服务的一个完美的用法。然而,如果你经常往目录服务里写一些数据的话,你将发现它的性能回下降,这样的案例对于数据库来说是最好的。
   决定使用什么样的数据库也是很重要的,例如:使用一个xml数据库而不把xml目录拉到数据库外是很愚蠢的。你选择了xml,但从来不用xml。
   
   在我的新书里,我例句了这些选择。实际上,你将学到怎么把数据库和目录服务结合到一起,和怎么把数据在它们之间传进传出。


2.卖方的特殊性增加了编码的任务
   程序员经常使用捷径是编码速度加快,然而,更经常的,这些捷径变成了长期的缺陷。不管在编码完成前节约了多少时间,在结束后总是要花很多时间去把代码改来改去,让我给出下面这个例子吧
   获得ejb和数据库表的版本,一个常用的版本是在表的一个字段内插入id号,因为oracle使用sequences来做到这个,mysql使用一个自动增量字段,其他的表也许根本不提供这样的编号方式。

    在我看到的情况来说,直接用来访问oracle sequesnce ,或mysql增量字段或者其他的数据库,用其他的话来说,ejb将不在任何数据库上运行除了特定编码的数据库; 实际上,它们在同一个卖方的不同的数据库上也不能工作。带来的结果是繁重的、短命的、不能跟上公司需要改变的代码

    3.我需要一个编辑器或工具来写我的ejb
     我经常被人问我用什么工具来开发ejb的.很明确,人们想知道我用什么来产生远端接口、home接口、执行类的源代码.所以为了使编码更简单你必须有一个工具来帮你做这些重复的东西。如果你在代码里改了它的框架,或者忘了一个标点在那,或者偶然的搞错了一个方法。结果就是代码编译错误,调试困难。
    也许我用vi和notepad来编辑java看上去很节约:),但是,我在这些文本编辑工具里使用ctrl+c 和ctrl+v和'yy','kk'和'p'来剪切、粘贴代码比我在任何编辑器和曾使用过的工具里根绝更好。带来的结果是我对于我代码的理解程度更高,知道我代码里所有的东西里有什么
    我没有说你不应该使用一个编辑器或者工具(我最常用的是jedit);然而,当你一依赖这些工具的时候,你就会有麻烦,用一个星期的时间编不出任何东西除了一个编辑器,你将惊讶于你对你管理代码的重新认识,我的书里没有推荐任何的工具,这样可以使你最后有一个有效的合乎逻辑的代码的bean。和其他的组件在你的应用中。


  4.在应用里用了包括jms,xml,jaxp等技术
   我了解到,如果你读了我的书和文章很长的时间,你也许回尽力去做这样的事情。我一直坚持在程序中你需要什么才用什么,知道我看到了人们的工业活力或我才大声的呼叫这种现象。
   我要说的最基本的错误是在j2ee应用里必须用到所有的j2ee技术,如果在应用里没用到EJBs, JMS, JMX, XML和其他东西在你的应用服务器里,你会觉得你浪费了钱。
    
  任何的东西都比不过事实,实际上虽然在我最后一本书里,我差不多很努力的在写一章jms的,这不代表jms不重要;很明显我为那本书写的应用真的不需要jmp。。我写过几个需要jms的应用,我在书里也有几个很可爱的好用的jms例子,然而,那个版本全是图例:有时全部不是你所需要的。

  在任何情况下,有50次,你只需要使用你需要的东西就可以了,如果在一对servlets和jdbc代码中需要所有的技术的话,坚持做到一点:不要加如复杂的ejb,如果你不需要它的话,如果你需要ejb,但是消息驱动bean超出了你应用的范围的话,不要着急,在最后,你还是将会为你简易的应用而高兴的。


  5.有状态的beans是程序更面向对象
   这是一个最常见的问题,往往纠正起来是最简单的。基础的错误包括方法调用方式,例如:你也许会在一个有状态的session bean的远程接口里发现这样的一些方法:
  public User create(String username); 
  public Address getAddress(); 
  public List getAccounts(); 
  public boolean deleteAccount(Account account); 

  这里的想法是你需要这个bean使你能一次性通过username。所以你的方法调用应该象下面这样:
  User user = userHome.create(username);  
  Address address = user.getAddress(); 
  List accounts = user.getAccounts(); 
  
  在session bean里使用这样的方法看上去更面向对象一点
  public User create(); 
  public Address getAddress(String username); 
  public List getAccounts(String username);  
  public boolean deleteAccount(String username, Account account); 

  所以调用的方法如下:
  User user = userHome.create(); 
  Address address = user.getAddress(username); 
  List accounts = user.getAccounts(username); 
   
  哇~!很明显这样太难而以至于无法工作 :) 就象你看到得到一样,这不太象OO,然而。你将回发现改成了无状态后导致速度10倍、100倍的增加。在面向对象上牺牲了一点可以使你代码的速度奇迹般的增加。


  6。我不需要任何人告诉我怎么去编码
  阿,是啊,那这样的话我们将一直在一个地方,对吧?我记得在我开始编程的几年时间里,我经常一直改革,一直创造,从来不copy别人,也不需要任何人的帮助。当然,后来我发现我最聪明的改革对于理解很多最好的用例问题来说是情况很可怜,别人给你帮助而你拒绝接受是很愚蠢的行为。
   
  我建议你容入到开放的源程序中去交流,你将学会比你想象的更多。底限是那有很多真正聪明的人,我建议你最多的从这些人中吸取知识,当你决定你不需要任何人的帮助的时候,你一定开始比以前犯更多的错误了。

  好,这里是六个最常见的问题我所见到的,你将在这里找到一个或者两个你存在的问题,不要害羞,你有这么一两个问题没有关系,只要你改了就可以。把这些看做是你做为一个更好的程序员必须的东西吧,我希望你能喜欢这本新书,我将等到你的回音。

本文地址:http://com.8s8s.com/it/it12853.htm