Mark Driver, Gartner公司研究部门的研究室主任,主要负责分析应用程序开发的战略、工具和技术。正如你所期待的,他现在的雷达屏幕仅仅关注最大的技术——.NET,他正在考虑许多与.NET相关的问题:它将成功、徘徊不前,还是走向失败?谁将开始使用它,什么时候使用它,和用何种语言?.NET的哪些方面最重要?XML Magazine的主编Steve Gillmor和我最近就.NET的前景问题对他进行了采访。下面是我们的采访实录:
让我们先有个总的看法。当IT从业者开始考虑.NET体系结构时,他们需要知道的最重要的三点是什么?
Mark Driver
首先,你应该理解.NET是一个新的平台,微软喜欢把.NET和COM+结合起来,.NET有优秀的、强大的与COM+交互的能力,但是它更是有效的、全新的平台。这就意味着它有自己的强项和弱点。
第二点,因为它的不成熟,为了交付一个完整的.NET方案,至少现在你需要把.NET和COM+组合起来。例如,在.NET中,现在还没有Microsoft Transaction Server(MTS)或者Microsoft Message Queue Server(MSMQ)的替代品,所有当你超出简单的ASP.NET应用程序时,.NET就不能单独胜任。
最后一点,.NET和Web Services紧密地连接在一起。你不能不了解Web Services概念就想使用.NET平台技术,其程度超过你没有学习面向对象概念就想开始面向组件编程。
从发布方面来说,IT从业者应该知道什么?
记住,这是1.0版本,这不是Visual Studio 7.0;这不是COM++++;这不是Visual Basic 7.0。十分确切的说,这是全新的。它和大量的新代码一起引进。你要特别仔细考虑如何计划.NET的采用。特别是在以后的24个月里。
然而,它里面包括许多很酷的东西。它弥补了和Java之间的巨大差距,在许多情况下,被证明比Java one做地更好。
不是“是否,”而是“何时”
你对企业什么时候或者是否转向.NET有什么建议?
这是一个什么时候将他们拖、拉、或者尖叫着穿过.NET的悬崖的问题,而不是是否需要穿过.NET悬崖的问题,不管他们是否愿意。然而,我不希望看见许多人试图一次重写他们的所有的Visual Basic代码或者Visual C++代码。我们应该逐步的开展。.NET将很快被引用到新的开发中。在Visual Studio .NET出现的头一两年,你将会看到一个混合模型,新开发的代码中30%的将是ASP.NET代码(我预见ASP.NET的扩展将会非常非常之快),但是70%将仍然是COM,COM+代码。
商业应用
由于.NET的许多优势和微软的强大的市场努力,.NET技术在应用程序开发中最终将被广泛采用几乎是可以肯定的,特别是对于中小型企业....
我对严谨的客户的一般建议是,不要把有紧急任务的应用程序在很大程度上依赖于.NET,至少在.NET发布后六到九个月不要这样做,即2002年8月之前。
然而,为了实践的目的,你可以用.NET做一些小的原型,一些没有紧急任务要求的程序。这取决于beta代码,第一个产品版本,或者第一个服务包能为你带来些什么。尽管如此,我们推荐你采取保守的方法。假设一个糟糕的情况:你的30%-40%代码将迁移,你将不得不重写或者重设计剩下的代码。别指望微软会提供自动工具来迁移你的代码。
谁将提前使用.NET?
对早期的采用者也有一些好的原因。首先是显示公司在Web Services策略方面的竞争力,你正在寻找在接下来的12个月里支持Web Services最好的平台。
ASP.NET是另一个原因。太多的程序员从事ASP的开发,如果你正在ASP执行或者安全方面苦苦挣扎,或者受够了整个ASP的生存空间。ASP.NET是一个更强大的环境。实际上,微软已经有了大量的早期采用者,他们已经在ASP.NET系统的测试版下开发。
还有,最重要的是,如果你有一个真正的商业原因,你就应该早点采用。例如,如果你正在开发一个无线的应用程序,ASP.NET有一些重要的新特征正好可以帮你实现,在许多情况下,冒险早期迁往.NET是因为它在移动和无线设备方面做得更好。
谁将等待和观望?
如果你不关心Web Services,这里没有一个无可抵抗的和强制性的原因,让你去很快地采用它。实际上,这就是我们说为什么大多数公司将采用一个相当渐进的曲线来采用它。
保守点的公司将什么时候采用.NET战略?
有许多因素要考虑。要看多少人采用这种主流技术。要参考专家的建议。要看第三方的支持、前景市场的支持。要看本地的.NET服务的组件提供者。要看所有的测试公司。要看源代码管理公司的提供。
什么时候早期的使用者和主流公司走到一起?
Visual Studio .NET发布的第一年,早期的采用者将会把他们的代码按70/30的比例划分在旧平台和新平台上。在大约一年半后,我们期待比率会变成30/70。你将看到70%的本地.NET代码将出现在基于微软的解决方案中。传统的公司将在Visual Studio .NET发布后的24到36个月开始迁移。大约2005年,我们将期待95%的本地.NET开发。
你将使用的工具
让我们来讨论.NET语言和在迁移应用程序到.NET的过程中起作用的部分,从Visual Basic .NET开始。
这是一个好消息,Visual Basic 变成了一种成熟的语言。它开始面向对象设计,使用类框架和.NET中的其它零碎,VB.NET已经变成了一个更强大的工具集。事实上,还没有哪些商业应用程序不能用VB来实现。
不利的是VB.NET有了许多新的语法和设计问题。这意味着对Visual Basic开发者将有一个艰难的学习过程才能最后完成迁移。
C++呢?
我认为在接下来的48个月中,60%或者更多的C++开发者将转向C#.
真的?60%?为什么?
C++将仍然会使用。它将会使用在COM和COM+领域,甚至在.NET中它将仍然会被使用,但是它将仍是系统层的编程语言。C#的快速开发应用程序的能力和C#和.NET组件模型集成工作的能力将会起到一个大的作用。
Java会怎么样?它在.NET蓝图中有什么位置?
这是我从用户那儿听到的最多的问题。我可能今年与八九百人讨论过,几乎一半的问题都是直接地或间接地关于.NET与Java相比较的问题。我告诉他们我认为Microsoft和Java将支配电子商务应用程序开发,也就是说,大多数新的项目将会基于这两个平台之一。他们到2005年将占有80%的市场。
那么谁将会嬴?
谁也不会。大多数大公司将会两者都使用。现在,Java基于它的跨平台的能力,在大公司中还有很强的实力。
中小公司会怎样?
小公司不能负担得起使用两者,他们将会转向其中之一。微软因为它的成本低和众多的开发者,对中小型组织还是很有吸引力的。
有什么不足?
为了完成.NET难题还需要做什么?
中间件架构应该被拿走。我们需要MTS的替代品。我们需要一个与本地.NET同步的messaging broker。更有效的是,我们需要作为本地.NET服务的COM+的替代品。
但是难道什么还没有吗?
当然。你已经有了数据库APIs和类似的功能。但是我们需要的是Java 2平台、J2EE在.NET上的替代品。现在,如果你仔细看那些零碎功能的话,我们已经有了一半了。有一个清晰的Java 2平台、标准编辑器(J2SE)的替代品,不久我们就会有Java 2平台、J2ME的替代品—J2ME与.NET Framework紧密相关。但是,微软还没有建立一个真正的J2EE的替代品。我们需要看到.NET技术注入SQL Server,这在SQL server的下一个主流产品Yukon中将会看到。我们需要看到各种.NET技术,像BizTalk,具有讽刺意味的是,它现在还什么都不能做。微软的门户网站,电子商务软件,所有的零碎东西都需要在.NET上执行。他们需要整合将被淘汰的技术。
关于服务
你提到了Web Services的重要性,那我们将会先看到哪种类型的Web Services呢?
我前面提到大多数公司将会同时使用Java和微软的技术。Web Services是一个很好的方法来整合它们并使他们可以交互操作。我们认为Web Services在移动基于所有权信息方面起着相当重要的作用。
Web Services的问题,就象其它问题一样,还很不成熟。实际上,现在整个XML消息的概念还极不成熟。我们现在只有所有的5%或者10%,我们最终需要全部的XML基础。
我认为抑制在公共的互联网上使用Web Services将是一个文化问题。企业将不得不适应系统开放的思想和实时工作的思想。好消息就是有了许多用B2B的基础。一些特别纵向联合的企业已经大规模地采用这种方式。
你认为主流开发公司能够充分理解Web Services并去使用它吗?
我认为在使用这项技术时仍然缺少技巧。许多开发者将把Web Services当作分布式对象模型一样执行。他们将说“好的,Web Services仅仅是包装了DCOM或者COM组件和Enterprise Java Beans组件,”,这是不对的。Web Services是松耦合的、异步消息协议,而不是锁定的、同步机制。人们第一次将不可避免的犯错误。
你可以相信Web Services会有很好的前途,它会是无处不在的相当廉价的服务通讯机制。不管这些服务是在一个子系统,一个企业、跨越一个行业内,或者甚至跨越不同的行业。你可以减少进入这个商业领域的障碍。但是这些好处将不得不和组织结构带来的新问题相比较。这样,我们认为2003年之前的这段时间,Web Services将不会变成主流。
人们将如何为他们使用的Web Services付钱?
这是现在Web Services的一个大黑洞。我们还没有看到任何好的定价模式。我认为我们将会看到,在某种程度上,小的付款模式将会一点点出来。但是还没有回答大的付款模式的例子。
HailStorm技术似乎是第一个著名的,大家都可以得到的Web Services,你怎么看?
你知道,我把HailStorm看作是一个大的、具体化的Web Services的例子。然而现在我听到大量的反对声,因为它是微软的。人们认为这是微软控制互联网的“Phase II”。我相信如果它不是从微软而是其他的公司,HailStorm将会直接受到大家的欢迎。让我惊讶的是,如果AOL或者和它的合作伙伴不提出和HailStorm长期竞争力的产品。我相信它会成功。
什么技术将能够成功平衡Web Services?
我认为人们非常关注的电子商务将会有同样纵向联系的市场。已经转向电子商务的行业将会是第一个使用Web Services的行业。它是下一个逻辑革命。