当前位置:  编程技术>.net/c#/asp.net
本页文章导读:
    ▪[转]IE下对文件(图片)进行base64转换      原文地址:http://www.blogjava.net/emu/archive/2011/08/28/357431.html@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 在编写某个hta的用.........
    ▪ASP.NET性能优化建议      摘选自零度编程 1、数据库访问性能优化A、尽量减少数据库连接,并充分利用每次数据库连接:连接的创建、打开和关闭是有开销的。可以使用连接池B、合理使用存储过程:存储过程是存.........
    ▪.NET三层架构开发初步      今天咱们来谈下三层架构。说到三层架构,搞过点程序的可能都知道三层架构的概念。但是对三层的精髓可能不是很了解。首先说下自己对三层的理解,就是使用三个(多个)项目结合起来开发.........

[1][转]IE下对文件(图片)进行base64转换
    来源:    发布时间: 2013-10-22
原文地址:http://www.blogjava.net/emu/archive/2011/08/28/357431.html
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 在编写某个hta的用户环境分析工具的时候,经常发现用户被一些莫名其妙的代理服务器所劫持以后,一个正常的文本请求却下载到了一个图片。这种log看多了以后sidney就开始投诉了,想搜集到用户那里收到的到底是个什么图片。

这个图片用户那里虽然可以看,但是要生成到log里面就要另外保存一个文件,如果要上传的话还要开发相应的图片上传功能,这就麻烦了。
 
当然还可以用eml或者mht的形式吧图片打包在log里面,这样图片就会以base64形式编码进去嵌在log的文本里面了。但是hta记得似乎控制save命令的时候不能制定mht格式(没试过),eml要依赖客户端有邮件客户端,还要能通过js操控,更麻烦。
 
因此最简单的看起来就是zishun写的《利用HTML5对文件进行base64转换》方案了,只要把图片转成DATAURI,就可以很容易的把图片信息嵌入到页面里面并在现代浏览器里面展现。这个方案唯一的问题是,仅限非IE。
 
还好IE其实也有类似的功能,并且效率更高,唯一的问题是要依赖activex,不过这再hta里面就不算问题了。
 
IE下的图片文件(图片)base64编码代码是这样的:
 
<SCRIPT LANGUAGE="JavaScript">
<!--
var x= new ActiveXObject("Msxml2.XMLHTTP.6.0");
x.onreadystatechange=function(){
    if(x.readyState<4)return;
    var xml_dom = new ActiveXObject("MSXML2.DOMDocument"); 
    var tmpNode = xml_dom.createElement("tmpNode"); 
    tmpNode.dataType = "bin.base64"; 
    tmpNode.nodeTypedValue = x.responseBody; 
    base64string=tmpNode.text.replace(/\n/g,"");
    document.write("<img src=/index.html"data:image/bmp;base64,"+base64string+"\">")

}
x.open("get","http://www.blogjava.net/images/blogjava_net/emu/1359/o_emu120.jpg",true);
x.send("");
//-->
</SCRIPT>
 
 
posted on 2011-08-28 12:11 emu 阅读(2510) 评论(2)  编辑  收藏


评论

# re: IE下对文件(图片)进行base64转换 2011-08-28 23:59 Meteoric
hta果然够强大,就几行代码,我是用flash实现编码和解码,不知道使用hta能不能把base64的字符串再转成图片呢

flash实现的链接地址:http://drmcmm.baidu.com/media/id=n1DsP1c1nWf&gp=401&time=nHnkPjc1PWfknf.swf



  回复  更多评论 
  

# re: IE下对文件(图片)进行base64转换 2011-08-30 00:40 emu
把stream用fso写到文件系统呗。@Meteoric
其实不一定要用hta的,IE下htm都支持activeX,只是可能要用户确认权限。我这里是碰巧再维护个hta而已。  回复  更多评论 
  
 

本文链接


    
[2]ASP.NET性能优化建议
    来源:    发布时间: 2013-10-22

摘选自零度编程

 

