Galaxy河汉

Galaxy银河

mule的SOA治理平台Galaxy作者Dan Diephouse的博客译文(地址:http://netzooid.com/blog/),从08年开始因为08年Galaxy发布了。比较难看难译,不像公开技术文章或者官方博客,用语比较正式。先备忘几个相关文章:

REST风格的Web服务注册与储存

Open Source Competition - Mule Galaxy vs WSO2 Registry

WSO2治理平台:wso2.com/products/governance-registry?021412c

 

 

 

第一篇:

《Mule Galaxy Governance Platform 》   2008年1月14日

 

Today we’re announcing, among other things, the first release of Mule Galaxy which is our “SOA governance platform with integrated registry/repository.” (whew – thats a mouthful)

  今天我们发布了Galaxy第一版 —— 我们的SOA治理平台、注册表/服务库

 

We’re exploring what it means to bring open source tools and governance together. Governance has typically been a game for those with lots of cash at hand with registries typically costing hundreds of thousands to a million or more dollars. Open source breaks down that barrier and makes it much more approachable to everyone. And there’s a lot of reasons it should be approachable as governance can be very valuable. For instance, governance tools can help you:

  有一个问题我们思考了很久,那就是把开源工具和治理结合起来能带来什么?:治理一般是富人玩的游戏,因为注册表一般都会花费成百上千万的美元。开源则打破了这个规则,降低了成本。我们需要开源来释放治理的巨大价值,治理工具能够帮助你做到:

  • Gain visibility into services across your organization and collaborate on them 使得跨越组织机构的服务可见、并使得他们可以协作。
  • Manage an artifact or service’s lifecycle more effectively 更加有效的管理组件或服务的生命周期。
  • Gain visibility into and control over who is consuming your services, schemas, etc. 使得服务的消费者以及你的schemas可见并可控。
  • Enforce best practice policies across your services like you would across your build with Checkstyle or PMD. 在你的服务中贯彻最佳实践...
  • Manage the security of your services more effectively through policies 通过策略更高效的管理你的服务的安全性
  • Easy manage configurations, schemas, WSDLs, etc for deployed clusters of machines 便捷的管理配置,schemas、WSDL等,并可以集群。

At Galaxy’s core is an artifact and metadata repository which can store whatever you want in it. Mule configurations, WSDLs, schemas, WS-Policy documents, etc are all recognized by Galaxy out of the box and it can store unrecognized artifacts like zips or jars too (although soon these will be recognized). Galaxy allows you to manage your artifacts by versioning them and organizing them into workspaces.

 

  Galaxy的核心是一个组件和元数据的服务库,可以存储任何你想存储的。组件可以是:Mule配置、wsdl、schemas、WS-Policy文档等等,也可以存储暂时不识别的组件比如zip或者jar格式 。你可以通过版本管理你的组件,并把它们组织到你的workspace工作空间中去。

 

The magic starts to happen with the layers on top though.

 

Indexing : Galaxy includes the ability to index artifacts and extract metadata from them for easy searching. For instance, I can search for Mule configurations with a mule service or a WSDL with a particular portType or for policies which should be applied globally or for an xml schema with has element Foo inside it.

You can also build your own indexes with XPath or XQuery expressions which is quite handy.

Metadata: You can associate any type of metadata that you want with an artifact and search on it.

Galaxy query language : Galaxy has an SQL-like syntax for querying artifacts based on their metadata and content. For instance you could do:
  ...

  索引:Galaxy可以对组件 建立索引并提取他们的元数据,以便于检索。例如,我可以搜索某个mule服务的配置、或者某个特定portType 的wsdl、或者一个全局的策略、或者是一个具备元素Foo的xml schema。

你也可以使用XPath 或 XQuery表达式很方便的构建自己的索引。

  元数据:你可以把任何类型的元数据关联到组件,并以其为依据做检索。

  Galaxy查询语言:Galaxy具备一种类SQL的语法语言,用于查询组件,查询依据是组件的元数据及其内容。例如你可以这样查:

select artifact where mule.descriptor = 'HelloWorldUMO'
select artifact where wsdl.portType = 'HelloWorldPortType'

select artifact from '/Policies/Global' where documentType = {http://www.w3.org/2006/07/ws-policy}Policy

 

Policy Enforcement : The ability to apply enforce policies across artifacts in the repository. For instance, included is support for policies which: 策略强化:在服务库中的组件中应用强化策略,例如:

  • Enforce WS-I BasicProfile compliance on your WSDLs 对你的WSDL强化WS-I BasicProfile兼容性
  • Require that Mule configurations only use SSL encrypted endpoints 需要mule配置仅适用ssl加密端点
  • Enforce WSDL backward compatability 强化wsdl的向后兼容性
  • And of course the ability to extend it and write your own.

Dependency management : See who is consuming your artifacts so that you may make informed decisions about the future development of them.

  依赖管理:查看谁正在消费你的组件,这样你可以决定未来的开发路线。

 

Lifecycle management : Galaxy provides some workflow-like features so that you can take appropriate actions at various points in an artifact/service’s lifecycle.

  生命周期管理:Galaxy提供了类工作流的特性,使你可以在一个组件/服务的不同生命周期点上采取合适的动作。

 

Integration : Included is integration with a number of open source products including Mule, Apache CXF and Spring. With Mule you can discover and find your necessary configurations – all you need is a URL which queries Galaxy to boot Mule. With CXF you can build a set of runtime policies and apply them to your services. We’re also working on building out a number of other plugins including one for Microsoft’s WCF framework which will be released soon.

AtomPub API: So if you were all wondering what got me started on AtomPub, this is it. We represent workspaces, artifact version histories and comments as AtomPub collections. Artifacts can be queried with AtomPub using the above query language (http://host/api/registry?q=select artifact ….).

To read more about how we represent artifacts and their metadata using AtomPub, check out this page .

And of course we use Apache Abdera Galaxy河汉 More on this topic later as I have a lot of thoughts about the strengths and limitations of AtomPub in this scenario.

  集成:我们集成了Mule、CXF、Spring,你可以发现、检索你的mule配置——你只需要一个URL 来通过Galaxy启动Mule。使用CXF,你可以构建一系列运行时策略并应用到你的服务,我们也构建了一些其他的插件,比如一个Microsoft’s WCF框架,即将发布。

  AtomPub API: 我们有工作空间workspaces概念,组件版本历史遗迹注释来作为AtomPub集合,组件可以通过AtomPub来查询,使用以上的查询语言 (http://host/api/registry?q=select artifact ….)。这里有更多信息:this page . 当然我们还使用了Apache Abdera Galaxy河汉 More on this topic later as I have a lot of thoughts about the strengths and limitations of AtomPub in this scenario.

 

 

Feedback

We have a number of other cool features planned for the near future as well. But just as importantly we need your feedback. Please check it out and let us know what you think. What would convince you to deploy this inside your organization? What governance features are you looking for (if any)?

For more information see:

  • Feature overview
  • Screenshots
  • User’s guide
  • Downloads

 

第二篇:

《JCR and AtomPub》

Now that Galaxy is announced, I can unleash my fury of blogging again. Or, as we all know will probably happen, I can blog just slightly less sporadically again.

One of the recent posts I’ve wanted to comment on is Atom is the New JCR (prompted by Sam Ruby ). Adrian Sutton writes:

“When the Java Content Repository (JCR) standard first came out it was supposed to bring in a new era of compatibility between content repositories and put an end to the content silo. There was, and still is, a lot of talk about it and just about everyone added JCR compliance to their marketing materials. Unfortunately, that’s mostly where things stopped – the implementation work that followed was generally done was buggy or incomplete and the only viable JCR implementations that I’ve seen have come out of Day Software, who lead the JCR spec effort.”

Galaxy已经发布了

最近想说的是关于:Atom成为了新的JCR(Sam山姆推进),Adrian写到:

“当java内容库(JCR)标准首次亮相,它的愿景是要开创一个新纪元:改进内容库间的兼容性。但是目前大家都受阻于对JCR兼容的工作...”

 

We use JCR inside Galaxy for all our storage needs at the moment. Using it has been an interesting experience to say the least. One of my favorite “features” of JCR has been the fact that you can not have two seperate threads create a child node with the same name at the same time. Which means in our activity log, we can’t add two nodes called “/activity” to “/activities” at the same time.
The main reason we decided to go with JCR is that it supports both simple database type data and file type data via the same interface transparently. I’m not 100% sure it was the right choice though. I had to write an ORM like framework as the one in Jackrabbit seemed pretty immature and I didn’t have time to delve into the rabbit hole of the jcr-mapping module in Jackrabbit. Mine is limited but as least I could figure out how to use it. We’ll be reevaluating this for the future though now that Jackrabbit 1.4 is nearly out.

我们在Galaxy中使用了JCR,用于所有的存储,这是个有趣的体验!我最喜欢的JCR特性是你”不能用两个单独线程同时创建同名子节点“,也就是说在我们的活动日志中我们不能为“/activities”添加两个“/activity”节点。我们采用JCR 的主要原因是因为它即支持简单数据库类型数据也支持文件类型数据,都是通过相同的接口来透明地做到的,虽然我不是很确定这是正确的选择。...Jackrabbit...

 

Adrian continues:

Then along came Atom which is all about remote access and manipulation of data and missing probably 90% of the functionality that JCR offers. It really isn’t a competitor to JCR at all and yet it’s doing more to break down content silos than JCR ever has. Atom support isn’t just being added to the marketing materials, it’s actually shipping and is usable in a lot of places – IBM’s Lotus Connections has Atom APIs to everything and, as best I can tell, only Atom APIs to it’s repository.

 

 

Adrian继续写道:

  “Atom出现了,它是用于远程访问及数据操作,丢掉了90%的JCR功能。它确实不是和JCR同等定位的东西,它比JCR做了更多的内容分解..."

 

I completely agree that JCR isn’t very worthwhile as something that will break down content silos. It does have value as an API to work with data though. Atom is quite limited in the granularity it can work with data (which coincidentally is one of the reasons Web3S exists as well). And you still need to store your data somewhere.

Atom has not replaced JCR it has supplemented it. We use JCR as a content store for Galaxy. I’ve also written a generic JCR content store for AtomPub inside of Abdera. Sure, the vendor promises are probably wrong about the content-silos, but it sure simplifies some things when writing applications – which is what really counts!

Update: David Nuescheler has written a great follow up to this whole discussion.

Also, Jackrabbit 1.4 is out . 

 

我完全同意JCR不是非常值得as something that will break down content silos,作为API来处理数据它确实是有价值的,Atom所能处理的数据 的力度是很有限的(这正巧是Web3S 还存在的原因),你仍然需要存储你的数据,无论存在哪儿。

Atom不是替代JCR而是补充它!,我们使用JCR作为Galaxy的内容仓库,我也为Abdera内的AtomPub写了个通用JCR内容存储,当然,供应商对content-silos的许诺或许是错的,但是确实简化了很多事。