首先,从纯技术角度对Web型项目做一个计划,涉及技术难度,环境要求,处理难点,高性能,可扩展性,数据库移植性,安全性等等,分别进行描述:
l 逻辑结构分层
微软针对DotNet提供了4个经典的案例有Duwamish、PetShop、Fitch and Mather 和 DotNetFurom.Duwamish和PetShop都给出了完整,可运行的代码.Duwamish是一个外表简单,内部极复杂的程序,相反PetShop比较简单,而且是传统的三层应用,比较轻巧,而且在例子中给出同时支持SQL server和Oracle数据库的功能.所以,选择PetShop3.0的分层作为样版.
l 技术环境
环境:Win2k Server + IIS + SQL Server2k
技术:ASP.NET + ADO.NET + C# + 企业级模板
开发工具: VS.NET2003
l 数据访问策略
a. 只用 SQL 语句,好处是支持多版本数据库时,不用分别维护各版本的存储过程,缺点是损失一部分性能.
b. 支持多种数据库,采用工厂模式,运行时根据配置动态绑定
c. 调用DAAB库,目前DAAB版本是3.0,Petshop3.0使用的是1.0版本.
d. 配置合适的连接池
l 错误处理
a. 合理的结构化异常处理,并且给出友好的提示
b. 错误信息保存到日志
c. 微软的企业库提供了EHAB3.0,可以参考
l 事务处理
.NET中的事务处理分为两种:自动事务处理和手动事务处理,自动事务处理调用COM+中的企业服务部件实现异构数据库事务处理,性能不高.手动事务处理分为ADO.NET上的事务处理和存储过程中的事务处理.一般没涉及异构数据库支持,并且没有用存储过程的话,采用ADO.NET的事务处理就可以了.
l 安全性
a. 如果是分布式部署,要考虑网络欺骗,如果单机部署就不用考虑
b. 对受限资源采用Form方式进行授权,原理是根据Cookie,如果要求更高,可以采用基于Windows的身份验证,或者Passport的方式.一般网站采用的都是Form方式.
c. 配置文件加密,微软企业库提供了Configuration Application Block,提供了现成的加密方式,可以参考.也可以自己编写对称加密算法.
d. 用户密码经过单向加密存入数据库,Duwamish的SHA1+SALT加密很好,可以参考.
e. 严禁数据库访问采用SA用户,并且连接字符串可以采用信任方式访问,不要放入用户名和密码
f. 业务权限划分,涉及具体业务.微软的企业库提供了Security Application Block可以参考.
l 性能
a. 多用Cache,分为页面输出缓存和数据缓存.
b. CacheAPI中要注意名字唯一性
c. 少用Session,一般使用InProc类型的session效率最高
d. 页面上显示设置Session类型: True,False,ReadOnly
e. 页面和控件的ViewState属性
f. 数据查询使用视图
l 编码风格
a. 保持代码的相似度,提高可度性
b. 遵守命名规范
c. 调用方式模仿PetShop3.0
d. 控件使用规范
e. 美工+报表
l 验证
a. 数据验证,比如格式,用code behide结合Validate控件实现
b. 采用客户端JavaScript时,注意安全性和浏览器支持性
c. 业务验证,比如重复记录,在BLL层验证,返回错误类型,用Validate控件显示给用户
l 并发性
a. 并发性的测试工具MACT
b. 涉及事务处理采用ADO.NET类型的手动事务处理
c. 数据库查询时注意锁的等级,尽量不要用游标,Select时可以采用nolock等等
l 全球化,本地化支持
a. 程序全球化+数据库全球化
b. 程序全球化包括使用资源和编码设定
c. 数据库字段支持Unicode
功能方面的考虑待续