写点什么

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

  • 2010-02-15
  • 本文字数:2450 字

    阅读完需:约 8 分钟

近日 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

2010-02-15 01:322048
用户头像

发布了 88 篇内容, 共 254.4 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

固定QPS压测模式探索

FunTester

性能测试 测试框架 压力测试 QPS FunTester

饿了么4面(Java岗)面经分享,Java技术专家需要掌握的技能

Java 程序员 后端

评审通过,开建!

浪潮云

云计算,

内部岗位竞聘报告PPT模板-优页文档

momo

模板 T模板 优页文档

JVM内存模型学习笔记(一)

风翱

9月日更 JVM内存模型

什么是主数据

奔向架构师

主数据 9月日更

消息队列存储消息数据的 MySQL 表格设计

tjudream

数据库 索引 消息队列 架构训练营 表结构设计

Golang 入门指南

baiyutang

编程 程序员 Go 语言 9月日更

医疗保健服务宣传和医疗咨询服务PPT模板-优页文档

momo

PT模板 优页文档 优页文档PPT模板

网络攻防学习笔记 Day139

穿过生命散发芬芳

9月日更 网站安全基础

关于微服务系统中数据一致性的总结

看山

微服务 后端 数据一致性 引航计划 数据自洽

非科班程序员求职经历分享,Java面试知识点

Java 程序员 后端

1行代码爬CSDN热榜,Python哈啤酒式写法

梦想橡皮擦

9月日更

在线JSON转GraphQL工具

入门小站

工具

高并发下HashMap的死循环是怎么形成的,Java自学宝典pdf

Java 程序员 后端

手撸二叉树之层序遍历

HelloWorld杰少

9月日更

Vue进阶(幺贰零):父组件获取子组件验证结果

No Silver Bullet

Vue 9月日更

年终总结誓师大会PPT模板-优页文档

momo

模板 优页文档

饿了么4面(Java岗)面经分享,如何在面试中通过工厂模式来给自己加分

Java 程序员 后端

高并发下HashMap的死循环是怎么形成的,熬夜整理Java高频面试题

Java 程序员 后端

Prometheus 2.21.0 新特性

耳东@Erdong

release Prometheus 9月日更

近期焦虑有感

Nydia

护士礼仪培训PPT模板-优页文档

momo

模板 PT模板 优页文档

非科班程序员求职经历分享,阿里P7亲自教你

Java 程序员 后端

高并发下HashMap的死循环是怎么形成的,Java基础知识点汇总

Java 程序员 后端

护理业务查房PPT模板-优页文档

momo

PT模板 T模板 优页文档

linux之rpm命令

入门小站

Linux

19. 今天的人工智能还不能做什么?

数据与智能

人工智能

【Flutter 专题】43 图解 Flutter 适配 AndroidX

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

如何同时压测创建和删除接口

FunTester

性能测试 接口测试 测试框架 压力测试 FunTester

一种优于gzip的压缩方式Brotli

devpoint

9月日更 gzip Brotli

  • 扫码加入 InfoQ 开发者交流群
Spring.NET 1.3:VS.NET Solution Templates、MSTest支持及Spring Integration.NET_.NET_Ryan Slobojan_InfoQ精选文章