几种开发方式讨论

datahandler2 2008-05-09 09:22:46
因不懂asp.net, 自学就到一家小公司工作。公司就我一个程序员。唉都有点闭门造车。感觉很多流行的开发方式或通用的开发技巧都只能靠自己去询问去分析。感觉还是很累。
该帖希望大家能不吝啬的把自己的一些开发经验分享下。
备注:大家可以询问一些开发类的问题,对提问题和回答好的。将重分答谢。当然。分数不重要。重要的还是参与交流。
我的问题:
1.观看一个网站的开发方法,很多人使用sqlhelper类来实现数据库的操作。但自我感觉这种SQL操作方法代码量还是挺大。
我又看到了一个人是采用(比如aa.xsd).xsd数据集。然后在里面准备好SQL操作语句,它就自动有对应的操作方法出来。
然后通过
using(aaTableAdapter.dbaaTdapter ta=new aaTableAdapter.dbaaTdapter ())
{
string strTitle;
.....
aa.insertData(strTitle);
}
我对比了下。上面那种方法代码量确实减少了非常多。参数部分也基本上是傻瓜化在建立.xsd数据集的时候自动生成。不用我们在去准备什么sqlparameter。就直接好像用函数一样,把所有原始数据通过aa.insertData()传递进去就可以。
对比了下。好像用微软提供的这种SQL封装操作,ADO.NET编程似乎更加简单。但我不知道它底层是怎么处理的。另外感觉如果你觉得不灵活,好像挺难扩展的。另外这种方式有一个我非常不喜欢的那就是如果是插入操作。因表数据字段非常多。整个函数的参数好多个。程序上好难阅读。看过一些书,书推荐说一个函数最好不要超过5个参数。超过的化可以用结构体来代替。
不过怎么说感觉都不知道采用哪种方式好。另外外面公司,你们主要又是以哪种方式,或其他方式,能分享下吗?
晕倒----300分发不了。以后好的化再追加分数。看来级别还是很低,郁闷
2.脚本性过滤
网站的前台有输入的地方,肯定要防过滤。一般讲过滤我是采用这种方式:
A)非编辑器控件、纯文本框输入的,则用Server.HtmlEncode(string s)进行html代码加密。
B)涉及到编辑器控件的,就采用网上一直在用的过滤脚本函数。
但系统后台呢?大家有没有过滤。有时感觉要过滤还是不过滤。都有点把握不住。过滤了是安全了点。但感觉是自己人在用。没必要弄这些。人家也不懂脚本攻击。特别是新闻发布方面,新闻内容非常多字符,采用网上流行的过滤方法好像怕怕的。性能上似乎会有所影响。不过滤感觉心里怪怪的。
大家在开发过程中有没有过滤后台输入的脚本。

3.验证码机制
验证码相信很多人都是直接从网上一个公用的方法。其中涉及到的是验证码如何存储问题。有的人是加密存储到cookies、有的人是存储到session。但似乎现在很多的群发软件都可以识别验证码,感觉验证码都成了一种摆设。特别是在博客园看到一篇介绍如何不用输入csdn验证码就可以直接登录。感觉验证码似乎越来越不起以前的重任了。
我知道这个验证码的存储方式、混肴程度有关。另外部分抓包也感觉都是挺难防的。有网友提出了用基于IP限制时间策略。另外看部分论坛也有采用问答方式。但试问下,不是验证只用在注册页面上。再回帖过程中,难道也要用回答方式。那也太变态了。
不知道大家如何处理的,还是平时没怎么注意这个。最近是感觉自己维护的一个站点有这方面被人刷的疑问。

4.基于Forms角色验证。
有的人网站,验证会员是否已经退出去或是否已经登录。采用session或cookies来判断是否为空。以前我们这边的一个网站也是采用这种方式。但有一次。我在研究一个站的某个功能安全性时候。发现修改cookies工具实在过多。session算比较少。但如果说站点的session存储机制采用基于inproc方式,老是会出现session丢失现象。改用基于StateServer又觉得耗服务器性能。
而后面看到了Form验证机制。不过我感觉FORM角色验证机制,又似乎有点很耗。(~~~呵呵,我不了解这个底层,凭猜测说,说错了。不要批)。Form验证好像对页面每个元素,如图像啊,样式啊。都会根据web.config进行验证是否有访问的权限。这就感觉
一个页面要是复杂点。图片多点。不是会很耗验证时间。
大家觉得呢?还是有更好的验证机制。

4.URL重写URL重写可以一定情况下优化SEO。在安全性方面也相对会好一点。看过网站的很多这方面资料。有的人是用 asp风格的ISAPI.dll
然后在Http.ini文件中写对应的正则。有的人是直接在IHttpModule自己写解析URL。然后在Web.config写正则。或也在一个文件中保存正则。我曾经用过别人的后面这种用法。发现当一个站点重写页面多。那么在查找匹配重写的页面程序调试的时候感觉很让人担忧。
有这方面经验的人能给些好的方案或好一点的方法、案例吗?

