|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件web|成绩--------------------------------<出格声明,此文档是转载,黄勇BLOG的文章>-----------------------------------
搭建体系框架发明的三个Web.Config成绩
依照微软的Duwamish7搭建一个Web体系框架,固然说是一个现成的框架在中间,却仍是碰到一些烦人的小成绩,个中有好几个就是这个Web.Config弄的鬼!
1。搭建好的体系框架运转堕落,报甚么不克不及准确读取ApplicationConfiguration设置节,但我的设置节部分完整是从Duwamish7中Copy过去,并且今天还好好的啊?也不记得弄了多久,试了几次本人也都以为不成能的办法,都无功而返。最初,看着它发愣,束手无策时,一个动机闪过:ApplicationConfiguration?是否是太多了。改成AppCofiguration,再试,天啊!居然乐成了!晕!
<configSections>
<sectionname="AppConfiguration"type="AVWeb.SystemFramework.ApplicationConfiguration,AVWeb.SystemFramework"/>
</<SPAN>configSections>
2。也是运转报Web.Config某正文行堕落,正文以下:
--Databasetype0--Access1--SqlServer-->
由于对这个不太熟习,也是弄了好久才晓得:<!---->中包括的正文不克不及包括有"--"字符
3.想在页面上挪用Javascript写的一个日历控件,个中有中文正文,把js文件包含在页面中,但一运转,怎样也不克不及一般装载,总是报“未停止的字符串常量”等毛病,弄了半天以后,才分明是字符集弄的鬼!
Web.Config文件中设置的字符集十分主要,也就是这个:<globalizationresponseEncoding="gb2312"requestEncoding="gb2312"/>
假如程序中有中文,但Encoding又不是gb2312的话,大概良多稀里糊涂的成绩就来了!
Duwamish7进修条记(二)
SystemFrameWork项目
SystemFrameWork项目是一个能间接移植到其余应当程序的项目,能够不修正或很少的修正代码而间接利用。
项目次要为3个类。
1.ApplicationConfiguration类
此类为使用级的设置类,完成IConfigurationSectionHandler接口。与后面讲的DuwamishConfiguration类完成办法类同。次要办法为Create(),OnApplicationStart(),ReadSetting()。
假如要利用此类,需于Global.asax的Application_OnStart事务中挪用ApplicationConfiguration.OnApplicationStart(Context);
publicstaticvoidOnApplicationStart(StringmyAppPath)
{
appRoot=myAppPath;
System.Configuration.ConfigurationSettings.GetConfig("ApplicationConfiguration");
System.Configuration.ConfigurationSettings.GetConfig("DuwamishConfiguration");
System.Configuration.ConfigurationSettings.GetConfig("SourceViewer");
}
此办法通用挪用ConfigurationSettingis.GetConfig()办法经由过程Web.Config中的获得对应的剖析类,挪用响应的Create()办法。假如没有对应的设置剖析类则可间接挪用System.Configuration.NameValueSectionHandler类剖析,GetConfig("SourceViewer")便是云云。
2.ApplicationAssert类
此类次要用来协助开辟职员举行毛病反省,日记纪录等。次要有Check(),CheckCondition(),GenerateStackTrace()三办法和LineNumber属性。
[ConditionalAttribute("DEBUG")]使用于Check(),和GenerateStackTrace()办法,假如Debug常量被界说,此办法能够被挪用。
3.ApplicationLog类
此类次要用来举行日记纪录。
界说Error(1)、Warning(2)、Info(3)、Verbose(4)四个TraceLevel级别纪录日记调试和跟踪信息.详细设置于Web.Config的设置节中界说。此类中一切办法均为static办法,是次要的为staticvoidWriteLog(level,messageText)
假如写进的TraceLevel不年夜于设置中界说的级别,则把对应的调试、跟踪信息按界说的级别写进Windows事务日记中和界说的跟踪文件中.
ApplicationLog类的机关函数声明为privatestatic,在对ApplicationLog类举行第一次挪用时从设置文件中获得设置信息举行初始化。
疑问:
1.在staticApplicationLog()中使用了System.Threading.Monitor,包管多线程操纵的平安性。为何对ApplicationLog要举行锁的把持?
2.对System.Diagnostics定名空间中某些类了解不太分明。
MSDN匡助:
1.Monitor类
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemthreadingmonitorclasstopic.htm
2.System.Diagnostics定名空间(供应特定的类,使您可以与体系历程、事务日记和功能计数器举行交互)
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemdiagnostics.htm
postedonFriday,December17,200411:27AM
Duwamish7进修条记(三)
DataAccess项目
DataAccess项目中共4个类:Books类,Categories类,Customers类,Orders类.均完成了IDisposable接口。用来封闭举动的数据库毗连。
这是MS倡始的一种开释非托管资本的Dispose形式。有关Dispose形式《.NET框架程序计划(订正本)》的19章“主动内存办理(渣滓搜集)”有杰出的叙述.
类中经由过程挪用存储历程,封装了对4个营业工具的Select,Insert,Update操纵。
Select操纵经由过程SqlDataAdapter的Fill办法添补对应的承继自DataSet的营业实体类,前往给挪用者。Books类和Categories类只要Select操纵.
Insert和Update操纵经由过程一个private函数前往InsertCommand或UpdateCommand工具。再于对外的的Public函数挪用Private外部函数完成响应操纵。Customers类中完成Insert,Update,Select操纵,Orders类只要Insert操纵。
在Customers类的LoadCustomerByEmail()办法中有对ApplicationAssert类的CheckCondition()办法挪用
ApplicationAssert.CheckCondition(data.Tables[CustomerData.CUSTOMERS_TABLE].Rows.Count<=1,"IntegrityFailure:non-uniquee-mailaddress",ApplicationAssert.LineNumber);
疑问:
1.数据会见层感到完成了营业逻辑层的内容,平常如LoadCustomerByEmail()等办法都是写在营业逻辑层的。
2.是不是有需要笼统出一个完整对数据库操纵的基类,完成对数据库底层的操纵?而不是在每一个类如:Books,Customers中均一次次重写如SqlCommand工具,Dispose形式?
Duwamish7进修条记(四)
BusinessRules项目
1.Customer类
长见地了!在《Duwamish7进修条记(三)》中还在想营业逻辑层写些甚么器材。
校验,仍是校验!每行,每列,包含范例和长度,想一想自已在项目标校验,真的有点汗颜!
//----------------------------------------------------------------
//FunctionValidate:
//Validatesandcustomer
//Returns:
//trueifvalidationissuccessful
//falseifinvalidfieldsexist
//Parameters:
//[in]customerRow:CustomerDatatobevalidated
//[out]customerRow:Returnscustomerdata.Iftherearefields
//</p>实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。 |
|