数据访问<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1. 总是使用强类型DataSet,避免直接使用ADO.NET
2. 当访问数据库的时候总是使用事务
a) 总是使用企业服务或System.Transactions事务
b) 不要使用ADO.NET事务by enlisting the database explicitly
3. 总是将事务隔离级别(transaction isolation level)设定为Serializable。如果要设定为其他级别,则需要有实际业务管理规则支持。
4. 不要在Window From、ASP.NET Web Form或者Web Service程序中使用Data Source窗口来丢弃数据库连接,这样会使表现层与数据层耦合。
5. 使用Windows身份认证,不要使用Sql Server认证。
6. 访问Sql Server的组件应当与发起调用客户程序运行在不同的id之下。
7. 总是用高级的、类型安全的类来封装你的存储过程。只允许通过该类来访问存储过程。使用Visual Studio2005中类型安全的数据适配器来尽可能自动完成这一工作。
8. 避免在存储过程中加入逻辑。如果在存储过程中出现一个IF,那么你就犯错误了。
Asp.net和Web Service
1. 避免在asp.net中的aspx文件中放入代码。所有的代码都应该放在code-beside partial class 中。
2. 在asp.net的code-beside partial class中的代码应该调用其它组件而不是直接包含业务逻辑。
3. 在访问一个Session变量前,总要检查它是否为null。
4. 在事务性页面或Web Services中,总是将Session保存在Sql Server中。
5. 避免把asp.net的服务器控件的auto-PostBack属性设置为true。
6. 打开asp.net页面的智能浏览(Smart Navigation)。
7. 尽力为Web Service提供接口。
8. 总是为Web Service提供名称空间和服务描述。
9. 总是对web方法提供描述。
10. 当添加一个web service引用的时候,为位置提供一个有意义的名字。
11. 在asp.net页面和web service中,用一个局部属性来封装一个Session变量,只有这个局部属性有权访问Session,其它的代码只能访问这个属性,而不能直接访问Session变量。
Public class Calculator:WebService
{
int Memory
{
get
{
int memory=0;
object state=Session[“Memory”];
if (state!=null)
{
memory=(int) state;
}
return memory;
}
set
{
Session[“Memory”]=value;
}
}
[WebMethod(EnableSession=true)]
public void MemoryReset()
{
Memory=0;
}
}
12. 总是要修改客户端的web service封装类以支持cookies,因为你并不知道服务是否使用会话状态。
Public class Calculator:SoapHttpClientProtocol
{
public Calculator()
{
CookieContainer=new System.Net.CookieContainer();
}
}