OSTeching
  • About

Small talk about SOA

By Julian Zhu On January 28, 2011 · Leave a Comment

SOA杂谈 — 兼谈J 记 

最近在做技术概念验证,为下一个项目做准备。碰巧,这次主要目的就是要检验SOA 适不适合我们下一个项目。由于整个团队对SOA 理解不多,而且选择的目标平台也多少有点灰煮牛,所以这个验证过程多多少少出现了一些问题。本文把这个平台叫做J 记SOA 平台。

J 记有配套的开发工具,有要钱的商业版,也有不要银子的社区版。因为没钱,所以只能拿免费的社区版来用。对我来说这个社区版有两个问题,首先配置约束不够,很多可视化的配置文件编辑,各个配置项属性之间的前后约束都没有,如果不是对J 记平台非常熟悉的话,光靠这个社区版的开发工具,恐怕很难折腾出一个能运行的例子出来。其次,和服务器结合有问题,经常不能直接在IDE 内部迭代发布,严重影响开发效率。也许商业版不会有类似的问题,可惜我没用过,没有发言权。

如果非要加上第三个问题的话,那么我会选择配套的示例和文档。即使我们这个团队和J 记稍微有点关系,拿到了很多收费文档,这些文档的价值也不是那么明显,很多地方版本对应不上,例子不够详细,参数介绍不全面。例子其实还可以,都能正常运行 -_-! 我只是觉得多少有点不够丰富。

总得来说,这个J 记SOA 平台在我看来多少有些山寨。当然这很大程度上是因为我潜意识的就不看好J记 的SOA 平台,希望看到本文的兄弟姐妹们不要受我影响。

老实说,用J 记平台之前,我没想到过居然会花好几天才稍微折腾起来这个东西,虽然我之前一眼都没看过这个平台,但我以为以自己对SOA 的了解,很快上手应该不是件难事。现实是,SOA 确实是个很宽泛的概念,每个平台都有很多自己的技术细节,虽然大体方向是一样的,但是在细节上也很难做到一通百通。所以我觉得,对新手来说,培训真的是一个必要的过程。尤其是对像我们这次这样,想要初次接触就要完整得采用SOA 平台来作为技术解决方案的团队来说。当然培训要有针对性。其实用基本不熟悉的东西来做方案真的是很有挑战性的一件事,不管是对干活的人,还是对客户。干活的人在孤立无援的状态下承担了工期的压力,客户在呗蒙在鼓里的情况下承担了产品是否稳定可用的风险。

还有一个问题之前没有在意过,只是在我们这个特定的技术验证的情形下我才觉得这是个问题。也许是为了清楚也许是为了什么,老外要求每个模块打个包放到J 记平台去部署。我们只是要搞个技术验证,几个很简单的服务,在这个打包思路下,居然有将近二十个包要部署,EJB,ESB,WAR等等。简直无法想象如果生产环境沿用这个思路会是个什么样子。如果真的那样,我一定会在精神病院发个B 文记录一下。

多少有些类似,不过我们这个简单的验证没考虑这么多。在你的生产环境中,你的诸多服务是怎么管理的?是散落在世界各个角落?还是分类整理在一个地方?你知道各个服务运行的情况吗?等等,等等,等,等等等。希望结合上面那个我认为不是问题的问题,会让你联想到服务治理多多少少还真有那么点必要。

软件SOA 化,也可能带来另一个问题。SOA 是以服务为基础的,把提炼出的服务组织在一起,快速影响业务需求,这是SOA 的初衷。我所说的问题就是,如果团队划分比较细,夸张的说,一个团队只支持一个服务。会出现什么情况?各家自扫门前雪,不管他人瓦上霜。又或者说一叶障目不见泰山,一个团队只看眼前,对整体失去了把握。不管是从优化业务的角度,还是从性能分析的角度,都是不利的。

当然我举的例子多少有些夸张了。但我认为,在以上示下的团队组织中,这种情形早晚都会出现。所以给所有团队予应用的整体概念是很必要的。让每个人都知道在做什么,发挥全体人民群众的智慧。

杂记一篇,不知所云。

Continue Reading →

Scala flexible syntax: bad or good

By Julian Zhu On January 28, 2011 · Leave a Comment

Scala flexible syntax: bad or good?

Scala 风格太多变了,做一件事可以有N 条路。

比如声明一个方法:

val multiply = (x:Int) => x * x def multiply(x : Int) : Int = { return x * x; }

