写点什么

Mark Pollack 谈论 Spring 和 Spring.NET

  • 2008-02-12
  • 本文字数:1373 字

    阅读完需:约 5 分钟

Spring.NET 的创始人 Mark Pollack 谈论了在 Java 与.NET 社区之间共享思想和 Spring.NET 的历史。他还说到了如何使用依赖注入和 AOP 来提供日志以外更多的功能,以及 Spring.NET 与 WCF 所重叠的地方。

JAOO 上的采访之外,我们还针对最近 Spring.NET 1.1 的发布进行了一次简短的问答。

很多.NET 的开发者都对 Spring.NET 有点陌生。你能给我们介绍一下这个项目,解释一下它背后的一些历史吗?

Spring.NET 是一个开源的应用程序框架,它可以简化构建企业级.NET 应用的工作。虽然这是所有应用程序框架所致力追求的目标,但 Spring.NET 是建立在 Spring 框架所使用的模式和编程模型的基础之上的,而后者已经为我们带来了很多实实在在的利益。我在 2003 年使用 Java 开发金融服务行业的一些项目时,对 Spring 的作用有了切身体会。我最开始所感受到的好处之一是,它可以很容易地创建松耦合的应用,于是我的应用无论是单元测试还是集成测试都很方便。第二点直接的收益就是我的代码可以更加关注于业务概念。很多底层架构的问题——例如配置和事务管理——都在 Spring 中得到了漂亮的解决,我无须在业务类中自己写这些代码了。最后,处理底层数据库 API 也会带给人锥心的疼痛,Spring 提供了一个非常出色的帮助类库,编写数据访问代码就容易了很多。

在这个版本中有很多新特性。从可以快速得到收益的角度来讲,你觉得哪一处是对新用户最有吸引力的呢?

我在 2004 年初开始接触.NET 开发,而后很快就确认了我的直觉,也就是 Spring 所提供给 Java 的一切在.NET 中依然有价值。从本质上来讲,Spring 包装了很多最佳实践,然后让它们可以很容易得以应用。通常来讲,最佳实践和相关联的模式是可以在不同技术之间进行移植的。在四人帮那本书里面所提到的单实例模式是用 C++ 开发的,但这并没有影响这种模式在 Java 或者.NET 的世界中放出应有的光芒。然后我就启动了 Spring.NET,希望通过它可以把 Spring 的种种益处带给.NET 社区。从大范围来看,Spring 的好处主要是两点,第一是通过依赖注入来配置应用,第二是使用面向方面编程来帮助解决底层架构中的一些问题,例如声明式事务管理。综合使用这两种技术可以让你收获累累硕果。正因如此,Spring.NET 最早开发的特性就是依赖注入和 AOP 框架,它们在 1.0 版中已经发布了。其他一些着重于解决 Web 层和中间层的一些特定问题的特性放在了 1.1 版中。

这一版本为那些早已开始使用 Spring.NET 的开发者带来了什么?

1.1 版中最受欢迎的特性之一就是为 ASP.NET 开发提供的 Web 框架。这个框架最基本的功能就是让你可以通过依赖注入来配置页面,user controls,providers 等等。它同时还提供了强大的数据双向绑定和验证,胜于 ASP.NET 自带的功能。这些功能满足了常见的需求,而且开发者通常最后都需要自行开发出来作为内部框架的一部分。另一个主要的新特性是在一个 aspect library 中提供的声明式事务管理和其他 aspects。目前在.NET 领域中存在一处欠缺,那就是执行声明式事务管理,尤其是当你只有一个数据库,不想调用 MS-DTC 的时候。这个 aspect library 提供了很多 aspects,可以即取即用。其中,retry aspect 算是特别有用的一个。它可以贯穿所有的 WCF 客户端代理类,或是其他客户端远程代理,所以如果一个远程方法调用时抛出了异常,这个方法可以被重试多次。

查看英文原文 Mark Pollack on Spring and Spring.NET

2008-02-12 03:201599
用户头像

发布了 197 篇内容, 共 63.7 次阅读, 收获喜欢 21 次。

关注

评论

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

使用Perf和FlameGraph进行系统性能分析

wong

flamegraph perf

车联网平台搭建从入门到精通 01|车联网场景中的 MQTT 协议

EMQ映云科技

车联网 物联网 通信 mqtt 平台搭建

火山引擎 MARS-APMPlus X 美篇 | 形成应用性能全面监控,大幅提升APP稳定性

字节跳动终端技术

字节跳动 APM 性能监控 应用性能监控产品 火山引擎MARS

边缘计算加速视频直播场景:更清晰、流畅、实时

火山引擎边缘云

边缘计算 视频直播 异构算力

数据分析实际案例之:pandas在泰坦尼特号乘客数据中的使用

程序那些事

Python 数据分析 pandas 程序那些事 2月月更

当 TiDB 遇上 Flink:TiDB 高效入湖“新玩法” | TiLaker 团队访谈

PingCAP

平安科技从 Oracle 迁移到 UbiSQL 的实践

PingCAP

GPU在Kubernetes中的使用与管理 | 社区征文

大菠萝

新春征文

[建造者模式实战]如何用JAVA实现一个基于POI的复杂表格导出工具类?

山河已无恙

Java 2月月更

《新程序员》杂志|李鹏辉谈开源云原生消息流系统

Apache Pulsar

开源 架构 云原生 中间件 Apache Pulsar

独家交付秘籍之招式拆解(第一回)

阿里巴巴云原生

阿里云 云原生 应用交付

EdgeDB 架构简析

CRMEB

恒源云(GpuShare)_AIphaCode是否能取代程序员?

恒源云

深度学习 AI transformers

云效Flow如何实现阿里云ECS多环境发布

阿里云云效

阿里云 运维 云原生 软件开发 研发

K8s Ingress Provider 为什么选择 MSE 云原生网关?

阿里巴巴云原生

阿里云 Kubernetes 容器 微服务网关 云原生网关

会声会影剪辑视频教程讲解

懒得勤快

Web Components 系列(八)—— 自定义组件的样式设置

编程三昧

前端 组件化 2月月更 WebComponent

Go 语言入门很简单:基准测试

宇宙之一粟

Go 语言 2月月更

数智时代,谁都做平台,谁都做生态!这行吗?

海比研究院

解构流存储 — Pravega,与 Flink 构建端到端的大数据流水处理线

Apache Flink

大数据 flink 开源 编程 实时计算

网络安全kali渗透学习 web渗透入门 DDOS的原理和防护

学神来啦

FinClip 的 2021 与 2022

FinClip

产品设计与思考

技术人聊开源:这并不只是用爱发电

SOFAStack

开源

跨平台应用开发进阶(一) :走近 uni-app

No Silver Bullet

uni-app 跨平台 实战 2月月更

11种绕过CDN查找真实IP方法

喀拉峻

网络安全

Ti-Click:通过浏览器快速搭建 TiDB 在线实验室 | Ti-可立刻团队访谈

PingCAP

JAVA 那些事 - 聊聊那些易混淆的概念:JVM/JRE/JDK,openJDK/oracleJDK,JAVA SE/JAVA EE/Jakarta EE

明哥的IT随笔

jdk Openjdk Java EE

Spring Boot Serverless 实战系列 | 性能调优

阿里巴巴云原生

spring 阿里云 Serverless 云原生 框架

焱融科技加入中国通信工业协会人工智能专业委员会,共创数智新未来

焱融科技

人工智能 云计算 分布式 高性能 文件存储

服务网格在联通的落地实践

百度开发者中心

Mark Pollack谈论Spring和Spring.NET_.NET_Jonathan Allen_InfoQ精选文章