规范设计过程
即使是一两个人的项目也不要进行手工作方式的编程方式。必须进行需求分析,系统分析,技术分析,系统设计,数据库设计,页面设计,系统实现,系统测试,系统发布与布署。并且在每个阶段都要遵循相应的规范,提交相应的项目文档。这些文档包括:
开发文档:《功能要求》、《投标方案》、《需求分析》、《技术分析》、《系统分析》、《数据库文档》、《功能函数文档》、《界面文档》、《编译手册》、《QA文档》、《项目总结》等。
产品文档:《产品简介》、《产品演示》、《疑问解答》、《功能介绍》、 《技术白皮书》、《评测报告》、《安装手册》、《使用手册》、《维护手册》、 《用户报告》、《销售培训》等。
规范系统结构
层次与模块的划分
ASP.NET应用程序的结构从横向分可分为多个逻辑层,从纵向分可多个模块
ASP.NET应用程序的N个逻辑层,在实际应用中一般分为三个或四个逻辑层。
三个逻辑层即
• 用户服务层 (USL) :用户服务层为客户端提供对应用程序的访问能力。
• 业务逻辑层 (BLL) :业务逻辑层提供用于处理业务逻辑。
• 数据访问层 (DAL) :数据访问层为 BLL 提供数据服务。
四个逻辑层即:将三层结构中的业务逻辑层分为业务外观层与业务规则层。
• 业务外观层(BusinessFacade):业务外观层为 Web 层提供界面。业务外观层用作隔离层,它将用户界面与各种业务功能的实现隔离开来。除了低级系统和支持功能之外,对数据库服务器的所有调用都是通过此程序集进行的。
• 业务规则层(BusinessRules):它包含各种业务规则和逻辑的实现。
ASP.NET应用程序的各个模块的一般按功能划分。
比如:在一个网上商店系统中有:系统管理模块,用户管理模块,商店业务模块等。
命名空间
层次格式为:公司名[.解决方案名].具体模块名.项目名
文件夹及文件名约定
将命名空间层次结构图转化成树状目录,同时设置一些类似于images,stylesheets和XSLT files这样的目录。
规范编程
数据访问
对于 Web 应用程序,通常对每个请求执行短操作(一般只是显示数据),使用 SqlDataReader。
当执行不要求返回数据的命令(如插入、更新和删除)时,也使用 SqlCommand。该命令通过调用 ExecuteNonQuery 方法发出,而该方法返回受影响的行数。当要求返回数据是单值时,则调用ExecuteScalor方法
使用数据集的好处是它为您提供了断开连接的数据库视图。可以在应用程序中操作数据集,然后在以后协调更改和实际的数据库。对于长期运行的应用程序,这通常是最好的方法。
使用存储过程可以减少在应用程序中执行繁重的数据库操作的开销。
代码
虽然 代码块为自定义操作从 ASP.NET 页返回的文本输出提供了功能强大的方法,但它们不提供清晰的 HTML 编程模型。代码隐藏方法使页代码能够更清晰地从 HTML 内容中分离到完全单独的文件中。
更多的详细内容见《C#编程规范》
代码复用
创建和使用可封装常用功能的可重用 UI 控件(用户控件或web服务器控件),并由此减少页开发人员必须编写的代码量的能力。
为数据服务层创建一个基类—–封装连接数据库及常用操作。它使我们能够快速而简单地修改所有数据服务类行为的某个方面,而不是修改在每个单独类中的代码
为aspx页面创建一个基类—-包装页面访问中的常见操作。比如:在购物车中将购物清单作为页面的一部分。
性能
在未使用时禁用会话状态:这可以通过以下页级别指令实现:
慎重选择会话状态提供程序:如果仅在会话状态中存储少量易失数据,则应使用迄今为止速度最快的解决方案“进程内提供程序”。
避免与服务器间的过多往返行程:应用程序通常仅在检索数据或存储数据时才需要往返于服务器。比如在用户提交数据前,通常可以在客户端验证窗体项。可以使用 Web 窗体框架包含一组验证服务器控件,它们提供易用但功能强大的方法检查输入窗体的错误,并在必要时向用户显示消息。
使用 Page.IsPostback 避免进行额外的往返行程:
谨慎适当地使用服务器控件:尽管服务器控件使用起来非常容易,但它并不总是最佳选择。例如:许多情况下,简单的呈现或数据绑定替换可以完成同样的事情。
使用 Response.Write 以进行字符串串联:如果打算执行大量的字符串连接,则多次调用 Response.Write的方法来连接字符串比仅调用一次 Response.Write 方法要快。
不要依赖代码中的异常:异常是非常浪费资源的,应在代码中尽量避免。如果可以在代码中检测到会导致异常的条件,就应该那样做,而不要等到捕捉异常后再处理该条件。常见的方案包括:检查空值,分配给将分析为数字值的字符串,或在应用数学运算前检查特定值
在 Visual Basic 或 JScript 代码中使用早期绑定。因为就性能而言,晚期绑定虽很方便但很昂贵。
将 SQL 存储过程用于数据访问:使用托管 SQL 提供程序时,可通过使用编译的存储过程而不是特殊查询,获得额外的性能提高。
使用 SqlDataReader 获得快进只读数据游标:SqlDataReader 对象对从 SQL 数据库中检索的数据提供前进只读游标。
尽可能缓存数据和输出:ASP.NET 编程模型提供了一种简单的缓存页输出或数据的机制,不再需要为每个请求动态计算这些数据。在设计页时可以考虑用缓存来优化应用程序中那些预期有最大通信量的地方。适当地使用缓存可增强站点的性能,有时甚至可以增大一个数量级或更多。
不要忘记禁用调试模式:在部署生产应用程序或测量性能之前,始终记住在ASP.NET 配置中的 节禁用调试模式。
最小化对视图状态:视图状态管理是服务器控件的一个功能,它在服务器请求之间的往返行程上重新填充属性值。视图状态可以通过web.config 文件中的设置或在页级别或控件级别上为整个应用程序有选择性地禁用。应最小化对视图状态的使用以在它的用户操作和性能间保持平衡。
处理错误
指定自定义错误页,以在发生错误时将客户端重定向到该页
配置
数据库连接字符串、文件路径或远程 XML Web Services URL等自定义应用程序设置通常存储在配置文件中。配置文件可以是web.config文件或自定义配置文件。
建议所有各个模块采用单独的自定义xml配置文件,并自定义一个类来读写它
其它
布署
通常创建安装程序进行自动部署。
安全性
ASP.NET 和 IIS 一起使用,为应用程序提供身份验证和授权服务。根据用户与应用程序的需要采用不同的身份验证策略并授权。使用对角色授权,可以降低管理的难度。