写点什么

在你每天的工作中使用非.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:56562
用户头像

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

关注

评论

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

如何选择合适的体育场馆用LED显示屏

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

低代码软件开发平台怎么选?

优秀

低代码开发 低代码平台

服务器运维需要24小时在线吗?需要周末加班吗?

行云管家

服务器 IT运维

汇聚开发者智慧 夯实数据库产业根基

科技热闻

医院怎么实现高效低成本运维?有什么软件可以满足吗?

行云管家

运维 IT运维 医院运维

Python图像处理丨三种实现图像形态学转化运算模式

华为云开发者联盟

Python 人工智能 AI 图像形态学

如何在Docker部署安装ETL调度运维工具TASKCTL

敏捷调度TASKCTL

DevOps 大数据运维 Kafka ETL TASKCTL Docker 镜像

AIOps 还是 APM,企业用户应如何作出选择?

云智慧AIOps社区

APM 智能运维AIOps

前端之路React学习笔记

恒山其若陋兮

7月月更

用代码画时序图!简直太爽了

冉然学Java

Java 代码 UML

React原理学习路线

郭明

如何做好安全开发?

华为云开发者联盟

云计算 开源 安全 开发

IT小白也能轻松get日志服务---使用Nginx模式采集日志

云端explorer

nginx 运维 日志服务

京东云联合Forrester咨询发布混合云报告 云原生成为驱动产业发展新引擎

京东科技开发者

云原生 数字化 科技 混合云 多云

ABAP-EXCEL上传下载

桥下本有油菜花

abap ABAPexcel

消息中间件

Damon

7月月更

2022年中国娱乐直播市场年度综合分析

易观分析

直播市场

直播预告 | 多云时代如何建设企业云管理平台?

BoCloud博云

cmp 云管理平台 云管理

LabView实验——温度检测系统(实验学习版)

一碗黄豆酱

云图说丨数字资产链:您的数字资产产权保护神

华为云开发者联盟

区块链 云计算 开发 开发工具

LabView中禁用模块(属性节点)

一碗黄豆酱

发现增长新动力,企业到底需要一朵什么样的云?

ToB行业头条

数据仓库开发 SQL 使用技巧总结

C++后台开发

MySQL 数据库 sql 中间件 后端开发

不是我说,不掌握这些坑,你敢用BigDecimal吗?

程序员小毕

Java 程序员 面试 后端 BigDecimal

Ampere Altra Max 提供可持续的高分辨率 H.265 编码

亚马逊云科技 (Amazon Web Services)

编码 Tech 专栏

LabView---信号发生器

一碗黄豆酱

短视频直播系统源码

开源直播系统源码

短视频源码 直播系统源码 短视频直播系统

可以 DIY 装修的商城系统,你也能拥有!

CRMEB

实操演示:如何用 ONES 制定 Scrum 迭代计划?

万事ONES

一文了解 Nebula Graph 上的 Spark 项目

NebulaGraph

spark 图数据库 知识图谱 NebulaGraph

李宏毅《机器学习》丨3. Gradient Descent(梯度下降)

AXYZdong

机器学习 7月月更

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