5.静态页面
新版经理要求一些资讯栏目生成静态页面。提升访问速度。以前没做过。后面也学习了。看别人这方面的用法。一个是基于URL地址进行生成静态页面(我试了下,感觉太慢了)。另外一个是在信息添加、修改的时候重新生成静态页面。静态页面给我的感觉怎么说呢》?----难道aspx动态页面这么不能承受。怎么很多人都喜欢搞成静态的。可谓做静态的人喜欢页面尽量弄成动态丰富化。而搞动态的人又喜欢页面往静态页面形式开发。不过感觉有一个很大的难点。不是说每个静态页面就不可能包含动态内容的。向评论啊。用户登录啊都是个比较麻烦点。那时这方面很菜,花了很超长时间。有尝试过在Form Action=“aa.aspx”,然后通过在aa.aspx页面中进行Request.From方式进行获取静态页面的文本框文本,进行SQL操作。有点向百度一样。后面还是替换成了xmlhttprequest进行登录验证和评论。不过js功底不是很好。只能用基础简单的。但有是出错。简直是要杀人。调的很久。
自我感觉这方面效率低。大家又是如何生成静态页面、如何在静态页面中处理含有动态的内容。

6.主题与样式
以前可能在页面上基础很差、经验不过巴。老是把美工好好的页面变成乱七八遭的。后面也从中总结出了原因。也已经在某个帖中写了出来。后面就基本上再没遇到这方面问题。感觉做前台页面轻松了超多。不然最怕的还是在页面上。
问题是:论坛SP1234大师,曾提出这种方案,采用主题---Themes。可以把程序和美工严格的分开来,从而把美工的工作提升到一定的灵活性上。后面我也抽出了时间弄了下。可能对.skin不熟悉巴。一直在.master中无法使用只能在.aspx中使用。用的过程中自我感觉Vs开发设计工具不直接对主题的支持---也就是说你用主题把样式文件拷贝到主题下的时候,在用VS查看那个设计页面
的时候,页面的样式好像无法加载。页面很难堪,特别是用div+css布局的页面更是变形的难堪要命。可能也因为以前一直因为这个原因,非常惧怕这种很乱的页面巴。后面也就不大想用主题,新接触这个不久。中间可能有用错或不懂里面的功能。大家是怎么用主题的。是不是如我所说页面在Vs2005查看会很乱。只有IE浏览的时候才正常。
期待有经验的高手解答。
目前时间关系----问题先提到这。希望大家能说说自己的看法。呵呵,无论是出于提升自己还是帮助别人我想大家都是有益的。谢谢大家。~~~
...全文
1135 73 打赏 收藏 转发到动态 举报
写回复
用AI写文章
73 条回复
切换为时间正序
请发表友善的回复…
发表回复
datahandler2 2008-07-23
  • 打赏
  • 举报
回复
[Quote=引用 72 楼 petroe 的回复:]
¦ ¦ ¦
[/Quote]
汗~~~,答帖不专业。呵呵
petroe 2008-07-22
  • 打赏
  • 举报
回复
|||
datahandler2 2008-05-14
  • 打赏
  • 举报
回复
大家也知道,csdn技术分在给分多的时候,不好控制每个人的分数。后面可能几位积极讨论的人可能都没能比较公正的给分。希望大家谅解。谢谢大家参与。
datahandler2 2008-05-11
  • 打赏
  • 举报
回复
[Quote=引用 63 楼 LoveCherry 的回复:]
我觉得你一个人能考虑到这些已经很不容易了
欢迎加我MSN和我讨论
lovecherry_1983@hotmail.com
[/Quote]

================
大学用过msn一段时间。现在在Windows2003装不了。呵呵,有机会再和你讨论。呵呵,谢谢
datahandler2 2008-05-11
  • 打赏
  • 举报
回复
[Quote=引用 65 楼 job_2006 的回复:]
2.脚本过滤。我也知道多几行代码不算什么大性能。但我不知道你有没有考虑过。在前台一个列表页,有50个的新闻列表。也就是你需要过滤50个标题的脚本。你程序一个用户就要执行50遍。那有1000个或10000个浏览。那要执行就遍。
当然可以直接用Server.HtmlEncode就行了

--------------------
在后台保存的时候就已经过滤了,前台显示就不用执行什么过滤脚本了吧??
[/Quote]

=======================================
嗯,说的也对。看来犯了实践的错误。谢谢您提醒。
zuxiyo 2008-05-10
  • 打赏
  • 举报
