接着昨天……

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/VS2005环境下。

由于种种关于迁移失败导致崩溃的信息给我带来的恐惧感,我花了一个下午的时间查询相关资料,详细考察了ASP.NET2.0/VS2005的编译部署机制和相关迁移文档,以确保整个过程顺利实施。

网上相关文档

首先需要确定迁移到哪种项目模式下。根据文档的描述,在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

.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。

不过据我了解,在国外似乎这种情况较少。我思前想后,觉得归根到底,还是市场原因…市场决定一切,需求决定一切…后面就没什么可说了,大家都见多了 呵呵

去掉VS.NET项目中的VSS代码控制

星期二, 六月 29th, 2004

好多vs.net下的工程是用source safe进行版本控制的,但是经常会有种种问题。比如换机子或者把文件拷贝回家做的时候,有时候修改了代码还保存不了……

等等琐事,很是让人厌烦,所以想把他去掉。

要做如下操作:


·去掉项目中的.scc、.vssscc和.vspscc文件;

·去掉C#项目文件(.csproj)里面几行标签:
SccProjectName =”SAK”
SccLocalPath =”SAK”
SccAuxPath =”SAK”
SccProvider =”SAK”

·去掉解决方案文件(.sln)中的下面节点
GlobalSection(SourceCodeControl) = preSolution
SccNumberOfProjects = 4
SccLocalPath0 =

CanCheckoutShared = false
EndGlobalSection

一个Web系统界面设计和开发.5

星期二, 六月 1st, 2004

6.典型交互模式

界面交互中,根据功能不同,有不同的交互方式。应该尽量提取抽象,尽可能减少交互模式的种类,或者把交互方式尽可能设计的类似,以方便用户快速熟悉系统。

下面列举3个系统中比较典型的交互模式,供大家参考。

单项选择

多项选择

项目分解(GIF动画 4桢)

7.Demo开发

Demo是详细设计阶段的重要成果之一,在对系统进行详细的分析设计之后,开发出界面Demo原型,主要作用是提供给合作客户,在基本功能、系统组成和易用性上进行测试。

本系统的Demo主要包括界面的设计制作,和部分客户端表现层脚本的开发。为了在后面的实际业务开发中尽可能获得重用,Demo的制作在页面规范、CSS样式定义和JS脚本编写方面都严格遵循了系统开发规范,并在以后的代码编写工作中严格执行。

本系统整个Demo包括大约50个页面,耗时月3周。

在后续的开发过程中,仍然要严格控制整个开发过程,保证整个系统界面的统一,并随时维护更新系统界面的设计。

8.结语

太长了……需要对以前很多东西进行回顾,实在很困难。很多细节,包括很多设计、技术上的东西,都已经记忆不清了,文章也显得有些紊乱。

因此,如果大家有什么疑问,或有意见、指正,请提出或来信与我交流。

一个Web系统界面设计和开发.4

星期一, 五月 31st, 2004

5.典型界面

以下是系统中几个比较典型的界面模型。

在整个系统界面的设计过程中,需要注意整个系统的统一,设计风格要一致,界面中的交互元素,从色彩、样式到排版方式、具体位置都要具备延续性,这样才能使用户尽快习惯整个系统操作。

一个Web系统界面设计和开发.3

星期一, 五月 31st, 2004

4.主界面设计

设计主界面,确定系统基本风格,是概要设计中的工作之一。首页主界面的主要实现功能是导航,它要达到的目的,是尽可能使用户仅通过首页面板就可以完成所有常规任务。

该主界面包含以下部分

用户信息区域 显示当前用户信息

用户导航区域 用户页面导航,收藏功能可以将当前功能页面收藏到快捷功能面板

用户导航功能树 用户页面导航,收藏功能可以将当前功能页面收藏到快捷功能面板

功能树隐藏 可水平扩展页面空间

1 of 3123