摘要:晚上在博客堂读完VSTO写的一篇文章,介绍了CodePlex上面的一个项目,叫做“All-In-One Code Framework”,代号CodeFx,简单的说,就是收集了几乎所有常见的微软开发技术的示例项目,将其打包到这个框架里,而且还使用各种不同的语言进行实现。比如创建一个ActiveX控件和COM组件,CodeFx里面使用ATL、MFC、VB、C#来实现同样的功能。 适合新手入门,也可以作为一份模板供经验丰富的开发者使用,可节省大量的时间。官方网站上给出了框架的基本结构,如下图所示:COM组件和ActiveX控件示例数据访问示例 库示例进程间通信示例花了2个小时粗略阅读了代码,记录下学
阅读全文
随笔分类 - ASP.NET
摘要:这两天,本来想花点时间研究一下QQ空间、农场外挂,于是抓包分析一了下,只可惜,在QQ网页登录时进行了加密处理,可惜我对网页编程一窍不通。有些朋友曾讲过那些是通过JS代码进行加密,可惜我JS也是一片空白,真是“出师未杰身先死”,惭愧惭愧...... 于是只好挑CSDN这类简易一些的尝试学习一下(仅供学习交流),下面是学习笔记: 程序运行截图: 1、本机环境:Windows XP SP3、ADSL 2、开发工具:WildPackets OmniPeek V5.1.4 Visual C++ 6.0 IE6.0 FlexEdit V2.3.1871 3、数据包截图: (QQ登录时,在密码222...
阅读全文
摘要:对于没有任何源代码和PDB文件的预编译程序集而言,如果没有合适的工具,调试起来并不容易。使用Red Gate的.NET Reflector可以在Visual Studio中即时反编译程序集,然后像调试有源代码的程序集一样单步跟踪它。大家需要了解.NET Reflector(在VS和VSPro版本中)是可以集成到Visual Studio中的。标准的内置对象浏览器只显示公有方法和类(见图1),而.NET Reflector的对象浏览器(见图2)可以对编译好的程序集进行更为深入的分析,可以让用户浏览内部类、方法和代码。Red Gate .NET Reflector的Visual Studio插件能
阅读全文
摘要:SignalR 是 ASP.NET 团队正在开发的一个 Microsoft .NET Framework 库和 jQuery 插件,可能包括在以后版本的 ASP.NET 平台中。 它提供了一些前景极为光明的功能,而这些功能正是 .NET Framework 当前不曾具有的,并且是越来越多的开发者所需要的。SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应
阅读全文
摘要:SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向客户端发送异步消息。它和AJax类似,都是基于现有的技术。本身是一个复合体。一般情况下,SignalR会使用Javascript的长轮询( long polling),实现客户端和服务端通信。在WebSockets出现以后,SignalR也支持WebSockets通信。当
阅读全文
摘要:搜到了wiki上的一篇文章——<List of performance analysis tools>,链接地址:http://en.wikipedia.org/wiki/List_of_performance_analysis_tools 这篇wiki写的是相当的全面,建议有兴趣的看看~~对于在性能调优这一领域的尝试有一个小小的尝试吧~~
阅读全文
摘要:在过去十年间,涌现了许多新的软件技术和平台。每种新技术都要求掌握专门的知识才能创建出性能良好的应用程序。现在,由于各种 Internet 技术(如博客)使失望的用户可轻松地否定您的应用程序,因此您确实需要将性能放到首要位置。在计划早期,就应添加响应性能要求并创建原型来确定可能的技术限制。在整个开发过程中,还应衡量应用程序的各个性能方面以发现可能的性能下降,同时确保速度较慢情形下的测试人员文件并跟踪其错误。即使拥有最好的计划,仍必须在产品开发过程中调查性能问题。在本文中,我们将向您展示如何使用 Visual Studio® Team System Development Edition
阅读全文
摘要:@echo off SET Pash=%cd%rem 删除当前目录下所有obj,bin目录for /f "tokens=*" %%a in ('dir obj /b /ad /s ^|sort') do rd "%%a" /s/qfor /f "tokens=*" %%a in ('dir bin /b /ad /s ^|sort') do rd "%%a" /s/qdel %Pash%\Build\Release\Client\*.* /s/qdel %Pash%\Build\Re
阅读全文
摘要:在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate,至于委托的本质请参考我的另一随笔: 一、为什么Control类提供了Invoke和BeginInvoke机制?关于这个问题的最主要的原因已经是dotnet程序员众所周知的,我在此费点笔墨再次记录到自己的日志,以便日后提醒一下自己。1、windows程序消息机制Windows GUI程序是基于消息机制的,有个主线程维护着一个消息泵。这个消息泵让windows程序生生不息。 Windows GUI程序的消息循环 Windows程序有个消息队列,窗体上的所有消息是这个队列里面消息的最主要来源。这里的while循环使
阅读全文
摘要:开发语言:C#3.0IDE:Visual Studio 2008本系列教程主要包括如下内容:1. BeginInvoke和EndInvoke方法2. Thread类3.线程池4.线程同步基础5.死锁6.线程同步的7种方法7.如何在线程中访问GUI组件一、线程概述在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多个子任务执行。这就需要在同一个进程中开启多个线程。我们使用C#编写一个应用程序(控制台或桌面程序都可以),然后运行这个程序,并打开windows任务管理器,这时我们就会看到这个应用程序中所含有的线程数
阅读全文
摘要:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("Main ThreadId = " + Thread.CurrentThread.ManagedThreadId); //给委托赋值 Func<long
阅读全文
摘要:之前,我已经说过了BeginInvoke与Invoke的异同这里就要再来说说endinvoke的意思了我们知道 beginvoke就是通过线程的调用来异步的完成一些工作。一般只需要启动它就好,让它一直操作着。例如 用begininvoke修改界面显示,那么就是每次有所变化时它自动的改变界面的显示,因为它在后台执行着。但是有时候我们需要知道它的结束信息,并且在结束时还有所安排。这时候就需要endinvoke了先来看看,begininvoke的返回值类型:1: public interface IAsyncResult 2: { 3: object AsyncState { get...
阅读全文
摘要:问题描述: http错误404-文件或目录未找到问题原因: 我遇到的情况是,先按装了.NET,后装的IIS;不确定其他原因也会不会产生类似错误。(如果有,希望大家能贴出更多的原因,方便遇到同样错误的人找到问题的根源)解决方法:首先,要重新注册IIS: 开始--Microsoft Visual Studio 2005--Visual Studio Tools--Visual Studio 2005 命令提示--键入命令aspnet_regiis -i其次,在: 计算机管理--Internet信息服务(IIS)管理器--Web服务扩展--ASP.NET V2.0.50727 中选择允许 最后,重.
阅读全文
摘要:引用如下:[翻译]了解ASP.NET底层架构(完)[翻译]了解ASP.NET底层架构(八)[翻译]了解ASP.NET底层架构(七)[翻译]了解ASP.NET底层架构(六)[翻译]了解ASP.NET底层架构(五)[翻译]了解ASP.NET底层架构(四)[翻译]了解ASP.NET底层架构(三)[翻译]了解ASP.NET底层架构(二)[翻译]了解ASP.NET底层架构(一)
阅读全文
摘要:ASP.NET页面与IIS底层交互和工作原理详解 第一回:引言我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net。他们耐心、细致地告诉你如何一步步拖放控件、设置控件属性、编写CodeBehind代码,以实现某个特定的功能。这种做法,实际上是回答了“如何去做”的问题,却没有回答“为什么可以这样做”的问题。尽管我很推崇 悉江华 先生的《圣殿祭祀的Asp.Net开发详解》一书,但当我翻看了一下其对角色(Role) 和 用户(Member)的讲解时,我决定跳过去直接读后面的章节。因为我发现他也随了大流,对这部分的讲解停留在“如何去做”的层面上。我相信像悉先生
阅读全文
摘要:C#中有两种类型变量,一种 是值类型变量,一种是引用类型变量,对于值类型变量,深拷贝和前拷贝都是通过赋值操作符号(=)实现,其效果一致,将对象中的值类型的字段拷贝到新的对象中.这个很容易理解。 本文重点讨论引用类型变量的拷贝机制和实现。 C#中引用类型对象的copy操作有两种: 浅拷贝(影子克隆/shallow copy):只复制对象的值类型字段,对象的引用类型,仍属于原来的引用. 深拷贝(深度克隆):不仅复制对象的值类型字段,同时也复制原对象中的对象.就是说完全是新对象产生的. 浅拷贝和深拷贝之间的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制...
阅读全文
摘要:关于浅拷贝和深拷贝,我的理解不是很清晰,简单说来,我认为是这样子: 浅拷贝:引用成员在被拷贝时仅复制源对象中引用成员的地址到新对象中,所以在新对象中对引用成员进行更改会影响到源对象(除对引用成员进行赋值外)。 深拷贝:引用成员在拷贝时新建一个引用对象到新对象中,且将源对象中引用对象的成员值复制到新对象的引用对象中,所以在新对象中对引用成员进行更改不会影响源对象。 说起来概念也简单,我想大家纠结的是如何实现深拷贝?浅拷贝的实现很简单,调用Object.MemberwiseClone就万事大吉了。在网上找了一个通过序列化实现深拷贝的例子,自己改了改,欢迎大家品头论足。 这段程序的输出为:...
阅读全文
摘要:应用场景对一个集合进行深拷贝复制,实现的方法有不少,现举一个常规实现方案:例如已有一个List<T> someListList<T> newList = new List<T>();foreach(var item in someList){ T t = new T(); //此处的属性如果是引用类型,还需要考虑该类型的深拷贝实现 t.P1 = item.P1; t.P2 = item.P2; ... newList.Add(t);}复制代码如果类似的需求不止一个,那我们就要反复书写类似的代码,这显然不符合代码重用的原则。思路首先想到的应该是扩展...
阅读全文
摘要:Asp.net 中在客户端触发服务端事件分为两种情况: 一.WebControls中的Button 和HtmlControls中的Type为submit的HtmlInputButton 这两种按钮最终到客户端的表现形式为: <input name="Submit1" id="Submit1" type="submit" value=”Submit”>,这是Form表单的提交按钮,点击以后会作为参数发送到服务端,参数是这样的: 控件的name属性=控件的value值,对应上面的例子就是:Submit1= Submit。 服务
阅读全文
摘要:List<T>.Contains(T item)判断是否包含的根据是什么?答:是按T类型中Equals方法返回的结果来确定的,如果想自定义判断标准,可以重写Equals方法,例子如下: /// <summary> /// 判断相等的情况,默认为Modelid /// </summary> /// <returns></returns> public override bool Equals(object obj) { Devmodel target = obj as Devmodel; if (target != null) retu
阅读全文