ASP.NET2.0的编译部署和VS2003到VS2005的项目迁移.2
星期五, 七月 6th, 2007
接着昨天……
VS2003到VS2005的项目迁移远没有想象的“可怕”,如果你只是转化为VS2005SP1支持的Web应用程序,那几乎没有什么多余的工作可作,使用VS2005打开SLN项目文件,随着向导一路按下去就可以完成转化工作了。
我的项目中有2个Web项目,转化时会在VSS中签出工程中的所有文件——如果不是VSS那么应该需要事先手动签出,转化会自动识别隐藏代码文件中的控件声明,并转移到一个新建的.aspx.designer.cs文件中,以此来实现兼容。
出现的问题
- 部分文件无法识别,导致控件声明重复、缺失。这个很简单,可以删除.aspx.designer.cs文件,仍然使用原有的代码隐藏声明模式,或把隐藏代码中的声明删除,迁移到.aspx.designer.cs文件中,都可以很方便的解决。
- ASP.NET2.0会有一些新的推荐方法替代旧的方法,例如最常用的可能就是读取AppSettings的方法了,虽然旧的方法仍然可用,不过只需要通过简单的“查找/替换”操作就可以在解决方案内替换所有会被编译警告的方法,追求品质嘛。
- 回发或回调参数无效,这是一个兼容异常,通常是由于页面存在多个form或有js在客户端修改了数据造成,在ASP.NET1.1中会兼容这个异常不会报错,但是2.0中无法运行,需要进行修改。
这些是我在迁移中遇到的异常,更多的可以参考我昨天的文章 http://linnchord.net/archives/10
ok 祝大家顺利迁移,奔向2005 …… 2007就快出来了啊……
ASP.NET2.0的编译部署和VS2003到VS2005的项目迁移.1
星期四, 七月 5th, 2007
旧有系统总在不停的维护中,这两天维护一个网上商城的系统,我试图把他迁移到ASP.NET2.0/VS2005环境下。
由于种种关于迁移失败导致崩溃的信息给我带来的恐惧感,我花了一个下午的时间查询相关资料,详细考察了ASP.NET2.0/VS2005的编译部署机制和相关迁移文档,以确保整个过程顺利实施。
网上相关文档
- ASP.NET 2.0 中的代码隐藏和编译
- 非常 ASP.NET: Web 部署项目
- 常见的 ASP.NET 2.0 转换问题和解决方案
- 将博客园程序从Visual Studio 2003迁移到Visual Studio 2005的尝试
- .NET1.x升级到.NET2.x问题小结
首先需要确定迁移到哪种项目模式下。根据文档的描述,在VS2005中的ASP.NET网站有下面几种编译部署方式。
- Web网站项目:VS2005提供的新的Web项目模式,没有项目文件控制,直接把一个物理目录视为项目,目录中的所有文件都是项目文件。
- 完全编译:通过“网站发布”功能,在发布对话界面上取消所有选项(包括默认选项),可以将网站所有.NET文件(aspx/asmx/ashx/cs…)全部编译为一个DLL程序集,留下的只有非.NET相关的其他图片、样式表、js等文件和aspx占位文件。你可以打开占位文件查看,里面什么内容都没有……呵呵,这真是一种有意思的部署方式,可惜,这绝不适用于大多数一般网站开发项目。
- 可更新预编译:这是VS2005默认的编译模式,在“网站发布”中选中“允许更新此预编译站点”,这样会保留aspx等非后端隐藏代码的程序文件内容,使你可以方便修改HTML内容并即时生效。这种部署方式最大的问题在于aspx页面会在发布时自动指向程序集,而每次编译的程序集文件名会发生变化,这就导致如果你修改了任何一个程序逻辑并重新编译,就不得不上传所有网站内的程序文件……这在实际网站开发中几乎也是不可接受的,且不论重新上传所有页面的操作代价,这几乎就否定了网站上传后其他人员如设计师直接修改aspx页面的可能,除非将设计师的工作也置于代码控制之下,这是难以实现的。
- 固定命名和单页程序集编译:这个选项会解决上面的随机程序集命名问题,这个模式下的编译会把每个ASPX文件都编译为一个单程序集,每个程序集后会添加随机数,不过这个随机数是固定的。我试图查找这个随机数的生成依据,不过没有找到,推测应该是根据解决方案中的GUID。把这个选项和前面“可更新预编译”相结合,可以得到较好的编译方案……好吧,我得承认我忽略了生成数十或者以百计的单页面dll的繁琐,不过这是一个优劣并存的方案,因为当你只更新一个页面的逻辑时,可以只上传一个较小的dll,且不影响整个网站的运行,这也是一个不错的优势了。
- 完全源码部署:这是一个很省心的方案,不做任何编译,直接COPY部署就OK,不过这是另一个极端,估计很少情况会采用——不过可以用来做测试部署,很方便。
- Web应用程序项目:MS认识到到了“Web网站项目”带来的种种问题,在VS2005SP1中正式提供了这个原有的VS2003的项目模式。这样可以指定目录中的文件为项目文件——必须承认这是一个不可放弃的优势,所以虽然新的“Web网站项目”也有种种优势,但是我还是不得不采用这个“老”方案了。可以想象,如果采用新方案,我就得面对项目运行维护时在项目目录中骤增的数以百计、千计的运行时文件,还不得不接收由此带来的超长时间的编译及发布copy,这会使人崩溃的……
编译部署的方案就是上面这些了,VS2005的网站项目应该说是有很多优势的,不过用一句老话讲,这些改进并不符合中国国情,或者至少不符合一大部分中国网络服务供应商的运行状况。这些改进都是需要在业务相对稳定,有较严格代码控制等情况下才能较好的实施,而中国目前估计除了企业开发外,在一般的网络运营下少有这样的环境。其实从这些改进和现状的冲突,就可以看出国内和国外行业水平的差异,呜呼哀哉……
写太多了,迁移稍后吧……
Url Rewrite 实现
星期二, 五月 22nd, 2007
http://blog.joycode.com/scottgu/archive/2007/03/01/94004.aspx
整个blog实现了url重定向
/blog/{id}.aspx
/blog/tag/{id}.aspx
/blog/archives/{id}.aspx
采用UrlRewriter.NET开源组件实现重写。
Subsonic 2.01 Release
星期一, 五月 21st, 2007
http://www.codeplex.com/actionpack
下面翻译自Subsonic主页
关于Subsonic
Subsonic是一个工具组,能够帮助网站构建自己的数据层。其核心包括
- 一个不需要你写任何代码就能实现的数据层,它在编译的时候自动构建你需要的全部对象和对象的强类型集合。
- 一组完整的实用工具,实现类似Rails的scaffolding功能,migrations (DB Versioning)(不太清除这个词的准确翻译,可移植的数据层?),和代码生成工具;
- 一个动态查询工具,通过它你不需要了解Sql就可以使用SqlServer和微软的企业库;
- 一个关系对象映射工具,该工具可扩展使用视图和存储过程,更加灵活;
Subsonic可以帮你做什么:
- 缩短你的开发周期。不仅仅是因为在开发初期帮你自动生成了代码,并且在你需要迁移数据库时也不需要重写数据层。
- 你可以选择完全采用ORM(关系对象映射),也可以使用存储过程和视图。我们没有企图告诉你怎么做,因为你已经知道怎么做最好。我们只是想给你一些帮助。
- 帮助你的应用自动构建。通过我们的代码生成器(类,脚手架,批处理类[batch-class]),在很短的时间内你的站点就可以实现自动构建。然后脚手架控件(scaffolding)会帮助你很快实现数据处理。
- 一个可扩展的坚实的基础。我们的新手站点已经集成了多种特性,包括ASP.NET membership,AHAX,3列弹性XHTML布局主题,和用户管理页面。这些至少需要一个星期的工作,现在已经完成了!
- 在很短的时间内把你的项目从设想实现为原型。这就是这个工具的强大所在——使用新手站点你可以快速实现敏捷的原型(后面难以翻译附原文 using our starter kit you can have a sharp prototype up and running in the merest fraction of what it used to take.)
Webcasts
UML2.0学习指南
星期五, 五月 18th, 2007
my first ruby code
星期五, 二月 16th, 2007
快放假了,工作终于少了下来,一口气看了几篇ruby文档,凑了一个小程序玩玩。
funny ruby code in intype
.Net Framework On ROR – ASP.NET ActionPack
星期四, 八月 24th, 2006
偶尔看到了这个东东,惊艳的感觉!Commerce Starter Kit 作者Rob Connery在微软的开源网站上http://www.codeplex.com推出的.net框架,基于.net2.0,依据ROR的思想构建,目前已经具备ActiveRecord和基本的scaffolding功能。
先看个视频
http://www.wekeroad.com/actionpackintro.html
提醒一下,这个视频很精彩,但是演示屏幕较大,时间较长,估计制作上有些问题,导致会占用很高的内存,看到后期大概有600-700M占用。
网站
http://www.codeplex.com/Wiki/View.aspx?ProjectName=actionpack
实在是很强大的功能,虽然目前可能还不完善,scaffolding部分还很简陋,不过ActiveRecord已经可用,相信看了视频演示后就会了解,会给工作带来很大便利,强烈推荐!
下载了源代码看,代码量出乎意料的小,大量的泛型应用,看来这个语言特性确实非常强大。
因为简单,所以困难。
星期三, 八月 9th, 2006
在网上回复了一个帖子,讨论为什么asp.net开发的网站应用经常表现出不稳定和性能低下,我是这么认为的。
asp.net的页面模型,其实是业界公认非常优秀的开发模型,这种模型简化了原来页面逻辑的烦琐流程,并且有机的和常规的系统模型和面向对象思想结合起来,提高了整个系统的抽象层次,降低了底层开发上手的难度,有利于从更高的层次上组织构架系统,提高开发效率。
但是也正是由于屏蔽了服务的底层,开发上手快、效率高,所以很多人没有或者不能深入理解其机制,只知道简单拖拉然后调用使用控件,只图方便,也不知道什么 地方该用什么地方不该用。现在很多asp.net新入门的人,不知道根本的页面交互模型,不知道http基本机制,甚至不知道HTML,拿着控件到处放, 反正功能出来就ok,这样的东西是什么结果可想而知。
这是目前国内asp.net做网站非常典型的情况,我了解过好几个公司网站都是.net做出来千疮百孔,没办法维护,最后干脆推倒,全部改了java或者php。
不过据我了解,在国外似乎这种情况较少。我思前想后,觉得归根到底,还是市场原因…市场决定一切,需求决定一切…后面就没什么可说了,大家都见多了 呵呵
C语言的科学和艺术
星期六, 七月 29th, 2006

