代码改变世界

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

2010-09-03 10:44  Dream Weaver  阅读(404)  评论(0编辑  收藏  举报
g JavaConfig, Tibco, SpringIntegration, ASP.NET, Spring.NET, Visual Studio, NUnit, MSTest, ADO.NET, 面向方面编程(AOP)

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

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

    集成微软测试框架——正如现有的对NUnit的支持一样,Spring.NET现在可以对微软测试框架中的类进行依赖注入与事务管理。 TIBCO EMS支持——Spring.NET增加了几个类以提升生产率,为TIBCO EMS消息提供了基于Plain Old C# Object(POCO)的编程模型,这与Spring对Java JMS的支持是一样的,还补充了对现有的ActiveMQ和MSMQ的支持。 增强的NVelocity支持——极大地简化了对NVelocity引擎的配置。 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所提供的特性等。