ASP.net

摘要: 目前已归档公文查询现状 a) 数据库结构不合适。由于需求要求每个用户只能查询自己能查的公文,但标识一个公文可以被哪个公司、部门或个人可查的字段,却不存在,必须使用Like语句来匹配,极大的增大了表的扫描范围,增大了数据库IO、内存开销,降低了查询速度。 b) 查询结果集取出全部数据,直接导致数据库IO、内存、网络资源增加。同时由于在WebService层创建完所有对象后,再进行分页,然后取出指定一个页面的结果集返回,使数据流的使用效率几乎为0。阅读全文
posted @ 2010-06-22 14:54 阿牛 阅读(143) | 评论 (0) 编辑
摘要: 朋友说开发电信的MMS,其实需要图片作为附件放在调用WebService接口上,使用Http的Content-Type: Multipart/Related;来发送,真让人感觉不伦不类的。不知道为什么不设计成一个字段是BASE64编码得了呗。 难道只能用朋友说的拼字段的方法了不? 我用Reflect分析了一下,貌似这样也可以实现。 我们知道,我们添加一个WebService引用时,会自动生成从 SoapHttpClientProtocol 的子类。我的想法是,我们写一个 继承自"SoapHttpClientProtocol” 的子类SoapHttpClientProtocolEX, 重写方法:GetWebRequest() 返回我们写的代码 HttpWebRequestEx类,然后在原始 HttpWebRequest 类的GetRequestStream()时,返回我们的流转移器:NetwordStreamEx ,并在方法关闭流 Close() 前,加入自定义的附件信息。 阅读全文
posted @ 2009-12-27 23:56 阿牛 阅读(391) | 评论 (1) 编辑
摘要: 网上很多地方介绍了如何用SharePoint.OpenDocument打开基于WebDAV协议的Word文档,可是打开后,如果对文档进行一些设置操作,却苦于没有Word对象。 我这里实现了得到Word.Application对象,可以进行设置文档域一类的操作了。 可是,我本来想得到文档的保存事件并激活我的处理函数,目前这里卡住了,貌似没有出路。 阅读全文
posted @ 2009-06-02 17:54 阿牛 阅读(706) | 评论 (0) 编辑
摘要: 上一篇文章 "无侵入方面编程-用HttpModule+SoapExtension监视页面执行参数(一)"中,我们实现了监视每个页面的执行情况和调用WebService的简单信息。 这次我们继续深入一下SoapExtension的应用,在不改变Soap的WSDL文档的情况下,配合在Dotnet编写的WebService站点配置我们编写的SoapExtension,来穿透传输我们自定义的数据对象。由于SoapExtension是全局的,我们还要加一些标识来区分服务器是否已经配置了我们的SoapExtension,从而不影响其它的WebService调用。 在SoapExtension中,我想到有两种方案: 一种是直接在SoapMessage.Headers中插入自定义的SoapHeader对象,然后在客户端的序列化后,从SoapUnknownHeader中取出数据,然后反序列化成自定义的对象。 第二种是对SoapMessage.ContentType 添加一个额外的标识,在另一方检测这个标识,来从流中取出自己长度的数据。反序列化成自定阅读全文
posted @ 2009-06-01 18:00 阿牛 阅读(1214) | 评论 (2) 编辑
摘要: 先简单介绍一下项目吧,我们这个项目是用VS2003开发的,老早一个项目。WEB前端机+业务处理(WebService层)+数据库分别布置在不同的计算机上。 现在老总有一个需求,要统计出每个页面的执行时间,以及每次调用过哪些WebService方法,调用的时间等参数。 可行的方案有好多,但我感觉使用HttpModule+SoapExtension,可以不在改变目标系统源码的基础上,完成这项工作。也许有一天,老总说,现在不需要再统计了,我就直接配置一下,不再统计就行了。 由于要调用WebService,我们采用编写一个SoapExtension,在它的ProcessMessage函数中,在message.Stage是 BeforeSerialize 时,记一个开始时间,并采集一些数据,在message.Stage==AfterDeserialize时,再采集一些时间等数据。最后通过HttpContext.Current.Items[WSInvokeMonitorKey]获取HttpModule的对象,把采集到的数据放在HttpModule里阅读全文
posted @ 2009-05-22 10:51 阿牛 阅读(1863) | 评论 (6) 编辑
摘要: 在网速慢或者网站反应慢的情况下,如果提交表单需要超过5秒的时间还未提交成功,多数人会重新点击提交。这样不仅造成错误的数据,还会加剧服务器的压力。 通过使用HttpModule,我们可以在表单处理前,检测一些标志,从而防止用户重复提交数据,再通过一些接口,让用户自己来处理重复提交时,应该如何告诉用户。 通过使用HttpModule,我们也可以在客户端表单提交时,使用DIV覆盖住表单,从UI层防止用户再次单击提交(用户直接F5管不了)。 下面是实现代码: 阅读全文
posted @ 2009-05-21 17:41 阿牛 阅读(3090) | 评论 (18) 编辑
摘要: 一个类似QQ的分组菜单 支持初始化时自动打开指定的菜单项 IE下测试通过.阅读全文
posted @ 2009-04-22 17:52 阿牛 阅读(647) | 评论 (3) 编辑
摘要: 在执行SQL语句时,有时我们必须使用Like语句,还需要动态依条件拼出SQL然后执行。此时你可以会因为一点点麻烦而拒绝使用参数化SQL,其实一点也不麻烦。阅读全文
posted @ 2009-03-03 12:39 阿牛 阅读(413) | 评论 (0) 编辑
摘要: 在异架构间通讯时,我们一般会采用WS。我遇到的情况是WSDL已经由AXIS生成,我需要用Dotnet实现服务器。 简单实现后,发现里面的 NotifySOAPHeader 总是取不值,添加 SoapUnknownHeader[] 后,里面有值。可见是不能识别AXIS发送来的SoapHeader。本文尝试解决了这个问题,避免了为Java调用时写代码从SoapUnknownHeader中取数据了。 阅读全文
posted @ 2009-02-23 16:57 阿牛 阅读(1789) | 评论 (10) 编辑
摘要: 如果你的项目要求你的程序对高达几万条的数据在集中的时间内执行固定序列的操作,且不能完全使用存储过程时而需要使用程序来执行时。会需要这些优化。 我们知道,SQL服务器对一条语句的执行,需要分析、编译、执行这些步骤,通过参数化我们可以对一种命令只分析和编译一次,而执行多次,从而提高效率。在执行时,如果每次提交语句,可以完成多条SQL语句,则可以减少通讯时间,也可以提高效率。 通过 System.Data.IDbCommand.Prepare() 方法,我们可以在第一次执行语句时,分析和编译SQL语句,然后保存这个Command对象,下次使用时,直接设置参数执行。这个方法对Oracle和MsSql Server都有效。 如果执行一批语句,在T-SQL和PLSQL中有一点不一样。 在T-SQL中,多条SQL语句之间,使用分号";"分隔就行。 delete from TableA where id = @id;update TableB set Name=@name where id=@id 而在PLSQL中,则需要阅读全文
posted @ 2008-12-29 10:02 阿牛 阅读(2963) | 评论 (18) 编辑
摘要: 动态控件,复合控件,相信大家都已经很熟悉了。只要达到同样的展示及功能,用什么样的方式实现应该取决于实际情况。我在一个项目中遇到的情况是:已经有了很多页面,但每个页面都没有用Validation控件来验证输入的有效性。 为了达到相同的展示效果: 常规办法:是为每个页面的每个TextBox有选择的生成RequiredFieldValidator、RangeValidator、 CompareValidator、RegularExpressionValidator、FilteredTextBoxExtender。但这个方法,需要每个页面都去添加,并且统一调整起效果来,工作量太大。 复合控件:是写一个复合控件,依参数来添加验证控件。这个也需要在页面中统一添加一次(工作量约为第一个办法的1/3),还需要更改一下后台的控件类型声明(我的后台代码在另一个程序集中)。 动态控件:写了个直接继承自TextBox的控件,在适当的地方,依参数来添加验证控件。这个也需要在页面中统一改动一下(工作量和复合控件的方法相当),不过,后台的代码不用做发改阅读全文
posted @ 2008-12-10 17:29 阿牛 阅读(1449) | 评论 (11) 编辑
摘要: 如果非要用CustomValidator+WebService+asp.net ajax进行验证,这里给出也一个实现的方法。还贴出了一个常规的做法!阅读全文
posted @ 2008-12-09 16:25 阿牛 阅读(752) | 评论 (0) 编辑
posted @ 2008-11-24 19:33 阿牛 阅读(648) | 评论 (1) 编辑
摘要: 要实现一个类似框架结构,有头有尾,中间部分要分菜单、分隔条和内容三部分。 写好的效果图如下: 阅读全文
posted @ 2008-11-22 13:25 阿牛 阅读(335) | 评论 (0) 编辑
摘要: 有时候,我们不需要用CheckBoxList,这时就不能得到选中的值,其实,我们可以把值存在ViewState中,这样在服务器端可以取出来。阅读全文
posted @ 2008-11-17 18:22 阿牛 阅读(127) | 评论 (0) 编辑
摘要: 建立步骤如下:
一. 建立一个 State Machine Workflow Library ,命名为StateLib. 完成后,修改文件WorkFlow1为WF_Login
二. 在里面通过设计器,加入下面的工作流(具体如何设计,不再说明),最终结果如图:
三. 把工作流发布成WebService,VS2005会自动命名为:StateLib_WebService
四. 添加一个新WebSite项目,命名WorkflowSite. 在Default.aspx中添加输入框,以及按钮
五. 编写事件,测试一下阅读全文
posted @ 2007-09-12 14:24 阿牛 阅读(2713) | 评论 (7) 编辑
摘要: 实现任意字符组成的任意进制的转换类阅读全文
posted @ 2007-07-09 16:51 阿牛 阅读(1650) | 评论 (9) 编辑