山雨欲来风满楼, 却待山花烂漫时 - 写在.NET 4.0和Visual Studio 2010发布前夜

      把两句诗拧在一起, 实在是体现对VS2010复杂的感觉. 有点哗众取宠? 其实真不是.

      从CTP到Beta再到RC, VS2010(包括.NET 4.0/W*F 4.0等一系列相关更新), VS2010在社区的影响已渐成"山雨欲来风满楼"之势. 大家在关注, 在议论, 在尝试这些由VS2010带来的新特性, 并且预测这些新特性对于今后3年乃至更长时间内.NET软件开发过程带来的改变和影响. 譬如

  • 动态类型(Dynamic)等一系列语言上的更新;
  • 新的ThreadPool实现;
  • 平行计算支持及新的Task Parallel Library , Parallel.For, Parallel.ForEach, PLINQ;
  • IDE上的改进, 比如使用WPF重写了IDE, Box Selection, 多显示器支持, JS和标签的自动提示, 快速查找, 新的的控件等;
  • ASP.NET MVC/Sharepoint等集成;
  • 新的建模项目- Modeling project;
  • Team Foundation 方面的更新比如新增代码覆盖检查集成等;
  • 对TDD的支持等;
  • F#正式进入等.

      如此多令人幸福到眩晕的新特性, 应该说.NET 4.0和VS2010 不仅仅是.NET 3.5Sp1和VS2008的一个自然延伸(废话), 更是一个在原有积累沉淀的基础上, 一个新的高度上的新起点. 这些被带来的新特性, 不仅足够应对当前的软件开发过程, 而且对开发过程趋势做出了预估; 不仅仅从性能和功能上更新了.NET, 也对VS的易用性做了足够多的更新; 哦, 连广告都更新了(做你的下一行code).

 

      在浅尝辄止地尝试某些新特性譬如TPL(Task Parallel Library)之后让人感觉, 这次的平台及工具更新很强大也很及时. 但是事情真的如想象的一样美好么? 如果您尝试一下Modeling project?

走马观花看Modeling project

      VS2010添加了新的项目类型-Modeling Project, 意在将建模和设计更多的引入到VS的大环境里来. 我们先撇开这个新添的项目类型, 撇开诸如Retional Rose, Enterprise Archtecture等建模工具, 思考一下我们开发人员对于一般的建模软件都需要什么样的特性(笔者粗略的总结了一下, 不足之处请您提出):

  • 自由的结构表达和示意功能, 支持UML 1.1或更高版本(最基本的一些图表)
  • 集成已知/通用的模板(比如GoF 24 Design Pattern, MVC, MVVM等)
  • 代码生成功能(正向工程,虽然大家都不怎么认可这个东西)
  • 在团队范围内共享和修改
  • 版本管理(合并/修改等)
  • 关系验证
  • 从已有源代码直接生成图表(或者最少是能导入代码生成元素定义)

      我们打开VS2010 RC, 创建一个Modeling Project, 然后使用模板很容易就能创建出一个比较炫目的效果:

Capture       看起来还不错哈, 但是默认没有几个模板的, Microsoft只是为这样的功能提供了SDK供大家开发模板等, 还好很多team跟进发布了一些模板, 譬如Microsoft Application Architecture Guide, 2nd Edition, 4+1 View Model of Software Architecture.

      但是当我们创建一个Class Diagram, 并且想导入已有类定义时, Modeling project给了我们一个大大的问号, 它拒绝从Architecture Explorer直接导入! 我觉得这相当不可理喻. 然后我怀疑我哪里做错了并查找了一些别的地方想找到将code直接导入到定义的功能, 然后很失望. 如果没有这种支持, 仅仅从这个方面来讲几乎连Visio都不如...(不过我还是不相信这种功能会被丢掉, 所以知道今天还在找).

      代码生成? 那是根本没戏的. 似乎是这个新诞生的项目的开发团队太忙而被直接砍掉了. 但是支持T4 template实际上也不是个多难的事情, 对吧? 倒是有作者在博客里提到, 在VS2010发布之后, 他们会发布类似于Power Tool的工具, 叫做Feature pack, 来实现对这些功能的增强:

         Increased Visualization Support

                1. Visualize your native ( C++ ) code
               2. Visualize your WAP or Web Sites or ASP.NET MVC code
         Increased UML support
               1. Code Generation from UML Class diagram
               2. Rapid population of Modeling Store from Architecture Explorer
               3. XMI 2.1 Import
               4. [UPDATED] Work Item to Model Element Back linking.
        Increased support for Layer Diagram Extensibility

 

      所以你知道我什么意思吧? 呵呵. VS2010的有些特性, 譬如TPL, ThreadPool是目标明确功能健壮的; 又有些特性其实很可能也是在瞄准4.12这个时间点而不得不急忙赶工或者砍掉了一些东西的情况下, 诞生的. 您一定记得一些VS2008和.NET Sp1这样一些反面的例子, 哦, 譬如那个Crash, 那个ThreadPool.SetMinThreads

      所以我们需要拭目以待. 也许只有到.NET 4.0 和VS2010 "待到山花烂漫时", 我们才能正确评价它的不足.

不论如何, 祝VS2010发布成功.

posted @ 2010-04-11 18:22  Jeffrey Sun  阅读(2961)  评论(17编辑  收藏  举报