在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

在你每天的工作中使用非.NET 库好么?

  • 2008-11-30
  • 本文字数:1133 字

    阅读完需:约 4 分钟

从一开始,.NET 栈就对不受管理的库提供了一流的支持。通过使用 P/Invoke,开发者可以访问大多数的 Win32 API,同时还能获得 COM 支持以访问大量的应用和第三方库。随着近期动态语言运行时的不断发展,使用 Python、Ruby 及 JavaScript 编写的脚本也加入进来了。

但.NET 开发者应该这样做么? Clint Hill 说:不

这项工作很棒而且工具也在不断改进着。.NET 来了,这真令人感到兴奋。但 6 年过去了,兴奋的感觉却在不断消褪。整个文化开始变得有点疯狂了。这种文化的一个原则(从广义上来说,我使用了原则)是你所用的所有组件都必须从.NET 继承下来。也就是说如果你需要一个 Web 控件库,那么它必须是个.NET C#库,因为你正使用它来构建项目。如果这个库不是免费的,或者是花钱也买不到,那你只能自己去构建了。

这会导致一些问题,往小里说会导致项目开发速度变慢以致延期。往大里说会导致开发者不再相信其他的技术了,无论这些技术是如何完美的解决问题的。现在我对这种情况感到非常失望。

Clint 将这些问题一股脑儿的回复给了畅销书作者 Jeff Atwood 所发布的一篇博文。Jeff 与知名作者 Joel Spolsky 现在正从事于一个名为 Stack Overflow 的论坛。当他们想清理其站点的 HTML 时,Jeff 对现有的库都不太满意。他的原因是:因为他们不是用.NET 编写的

我花费了整整一周的时间为 Stack Overflow 构建了一套 HTML 清理函数,我会对此感到后悔么?肯定会的。在.NET 生态圈外有大量的清理解决方案,但针对 C#或 VB.NET 的却少之又少。我已经将核心代码贡献给社区了,所以未来的.NET 冒险家们可以将我们的代码作为其旅途上的路标了。他们可以从我们编写的简单、常规的代码中学习,然后将其继续用在 Stack Overflow 上。

Dare Obasanjo 解释了通常情况下这为什么不是一个好办法

Jeff 尝试解决的问题是允许 HTML 标签的部分子集而排除其他的标签以避免跨站点脚本(XSS)攻击。Jeff 的解决方案的问题(社区中的很多人包括 Simon Willison 都已经指出了)在于他使用了正则表达式来过滤 HTML 输入,这种方式会假设你所得到的 HTML 都是格式良好的。而这时问题就来了,正如很多开发者所指出的那样,你不得不考虑由于很多现代的 Web 浏览器自由的 HTML 解析方式所产生的不规则 HTML。这样如果你不想将貌似安全实则有风险的 HTML 存储起来,那你就必须对常用浏览器所处理的每个 HTML 进行反向工程。这样,要想使用这种方法,Jeff 真的应该考虑使用功能更加完善的 HTML 解析器,如 SgmlReader 或者 Beautiful Soup 而不是正则表达式。

这场争论不仅仅只是关于 HTML 清理,它还触及到了.NET 文化的核心。对于.NET 开发者来说,在你每天的工作中使用非.NET 库好么?

查看英文原文: Is It Appropriate to Use Non-.NET Libraries in Your Day to Day Work?

2008-11-30 20:56594
用户头像

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

关注

评论

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

滴滴数据通道服务演进之路

Kafka中文社区

云原生时代,需要什么样的数据库?

博文视点Broadview

10个Node.js 开发人员必须使用的IDE

编程江湖

node.js

PingCAP x 亚马逊云科技,为 TiDB 云端体验“加冕”

PingCAP

kafka丢失和重复消费数据

编程江湖

大数据 kafka

饿了么资深架构师分享云上基础架构演进

阿里云弹性计算

云上架构 运维峰会

react源码解析18事件系统

buchila11

React

完蛋,我的事务怎么不生效?

秦怀杂货店

MySQL 数据库 事务 事务失效

PassJava 开源 (九) :Spring Cloud 整合 Gateway 网关

悟空聊架构

SpringCloud Gateway passjava 悟空聊架构

版本不兼容Jar包冲突该如何是好?

vivo互联网技术

jar Java 开发

Soul运维总监尤首智:企业如何从0到1建设云上运维体系

阿里云弹性计算

阿里云 云上架构 运维峰会

一文带你了解数据库连接池的必要性

编程江湖

数据库 JAVA开发

技术揭秘!百度搜索中台低代码的探索与实践

百度Geek说

中台 后端 低代码 搜索

Golang协程之了解管道的缓存能力

恒生LIGHT云社区

Go golang

Arctic:网易数帆开放式流批一体表服务 | BDTC 精彩回顾

网易数帆

大数据 数据湖 iceberg 流批一体 Arctic

SpringBoot应用和PostgreSQL数据库部署到Kubernetes上的一个例子

汪子熙

Kubernetes k8s 28天写作 docker build 12月日更

迭代你好,我是冲刺

华为云开发者联盟

Scrum 开发 迭代 冲刺 迭代增量开发

智算未来 | 2021新一代人工智能院士高峰论坛智算网络分论坛成功举办

OpenI启智社区

初探语音识别ASR算法

华为云开发者联盟

算法 语音识别 ASR 语音转写文章 声学模型

教你Python字符串的基本操作:拆分和连接

华为云开发者联盟

Python 连接 字符串 拆分 拆分字符串

面试被问一致性hash?看这一篇就够了

公众号:程序猿成神之路

【转】java开发之spring面试题

@零度

JAVA开发 spring框架

大数据开发Hive之如何进行数据抽样

@零度

大数据 hive

OPPO小布助手算法系统探索、实践与思考

安第斯智能云

算法

网络安全好学吗?网络安全入门篇,安装渗透测试系统kali全套教学

学神来啦

运维 网络安全 渗透测试· kali基础 kali Linux

最强最全面的大数据SQL系列

五分钟学大数据

sql 大数据 hive

基于流程管理,提高工作质量和效率

流程管理

性能分析之Linux系统平均负载案例分析

zuozewei

Linux 性能分析 12月日更

给弟弟的信第26封|做一个懂得感恩的人

大菠萝

28天写作

共筑AI开源繁荣生态 | 新一代人工智能院士高峰论坛深度学习框架分论坛成功举办

OpenI启智社区

在你每天的工作中使用非.NET库好么?_.NET_Jonathan Allen_InfoQ精选文章