软件随想录(local.joelonsoftware.com/wiki)-2002年04月11日 我们的.NET策略 - Our .NET Strategy

2002年04月11日 我们的.NET策略 - Our .NET Strategy

 

The Joel on Software Translation Project:我们的.NET策略

From The Joel on Software Translation Project

我们的.NET策略

作者:周思博 (Joel Spolsky)
译:Paul May 梅普华
Thursday, April 11, 2002
属于Joel on Software, http://www.joelonsoftware.com

以下是我目前对Fog Creek内渐进移到.NET开发工具的想法。

现状:CityDesk大部份是用Visual Basic 6.0写的,小部份则是用Visual C++ 6.0。FogBUGZ大多是用VBScript for ASP写,小部份是用C++。几乎我们所有的内部工具和我们的web呈现(Fog Shop,讨论区等等)都是用VBScript for ASP。

为什么要要操心移完全到.NET嘱?简单说是因为.NET是目前为止最出色而且生产力最高的开发环境。ASP.NET真的让web应用程序写起来容易得不可思议;过去这几天我已经以出奇的高速写出几个内部用的应用程序。各种苦工杂事(如表格验证及错误报告)在用ASP写web应用程序时会耗去75%的时间,在ASP.NET却变成轻松的小事。ASP.NET的生产力远远超越ASP,其间的差别就像Java和C一样。了不起。

C#有很多Java的优点,还有一些小的改进如自动的boxing。虽然我们过去用ASP和VB6时总是尽量写出相当面向对象的程序,不过移到C#还是不错的。

最后是.NET所附的类别程序库真的很好。事实上由资料存取到web开发再到GUI开发,每样东西都重新设计过,所以由上到下到难以置信的协调。举例来说,当你检视原本的Win32 API,就会惊讶由函数呼叫取得字串竟然有那么多种方法。每隔两年他们就会改变主意认为另一种方法比较好。.NET把这些问题全部清掉了。我很高兴现在有一个ASP.NET日历构件(widget)可以用,它会产生由月历选一个日期的HTML码,而且可以放心那个东西传回的日期类别(我相信是System.DateTime)和SQL Server类别所用的日期类别一样。你大概不会相信,以前我们浪费了多少时间去针对SQL叙述调整日期格式,或是把COleDateTimes转成其他日期时间格式。再来终于出现了!一个到处都可以用的字串类别!我上星期才在写一段ATL程序在BSTR、OLECHAR、char *、LPSTR还有其他乱七八糟的类型间转来转去。真是大解脱啊。

好吧,我承认,.NET违反了绝不要从头重写的规则。微软有两个条件可以这样做。首先他们有全世界最好的程序语言设计者,过去20年间软件开发的生产力提升,有九成都是这个男人贡献的。他是Anders Hejlsberg,赐予我们Turbo Pascal(谢谢你!)、Delphi(谢谢你!)、WFC(好尝试!)和现在的.NET(把球打出场啰!)。其次是他们有本钱投入了无数工程师在这上面做三年,这期间他们的竞争力或多或少都会被延误到。记住,微软可以做并不表示你也能做。微软创造他们自己的重力。正常的规则是对他们无效的。

有些人现在会开始写些气愤的信赞扬其他环境,或是质问我为什么不用可以写一次到处用(窃笑)的Java,或者用Delphi(天才已经离开那里了。.NET就是Delphi 7.0,8.0,9.0)或Lisp或其他东西。他们会说我已经被锁在微软的卡车上了!可惜我现在没时间来讨论宗教,而且我也觉得讨论这东西很无聊。我才不在意就语言来说日文是否比英文更好。这根本就无关紧要。让我们继续谈完我们的策略。

第一个问题:我对.NET还没有懂到能写出好的程序代码。在任何开发环境中,要做某件事时通常都会有很多方法,而我们连第一种方法都还没学会,更别提第二种方法了。所以我们写出的.NET程序代码品质还没有好的能当产品推出。Bill Vaughn第一本谈ADO的书出来之前,我们连基本SQL查询的最佳作法都不知道呢。所以我们最优先的事是教育,方法是用.NET来制作往后所有内部用的软件和web程序(基本上就是没有人会付钱的软件)。我们可以把部份的Fog Shop移到.NET,各种内部的东西一定会用.NET。(今天我用ASP.NET写了一个FogShop优待卷产生器。写得一团乱不过会动!)

第二个问题:肥大的20 MB CLR (runtime)。8 MB的CityDesk下载文件里有6 MB来自执行时期程序库和资料存取程序库,已经是够惨了;我们绝不可能期望每个CityDesk Starter Edition使用者另外再下载20 MB的东西。只能希望一年或两三年后很多人由其他地方拿到CLR了(Windows XP没有附真是太惨了)。我们会注意状况;它以往都会改掉你的user agent;希望现在还是一样,这样我们就能拿到统计资料。

底线是现在不能把CityDesk或是FogBUGZ移植到.NET。当CLR普及率到75%时我们就会移植CityDesk的未来版本。计画如下:

    1. 用微软的转换工具移植现有的程序代码和表单
    2. 先用暴力法修正问题,直到能动为止
    3. 用C#建立新表单及类别
    4. 以渐进方法,在旧的表单及类别一定得大改时移植到C#
    5. 很多旧表单和类别只要还正常动作,就会永远维持在VB.NET(使用丑陋的向后相容字串函数等等)

FogBUGZ也需要等CLR在服务器电脑的普及率变得更高;我们必须对我们的客户进行调查,看看如果FogBUGZ要用CLR时状况会有多糟。

我们有另一个正在开发但还不能公开讨论的产品;这个产品和FogBUGZ共用了很大量的程序代码(一个我们称之为"Dispatcho"的子集合),所以在我们移植FogBUGZ之前都还是用VBScript/ASP。

至于FogBUGZ/Dispatcho/秘密新产品,计画如下:

    1. 等到需要CLR也不会出问题的时候,
    2. 把现有的「商业逻辑」类别移植到C#,
    3. 现有的web表单还是维持用ASP,
    4. 用ASP.NET建立新的web表单。

讨论

这些网页的内容为表达个人意见。
All contents Copyright © 1999-2006 by Joel Spolsky. All Rights Reserved.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值