这本书是国内外几个著名大学的C语言课本,除了C语言的基本语法外,着重引导读者开始使用一个语言编写程序的过程。
不过如果你已经有了较多开发经验,那还是不要看这本书吧,呵呵。
优点
- 深入浅出,易学好懂;
- 着重引导了程序开发的基本规范和思路,对初学者非常重要;
- 通过作者自己写的库隐藏了部分C语言比较烦琐难懂的语法细节,使初学者更容易上手;
缺点
- 不少代码不使用C标准库;
- 比较罗嗦一点;
- 缺乏部分语法细节;
优点和缺点其实只是对不同的人而言,书本身是很好的。这本书非常适合没有语言开发经验或者自学缺乏良好开发基础的人学习使用,如果是这样的读者,就不要犹豫了,很值!
Try Ruby!
星期二, 七月 25th, 2006
一个有趣的应用,在web界面上提供了一个类似shell的东东,让你可以使用ruby语言进行简单交互。并且还提供了一个基础的ruby指南教程,通过简单的描述和互动操作,让你在很短的时间内熟悉ruby语言的基本功能。
大约一共有9个教程,页面上说的是需要15分钟,不过我花了1个多小时完成,15分钟稍微夸张了一点。
整个应用是采用ajax构建,界面操作非常友好,还带有较强动感切换效果,以至于我开始以为是flash构建的。看来现在flex跟着ajax屁股后面,为RIA摇旗呐喊,也是不无道理的。



ruby确实是一个很有意思的语言,代码简洁优美,效率很高。不过有些地方语法感觉过于简略了点,容易导致理解上的障碍,不知道是不是习惯问题。
有机会还可以看看ROR啊,呵呵。

