AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

微软校园大使喊你来秋招啦!

DawnMagnet

小程序容器+自定义插件,可实现混合App快速开发

Speedoooo

小程序 插件 APP开发

leetcode 204. Count Primes 计数质数 (Easy)

okokabcd

LeetCode 算法与数据结构

有点奇怪!访问目的网址,主机能容器却不行

华为云开发者联盟

云计算 主机 云网络 后盾

Godaddy域名解析速度慢问题以及如何使用DNSPod解析解决

CtrlX

Hexo 域名解析 DNS服务器 域名配置 8月月更

dvwa 通关记录1 - 暴力破解 Brute Force

Todd-Lee

渗透测试 DVWA

彻底透彻Docker常用网络模式及应用场景

知识浅谈

开源 8月月更

为你的“架构”安排定期体检吧!

凌晞

构架 软件架构治理 架构治理

开源一夏 | 手撸代码,Redis发布订阅机制实现

知识浅谈

开源 8月月更

面试突击70:什么是粘包和半包?怎么解决?

王磊

Java 面试题

如何看待腾讯云数据库负责人林晓斌借了一个亿炒股?

雨果

DaaS数据即服务

经验共享|在线文档协作:企业文档处理的最佳选择

Baklib

Database Plus 的云上之旅:SphereEx 正式开源 ShardingSphere on Cloud 解决方案

SphereEx

数据库 ShardingSphere SphereEx #开源

Linux性能调优之内存负载调优的一些笔记

山河已无恙

签约计划第三季

Android编译系统初探

桑榆

8月月更

升哲科技携全域数字化方案亮相2022全球数字经济大会

SENSORO

人工智能 大数据 物联网 数字经济

空间数据库开源路,超图+openGauss风起禹贡

这不科技

opengauss

如何给 UE4 场景添加游戏角色

HelloWorld杰少

c++ 游戏 UE5 8月月更

使用常见问题解答软件的好处有哪些?

Geek_da0866

C++内存分区模型分析与实例以及扩展

CtrlX

c++ 前端 程序员进阶 后端、 8月月更

让你10分钟就能看懂Linux文件权限(超级详细、超级简单!!!)

Albert Edison

Linux centos linux 文件权限控制 8月月更

SENSORO成长伙伴计划 x 怀柔黑马科技加速实验室丨以品牌力打造To B企业影响力

SENSORO

品牌 产业生态 创新生态

【LeetCode】设计食物评分系统Java题解

Albert

LeetCode 8月月更

突破边界,华为存储的破壁之旅

脑极体

关于解决Hexo常见报错的处理以及上传时出现errorSpawn错误的详细说明

CtrlX

Hexo Blog 报错 博客搭建 8月月更

Java中的引用

flow

签约计划第三季

SRv6 L3VPN的工作原理

穿过生命散发芬芳

8月月更 SRv6

不要再使用MySQL online DDL了

Qunar技术沙龙

使用JDK的同步容器时,应该避免那些坑

华为云开发者联盟

后端 开发 华为云

企业公众号文章写作方向:如何写出读者认可的优质内容

石头IT视角

【SeaTunnel】从一个数据集成组件演化成企业级的服务

Apache SeaTunnel

大数据 微服务 数据处理 数据集成 大数据 开源

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