1、数据库访问性能优化

A、尽量减少数据库连接,并充分利用每次数据库连接:连接的创建、打开和关闭是有开销的。可以使用连接池
B、合理使用存储过程:存储过程是存储在服务器端的一组预编译的SQL。使用存储过程可以避免对SQL的多次编译,后续查询可以复用之前的执行计划。另外存储过程可以减少SQL语句网络传输开销
C、优化SQL语句:这个就太多了,如合理使用索引、视图,避免复杂子查询

 

2、字符串操作性能优化

A、使用值类型的ToString()方法
对不同类型进行 + 连接时,会发生装箱操作转化为引用类型再添加到字符串中。装箱操作会在托管堆中分配一个新对象,将原有的值复制到新对象中,代价很高。使用ToString()方法可以避免装箱,从而提高性能
B、利用StringBuilder类

 

3、禁用调试模式

 

4、只要合适,尽量缓存数据和页面输出

 

5、不要依赖代码中的异常来控制程序正常流程

      异常的开销是很大的。所以慎用异常。

 

6、使用Page.IsPostBack避免往返过程的不必要处理

void Page_Load(Object sender, EventArgs e) // Set up a connection and command
{
if (!Page.IsPostBack) // 第一次加载时才填充数据
{
String query = "select * from Authors where FirstName like '%JUSTIN%'";
myCommand.Fill(ds, "Authors");
myDataGrid.DataBind();
}
}

 

7、如果不使用会话状态,可以禁用它或者设置只读

A、若要禁用页的会话状态,请将 @ Page 指令中的 EnableSessionState 属性设置为false。例如:
<%@ Page EnableSessionState="false" %>
B、注意如果页需要访问会话变量,但不打算创建或修改它们,则将 @ Page 指令中的 EnableSessionState 属性设置为 ReadOnly。

 

8、利用成熟的工具进行性能测试

      具体参考相关书籍

本文链接


    
[3].NET三层架构开发初步
    来源:    发布时间: 2013-10-22

今天咱们来谈下三层架构。说到三层架构,搞过点程序的可能都知道三层架构的概念。但是对三层的精髓可能不是很了解。

首先说下自己对三层的理解,就是使用三个(多个)项目结合起来开发出一个应用系统。下层项目为上层项目提供了接口(说白了就是可以从上层类访问下层类的方法),并且将结果返回到上层。

接下来咱们来看下三层的优势