回复
       //两者都用
//微软企业库方式
public int Add(Entity model)
{
Database db = Database.CreateDatabase();
DbCommand comm = db.GetSqlStringCommand(SQL_INSERT);
AddCommandParameter(db, comm, model);
db.ExecuteNonQuery(comm);
}
//SqlHelper
public int Add(Entity model)
{
string sql = @"Insert into table1
(field1,field2)
Values
(@field1,@field2)";

SqlParameter[] param =
{
SqlHelper.MakeInParam("@field1",SqlDbType.VarChar,50, model.Field1),
SqlHelper.MakeInParam("@field2",SqlDbType.Int,4, model.Field2)
};

SqlHelper.ExecuteNonQuery(SqlHelper.DefaultConnectionString, CommandType.Text, sql, param);
}
datahandler2 2008-05-10
  • 打赏
  • 举报
回复
[Quote=引用 59 楼 zuxiyo 的回复:]
C# code //两者都用
//微软企业库方式
public int Add(Entity model)
{
Database db = Database.CreateDatabase();
DbCommand comm = db.GetSqlStringCommand(SQL_INSERT);
AddCommandParameter(db, comm, model);
db.ExecuteNonQuery(comm);
}
//SqlHelper
public int Add(Entity model)
{

[/Quote]

=============================SQLHelper我一般是用这个的
但自我感觉还是要声明很多个参数,感觉很繁琐。代码量大。虽然传到内部是个sqlparamer[]但前面也是要靠我们自己去声明
。我再想微软能不能提供一个直接我们传递值进去。然后结合对应的存储过程或命令就可以判断是什么类型的参数。这也大大减少了我们对插入、修改的参数声明的繁琐。
jjcl521 2008-05-10
  • 打赏
  • 举报
回复
[Quote=引用 66 楼 kong521 的回复:]
关注下,收藏下
[/Quote]
zero8500 2008-05-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lqjlmp 的回复:]
小菜我还没有学会哦@!@
[/Quote]
kong521 2008-05-10
  • 打赏
  • 举报
回复
关注下,收藏下
job_2006 2008-05-10
  • 打赏
  • 举报
回复
2.脚本过滤。我也知道多几行代码不算什么大性能。但我不知道你有没有考虑过。在前台一个列表页,有50个的新闻列表。也就是你需要过滤50个标题的脚本。你程序一个用户就要执行50遍。那有1000个或10000个浏览。那要执行就遍。
当然可以直接用Server.HtmlEncode就行了

--------------------
在后台保存的时候就已经过滤了,前台显示就不用执行什么过滤脚本了吧??
job_2006 2008-05-10
  • 打赏
  • 举报
回复
关注
LoveCherry 2008-05-10
  • 打赏
  • 举报
回复
我觉得你一个人能考虑到这些已经很不容易了
欢迎加我MSN和我讨论
lovecherry_1983@hotmail.com
叶子 2008-05-10
  • 打赏
  • 举报
回复
http://blog.csdn.net/21aspnet/archive/2004/10/22/147007.aspx
C#中调用Windows API的要点

需要的话,可以了解一下
amandag 2008-05-09
  • 打赏
  • 举报
回复
问题较多,占位,有空交流
liu_binq63 2008-05-09
  • 打赏
  • 举报
回复
关注一下,学习中..........
datahandler2 2008-05-09
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 yunfeng007 的回复:]
3.验证码机制?---我想说的是用肯定要用。一定意义上还是可以阻止大量注册和大量尝试。但我想说的是现在的识别验证码软件很多。我想和大家交流的是,大家如何来处理这个,也就是好的解决方案。

再好的验证码机制也架不住人肉,据说gmail验证机制就是这么被搞定的。所以我觉得一个稍微复杂一点儿的图形码验证机制就足够了,你最多可以限制来自同一个ip的注册及尝试在一定时间内不能超过多少次。
[/Quote]
===================
说的很有道理。那具体实现方案有类似demo吗?
zpcoder 2008-05-09
  • 打赏
  • 举报
回复
先占个位,以后来学习
txgaozhao 2008-05-09
  • 打赏
  • 举报
回复
学习了
yunfeng007 2008-05-09
  • 打赏
  • 举报
回复
3.验证码机制?---我想说的是用肯定要用。一定意义上还是可以阻止大量注册和大量尝试。但我想说的是现在的识别验证码软件很多。我想和大家交流的是,大家如何来处理这个,也就是好的解决方案。

再好的验证码机制也架不住人肉,据说gmail验证机制就是这么被搞定的。所以我觉得一个稍微复杂一点儿的图形码验证机制就足够了,你最多可以限制来自同一个ip的注册及尝试在一定时间内不能超过多少次。
加载更多回复(51)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