InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Spring.NET 1.3:VS.NET Solution Templates、MSTest支持及Spring Integration.NET

作者 Ryan Slobojan 译者 张龙 发布于 2010年2月15日

领域
架构 & 设计,
企业架构,
语言 & 开发
主题
消息传送 ,
.NET ,
企业架构
标签
ASP.NET MVC ,
Spring.NET ,
ActiveMQ ,
Visual Studio ,
面向方面编程(AOP) ,
Spring框架 ,
MSTest ,
Tibco ,
ADO.NET ,
NUnit ,
ASP.NET ,
Spring JavaConfig ,
SpringIntegration ,
AOP

近日Spring.NET Framework 1.3发布了。InfoQ有幸采访了Spring.NET项目的创建者与领导Mark Pollack以深入了解此次发布及其所带来的新特性,同时还谈到了新的Spring Integration.NET项目。

Pollack说此次发布有四大新特性:

  1. 集成微软测试框架——正如现有的对NUnit的支持一样,Spring.NET现在可以对微软测试框架中的类进行依赖注入与事务管理。
  2. TIBCO EMS支持——Spring.NET增加了几个类以提升生产率,为TIBCO EMS消息提供了基于Plain Old C# Object(POCO)的编程模型,这与Spring对Java JMS的支持是一样的,还补充了对现有的ActiveMQ和MSMQ的支持。
  3. 增强的NVelocity支持——极大地简化了对NVelocity引擎的配置。
  4. Visual Studio.NET Solution Templates——为VS.NET 2008增加了Spring.NET支持以及ADO.NET、NHibernate应用程序库和Spring Web应用的支持,此外还增加了ReSharper的类型完成与模板支持。

读者可以查阅完整的文档变化列表。虽说Spring 1.3可以直接替换掉以前的版本,但对于那些使用了其内部API的开发者来说还是需要注意某些变化

Pollack详细介绍了VS.NET Solution Templates,每个模板都提供了几个项目,其中包含了一个“主”业务逻辑项目和测试项目;同时每个解决方案都提供了样板配置文件以帮助使用者尽快上手Spring.NET。ReSharper模板简化了很多常见的编码与配置工作,比如Bean类型完成以及为Bean定义增加属性等。

Pollack还对Spring.NET与其他.NET框架进行了一番比较:

  • 不仅仅是个DI容器——虽然Spring.NET常被拿来与其他的DI容器如Castle等进行比较,但准确地说,Spring.NET是个应用框架,因为它具有丰富的API,可以用在整个应用中,如数据访问、Web开发和集成测试等等。
  • ASP.NET框架——Spring.NET ASP.NET框架并不是基于ASP.NET MVC的,它最大的好处是提升了生产率:新用户在探索DI和Spring.NET时常常会寻求某个ASP.NET框架。
  • 面向消息的中间件集成——与Apache ActiveMQ、TIBCO EMS及MSMQ的集成简化了使用这些框架的工作量,这是通过抽取出低层析的线程安全问题并使用基于POCO的编程模型实现的。
  • 面向方面的编程(AOP)——Spring.NET提供了一个可扩展的AOP框架,该框架包含了如切入点(pointcut)通知(advice)等概念,同时还提供了易于使用的通知实现,如日志异常转换参数验证缓存自动化的重试(retry)等等。
  • ADO.NET程序库——ADO.NET辅助程序库抽取并简化了ADO.NET的数据源操作,这是通过削减大量的样板代码并提供了基于模板的编程模型实现的。
  • 表达式语言——Spring.NET提供了一个表达式语言,可在运行期查询并操纵对象图。
  • 集成测试——支持集成测试以简化数据访问等操作。
  • 模块化——将特性分布在不同的DLL中,这样开发者就可以选取自己所需要的DLL而无需使用整个框架。
  • 企业支持——Spring.NET由SpringSource前不久被VMWare收购)出品。由于有了大公司的支持,这样那些想要使用Spring.NET的公司无疑吃了个定心丸。
  • 计划中的基于代码的容器配置——目前的Spring.NET只支持基于XML的配置,而Castle则支持XML和“类型映射”风格的API两种方式。在下一版中,Spring.NET将提供类似于Spring JavaConfig(已融合到了Spring 3.0中)的基于代码的配置方式。

读者可以浏览丰富的Spring.NET文档和为数众多的示例应用来学习Spring.NET。

在被问到对Spring.NET的未来打算时,Pollack说到:

我们计划继续开发Spring.NET 2.0并根据用户的反馈向其他领域进军。Kenneth Xu创建的Spring Threading for .NET已经取得了长足的进步。在Java“util.concurrent”包的鼓舞下,现在已经出现了很多线程辅助库,比如说客户化线程池、PriorityQueues、IFuture<T>以及其他超出“util.concurrent”包的程序库,这是.NET 4.0 Parallel类在.NET 2.0中的一个实现。众多的贡献者还在致力于开发.NET版本的Spring Security,由Andreas Dohring领衔的Spring Integration for .NET也取得了巨大的进步。

Spring.NET 2.0最重要的一个特性就是为DI容器提供基于代码的配置。更加通用的做法则是将核心DI容器与最近发布的Spring Java 3.0同步起来,同时提供一种基于属性(attribute)的方式来配置DI以及更多地使用Spring API所提供的泛型,这大部分都是Spring内部所采取的做法。其他领域就是ASP.NET MVC集成(至少对于DI来说)以及提升对基于Spring.NET应用操作的监控与管理。可用于Visual Studio中的工具是个普遍需求,但我们还不打算实现这个功能。我们正致力于简化Spring.NET和Spring Java应用之间的交互,这种交互应能够跨越各种分布式技术,如消息、Web Services和REST。

我们将在今年的第一和第二季度发布里程碑与RC版,之后就将发布正式版。Spring.NET与Spring Java代码基结构上的相似性使得我们能够很容易(虽然还是很耗时间的)地增加新特性并进行重构。此次采访还提及了Spring Integration.NET:

我们在该领域上所关注的内容与Spring Java项目是一样的,即提供一种编程模型以支持常见的企业集成模式,比如Channel、Router、Filter、Splitter、 Aggregator及Transformer等。Spring Integration.NET提供了一种嵌入式消息总线,可用在Spring应用中并通过适配器与外部系统集成。与Spring一样,Spring Integration.NET也提供了一个基于POCO的编程模型以简化可维护、可测试代码的编写工作。最初版本中所提供的适配器与当前的Spring Integration 1.0.3一样,比如文件、消息、邮件和Web Services等。然而我们还会提供更多特定于.NET的适配器,比如Windows Event Log和WCF P2P通道。在首个版本发布后,我们将增加更多特定于.NET框架的特性,如lambda表达式、扩展方法一级.NET 4.0所提供的特性等。

请参看InfoQ对Mark Pollack的采访以更多地了解Spring.NET 1.3和2.0。

查看英文原文:Spring.NET 1.3: VS.NET Solution Templates, MSTest Support and Spring Integration.NET

译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。