这方法都可以用multiply(3) 来调用。当然你完全可以说前一种是把匿名方法赋值给常量multiply。但是在我看来,这只是修辞上的问题,对结果并无影响。如果说上面这种还有说辞,那请看下面的代码:

val aaa = 1 to 3 val bbb = 1.to(3)

这两种形式是完全等价的,只是在写法上有区别而已。

在语句分割上Scala 也采取了比较灵活的方式,一行是一条语句,如果想把两条语句放在同一行,可以用分号分隔。上面的常量声明可以像下面一样写在一行:

val aaa = 1 to 3;    val bbb = [...]

Continue Reading →

Tricks to extend your own Tuscany Binding

By Julian Zhu On January 28, 2011 · Leave a Comment

扩展Tuscany binding 的注意事项 

最近在琢磨着整个BlazeDS的SCA binding出来,Tuscany 用的顺手了,自然就用Tuscany 来做SCA 实验。虽然因为从BlazeDS 中扒代码出来遇到了点困难,但是扩展Tuscany Biding 的思路已经理清,所以先写这么一篇来灌水。本文不涉及BlazeDS 的部分,只是列出几个兄弟在实现Tuscany Biding 中遇到的容易被忽略的地方。

0/ targetNamespace 在各处要保持一致

其实理由很简单,目标命名空间一致才能找到东东嘛。但问题是这个targetNamespace 分散在各处,而又没有统一的维护工具,目前的IDE 工具做的也不够好。嗯,当然也可能是我比较圡,没找到好用的工具。我的case 比较简单,就三处有targetNamespace:composite 配置文件,/META-INFO/services底下的ValidationSchema 和 StAXArtifactProcessor。

1/ 是否真有必要实现StAXArtifactProcessor

如果扩展的binding只要配置一些基本的属性,完全可以用org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor 来完成配置的解析,没有必要实现自己的StAXArtifactProcessor。比如,我的就一个uri 要配置,DefaultBeanModelProcessor 完全可以做这事了。注意:此项配置要保留,否则会杯具的。

2/ 尽量提供ValidationSchema

ValidationSchema 是用来保证Binding 使用者正确使用你的扩展的校验机制。如果提供了足够多的校验,并且提示信息都很友好,使用者很容易就能完成一个自我学习的过程。

3/ 实现ModuleActivator 不是必须的

ModuleActivator 是模块加载过程的第一步。如果扩展模块在加载过程中不作什么特殊动作,比如注册扩展点,完全可以不提供自己的ModuleActivator,用默认的就可以了。

4/ 心思细致

自定义扩展模块时必须要心思细致,因为有太多的配置,而且都是约定性的。

ps: 推荐两个参考资料
0/ 这是极少的参考之一, http://tuscany.apache.org/sca-java-extension-development-guide.data/ExtendingTuscany1.pdf
2/ Tuscany 源代码,各类扩展都可以找到对应的模块来参考。

Continue Reading →
← Previous Entries
  • Recent Posts

    • Hadoop启动陷阱
    • SLF4J MDC and Marker
    • Lite-Mongo a very thin wrapper of MongoDB Java Driver
    • What is the better mobile phone contacts
    • 移动互联网时代手机能干什么
    • Small talk about SOA
    • Scala flexible syntax: bad or good
    • Tricks to extend your own Tuscany Binding
    • 中小企业如何开展SOA
    • 闻名不如见面-南山坡专题技术讨论活动
  • Recent Comments

    • Ken on SLF4J MDC and Marker
    • Ken on SLF4J MDC and Marker
  • Categories

    • ESB
    • Essays
    • Hadoop
    • JEE
    • Mobile Internet
    • NoSQL
    • OSGi
    • SCA
    • Scala
    • Scrum
    • SOA
  • Archives

    • February 2012 (1)
    • December 2011 (1)
    • August 2011 (1)
    • April 2011 (1)
    • March 2011 (1)
    • January 2011 (14)
  • Links

    • Jackyrong
    • Rosen
    • 牛开B
    • 颠覆软件
    • 龙居
"ok, ask for an offer, seriously," — julian0zzx

OSTeching

Pages

  • About

The Latest

  • Hadoop启动陷阱
    最近在CentOS 6.2 上搭建了Hadoop-1.0.0 测试环境,遇到了很多地雷。这里记录下Hadoop 环境搭建的陷阱,以后少走完路,陆续补充中: 0/ ssh 无密码登录 注意authoried_keys 权限是 0600,否则一直提示输入密码 1/ […]

More

Creative Commons License
© 2006~2012 OSTeching
Platform by PageLines