关于VS2005性能在此做了个分析,希望对大家有所帮助,并共同进步。由于原文件太大,此处无法上传,所以大家有communitysever的可以从里面获得然后反编译为自己所用,没有的就到网络上搜索VS2005性能的文章。很多的。
Membership里共有四个大类:
◆scalablehosting:表示一切类的基类。
◆scalablehosting.configuration:一些配置的基本信息(有cookie的存放地址,名称等)。
◆scalablehosting.profile:用户的个性化信息。不同的用户可能看到不同的界面和不同的配置。
◆scalablehosting.Security:安全性设置,就是用户角色和权限的配置了,都在这里面。
我自己的开始是小部分的练习,就是从添加用户,修改,删除用户,然后授予角色,设置特性开始的。所以请容许我按照我的思路来描述这些类,而不是一个类一个类的来讲他们的作用。
添加用户:
因为是***个小DEMO,所以需要做的前提事情很多,但以后这些就不需要做了,虽然看起来很麻烦,我也是费了一天的时间才调整好。但为了以后方便的使用,建议大家还是先这样布置好。
首先在webconfig中,添加配置节。注意配置类型的修改,如果从communityserver中copy过来,是带publickey的,这个我们在测试的时候可以去掉(当然AssemblyInfo.cs中的keyfile属性内容设置为""),如果把publickey去掉,必须将memberrole.dll放在你的应用程序的根目录下。注意配置节里凡是有关空间名称的地方,都得把type修改成memberrole.dll中的空间名称,因为communityserver中用的是自己扩展的类。
还有就是自己添加的appSettings里面的连接字符串的名字要和上面这些配置节的名字一致。对配置节不熟悉的人可以多参考一些配置节设置的资料,我上面也有一篇,写的比较简单。
其次是数据库里面的设置,必须加入communityserver中的六个aspnet_开头的表。而且还得把所有aspnet开头的存储过程copy过来。注意表aspnet_SchemaVersions虽然与其他表无关联,但里面的内容很重要,也得copy过来。
添加用户的主要方法用到的是SqlMembershipProvider.cs中的CreateUser()。我们先来说说用到的类(当然先得在你的应用程序里添加引用memberrole.dll然后在cs文件中,添加using ......)
membershipuser:其实就是membership表的一个实体类,注意这个类有一个类属性[Serializable]表示可序列化的,也就是你可以把这个对象当成是一个只有一条记录的dataTable,如果需要返回多条记录,那就使用MembershipUserCollection,这个也是个[Serializable]的类,功能类似于DATASET。现在流行orm结构,也就是对象关系映射。直接通过操作实体类的方法而不是SQL语句来更新数据库。
通过数据表生成实体类的方法有很多,己写的工具或者codesmith+模板的形式都可以,网络上一搜很多,此处题外话。
membership:这个就是对用户进行增,删,改的操作类,返回的当然就是membershipuser对象。注意membership的大部分方法都是static方法,也就是说不需要实例化membershi以直接使用它的方法
例如:membership.createuser(...);
我们可以看到VS2005性能,membership里的createuser有很多重载方法,其实最主要的就是说明一个用户必须得有用户名和密码,其他都可忽略。所有的操作都其实都在参数最长的那个方法里,然后从这个方法调用Membership.Provider.CreateUser(...),其实provider就类似于一个工厂方法,通过它进行 Membership.Initialize(),然后在这个方法里通过查询配置节来获得究竟使用sqlprovider还是accessprovider,为VS2003使用的memberrole.dll只实现了sqlprovider方法,而VS2005里的还实现了access方法。这以后就去调用SqlMembershipProvider.cs中的createuser(..)方法。
这才是真正增加用户的方法,这里可以看到参数的赙值,调用的存储过程,以及错误的返回和判断。
当我们只需要用户名和密码来添加用户的时候,注意修改配置文件里的membership配置节的地方,将requiresUniqueEmail属性改为false,这样就不需要e-mail必须填写了。
例子:两个textbox(一个是用户名txtname,一个是密码txtpwd),一个按钮(btn),然后在按钮的click事件中直接写:
虽然主要用到的方法是以上这几个,但好多VS2005性能错误和安全的判断都在SecUtility.cs,有兴趣的话我们可以去关心它一下。#t#
Membership.CreateUser(txtname.Text,txtpwd.Text);就OK了,到aspnet_membership数据表中查看你添加的用户吧。系统自动会把关联表里的内容也添加好,看看aspnet_Users是不是也有内容。很简单吧。