三层架构的优势

  • 适应变化、利于维护:项目需求往往随市场的变化而发生变化,三层架构通过将各功能模块分离,提高了项目的可维护性和代码的可重用性。
  • 适用于协作开发。
  • 主流趋势,越来越多的企业在开发项目时采用三层架构作为项目的基础架构。三层架构在将来会有更多的市场。
  • 当然,这些优势在后续的开发中我们会有更新的体会。

    了解过三层的优势后,我们来看下三层架构究竟由哪三层组成,重点到了。

    三层架构包括哪三层?

    数据访问层(DAL)、业务逻辑层(BLL)和UI(表示)层

     

    数据访问层:封装了所有与数据库的交互操作。数据交互无非就是增、删、改、查(C:Create,

    D:Delete  U:Update   R:Retrieve),数据访问层就针对每个数据表提供增、删、改、查操作,不做业务逻辑的判断。

     

    过去使用ADO.NET连接数据库需要编写固定格式的代码,比如打开数据库连接,关闭数据库连接等。在面向对象的课程中,我们在每一个数据访问层的方法中编写重复的ADO.NET代码。那么大家有没有想过重用这些代码呢?这里我们使用了一个封装了ADO.NET方法的类----SqlHelper类,用来提高数据访问代码的可重用性。

         针对模型层中的每一个类,数据访问层都有一个对应的数据访问类。比如针对User实体类,有一个对应UserService类,专门处理有关Users表的数据处理。

         接下来,咱们来对三层的理解更进一步。

    三层深入理解

    1.复杂项目不能把SQL语句直接写到界面里,不模块化、难以维护,应该采用三层架构。先慢慢吸收,然后再理解。Web开发中的三层机构也是同样的结构。还有更复杂的三层架构和多层架构(petshop)每个人写法都不一样,理解精髓即可。

       这里需要说明:三层只是一个比较好的软件架构,不是非使用三层不可。

     2.三层的组成

       01.界面层UI(User Intgerface);

    02.数据访问层DAL(Data Access Layer);

    03.业务逻辑层BLL(business  logic  layer)

      对数据进行操作的代码写在DAL中,一般就是SQL语句,DAL只有对数据的操作,不能有逻辑判断。

    三层架构图

     

    三层实战

    咱们一起来创建一个三层项目

    1.命名规则:DAL层,一般使用表名+Service,例如:Emp表在DAL层命名为EmpService。

         BLL层,一般表名+BLL,例如:Emp表在BLL层命名为EmpBLL

         但是这里注意一点:BLL不是简单对DAL层的一个转发,还包括业务逻辑。例如:“未经审核的数据不允许删除”这样的逻辑应该写到BLL中。

        2.三层的优点

          UI层和BLL打交道,不用处理SQL语句;开发更方便,更不容易出错。一般,UI层中没有复杂的代码,解耦合,容易改变UI层技术。如果由Winform改成asp.net只要修改UI即可。如果由Sql Server改成Oracle,只需修改DAL即可。

    这里还要提醒大家一点:Model是在三层之间传递数据的。而且Model不属于三层中任意一层。

    那么各层之间使用Model(实体类的作用是什么呢??)

    表示层中使用实体类:

    1.  将解析实体对象中封装的数据展示给用户

    2.  将用户请求的数据封装到实体对象中

    业务逻辑层中使用实体类

  • 将接收到的实体对象传递到下一层
  • 根据用户请求对实体对象中的数据进行处理。
  • 在数据访问层中使用实体类

  • 将数据库中的数据封装到实体对象中或将多个实体对象封装成集合
  • 将实体对象中的数据保存到数据库中
  • 最后,我们来看下三层的效率。

    三层的效率

     三层一般会比不分层满,但是为了分工明确,这样的少量的性能下降是可以的,很多时候效率不是唯一追求的因素。

     下次课内容咱们一起来使用三层开发一个简单的日记系统。

    本文链接


        
    最新技术文章:
    ▪C#通过IComparable实现ListT.sort()排序
    ▪C#实现对Json字符串处理实例
    ▪Winform实现抓取web页面内容的方法
    ▪Winform实现将网页生成图片的方法
    编程技术 iis7站长之家
    ▪WinForm实现同时让两个窗体有激活效果的特效...
    ▪WinForm实现拦截窗体上各个部位的点击特效实...
    ▪用C#的params关键字实现方法形参个数可变示例
    ▪C#判断某程序是否运行的方法
    ▪C#验证码识别基础方法实例分析
    ▪C#通过WIN32 API实现嵌入程序窗体
    ▪C#实现获取鼠标句柄的方法
    ▪C#事件处理和委托event delegate实例简述
    ▪C#获取程序文件相关信息的方法
    ▪C#中的除法运算符与VB.NET中的除法运算符
    ▪ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedLi...
    ▪Base64编码解码原理及C#编程实例
    ▪C#实现的优酷真实视频地址解析功能(2014新算...
    ▪C#和SQL实现的字符串相似度计算代码分享
    ▪C#使用Word中的内置对话框实例
    ▪C#反射之基础应用实例总结
    ▪C#生成单页静态页简单实例
    ▪C#实现SMTP邮件发送程序实例
    ▪C#实现随鼠标移动窗体实例
    ▪C#使用GDI+创建缩略图实例
    ▪C#实现通过模板自动创建Word文档的方法
    ▪C#中Response.Write常见问题汇总
    ▪C#中多态、重载、重写区别分析
    ▪WinFrom中label背景透明的实现方法
    ▪C#中out保留字用法实例分析
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3