Net
文章平均质量分 96
布道
专注但要有大局观(先大后小,思路为先,实验为辅)
展开
-
古老的NET架构部署方案
在我的上一篇文章中有分享过《Net大型系统间调用的问题》 ,现在主要分享一些互联网公司采用net技术栈的典型部署方案。仅供学习,仅供参考原创 2015-09-04 10:33:18 · 866 阅读 · 0 评论 -
Net大型系统间调用的问题
提到分布式系统, 但系统间的交互尤为重要, 下面从实现原理,动态扩展(负载均衡),异构交互(java,php等实时交互)和技术风险等目录1、组件形式(DLL形式)2、RabbitMQ的RPC模式3、WebAPI(http)4、TcpAPI(WCF net.tcp)5、Thrift1、组件形式(DLL形式)>实现原理炼金炉可以单独一个solution, 维护...原创 2015-02-12 17:54:22 · 648 阅读 · 0 评论 -
.NET性能调优之一:ANTS Performance Profiler的使用
ANTS Performance Profiler是我性能调优时最先使用也是最喜欢使用的工具,所以放在了第一篇文章里来分享给大家,希望能给各位带来点帮助。原创 2014-11-14 16:14:26 · 2523 阅读 · 0 评论 -
善用TODO注释(VS2012使用小技巧)
场景1:大家在编码开发的时候,有时候为了便于调试往往就会把错误处理注释掉。如果一个项目小则也罢了,随便把源码翻一下就可以找到那些本不应该的注释。但是要是项目大呢?你怎么找,任凭你是火眼金睛也难以全部找出来。场景2:在团队开发或重构中,有些代码需要优化或需要别人完成时,可以使用此功能。全当做一点小提示不过去可以帮助你做很重要的事情。TODO,顾名思义,就是将要去。。。。将要做原创 2014-11-04 11:58:39 · 4573 阅读 · 0 评论 -
揭开Net事务的神秘面纱
引言 其实事务在数据层、服务层、业务逻辑层多处地方都会使用到,在本篇文章将会为大家一一细说。 其中前面四节是事务的基础,后面的三节是事务的重点,对事务有基础的朋友可以跳过前面四节。 文章有错漏的地方欢迎各位点评。一、事务的定义 所谓事务,它是一个操作集合,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。典型的例子就像从网上银行系统的帐户A转帐到帐户B,它经原创 2014-11-04 11:56:40 · 915 阅读 · 0 评论 -
基础篇:序列化技术
如果你做远程方法调用(RPC)时,比如,服务器端有个类A及对象a,客户端需要无视网络的存在,直接调用对象a。这种情况下,就需要把类A设计为可序列化的,那么它的实例a也就可以实例化了。说得简单点,在服务器的 命名空间中的对象a,肯定不能直接被客户端的命名空间中的一个对象调用,这不可能,对吧。但是如果你把服务器的对象a中的特征属性(不一定是所有属性)变成xml,传送到客户端,然后客户端翻译 2014-07-04 16:59:42 · 750 阅读 · 0 评论 -
基础篇:泛型中实例化的漏洞
泛型是个好东西,它可以对一个对象的声明原创 2014-07-04 11:14:27 · 706 阅读 · 0 评论 -
.NET中自动生成Chm文件的工具
1.ADB这应该是国人开发的工具,界面简洁,使用简单,符合咱习惯,强烈推荐大家使用。它的主要功能特性:(1)根据程序集及其对应的XML文档文件生成风格类似MSDN的文档,并打包为CHM文件; (2)将多个程序集对应的文档合并到一个文档中; (3)自动搜索程序集及其引用的程序集对应的XML文档(包括.Net自带的程序集,如:System.xml); (4)灵活控制在文档中显示转载 2014-07-01 14:54:59 · 1732 阅读 · 1 评论 -
谁说C#就是完全面向对象的语言
看看吧,下面的情况该如何解决:另一种:原创 2014-06-30 09:05:01 · 1450 阅读 · 1 评论 -
Windows平台分布式架构实践 - 负载均衡
最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行。那么大家(开发者和企业)为什么那么的迫切的希望.NET跨平台呢?第一个理由是便宜,淘宝号称4万多台服务器全部运行在Linux,Linux平台下还有免费的MySql,这些都是免费的,这些省下来直接就是利润呀,做企业的成本可以降低又...转载 2014-06-12 11:05:47 · 992 阅读 · 1 评论 -
Assembly.CreateInstance()与Activator.CreateInstanc
关于Assembly.CreateInstance()与Activator.CreateInstance()方法动态创建类对象,大多是Activator.CreateInstance()和 Activator.CreateInstance()方法,非常好用,一般都用了 Assembly.Load("AssemblyName").CreateInstance ("ClassName");的方转载 2014-05-29 11:17:32 · 772 阅读 · 0 评论 -
Delegate、Predicate、Action和Func
写在前面 先说下什么是委托(Delegate),委托在C#中是一种类型,和Class是一个级别,但是我们经常把它看做是一个方法。为什么是方法?准确的说应该是回调函数,在C运行时的qsort函数获取指向一个回调函数的指针,以便对数组中的元素进行排序。C#中提供了一种机制,就是委托,一种回调函数的机制。 在我们做项目的过程中,委托用到的地方很多,像线程中修改窗体的状态、窗体控件事件转载 2014-05-06 10:15:13 · 634 阅读 · 1 评论 -
线程池
每次创建一个线程,都会花费几百微秒级别的时间来创建一个私有的局部栈,每个线程默认使用1M的内存。这个可以在使用Thread类的构造函数时设置: [csharp] view plaincopyprint? new Thread(new ThreadStart(Go), 2); new Thread(new ParameterizedThrea转载 2014-05-06 09:19:10 · 1319 阅读 · 1 评论 -
C#函数式程序设计之泛型
在面向对象语言中,我们可以编写一个元素为某个专用类型(可能需要为此创建一个ListElement)的List类,或者使用一个非常通用、允许添加任何类型元素的基类(在.NET中,首先想到的是System.Object)。这两种方法都有缺点。使用通用类型的基类时,很可能会把不相容的元素添加到列表中;如果使用元素为专用类型的列表,只是推迟此问题的发生,因为实际类型是在最后封装到这个类中。泛型提供了这个问转载 2014-04-29 15:04:31 · 1310 阅读 · 1 评论 -
C#函数式程序设计之函数、委托和Lambda表达式
相信很多人都听说过函数式编程,提到函数式程序设计,脑海里涌现出来更多的是Lisp、Haskell等语言,而C#,似乎我们并不把它当成函数式语言,其实,函数式程序设计并不是只针对某个特定的程序设计语言,而C#,也正一步步使用函数式丰富自己的语言结构,帮助人们更好的实现期望的结果。转载 2014-04-29 13:30:26 · 1439 阅读 · 1 评论 -
IIS5 IIS6 IIS7区别
ASP.NET是一个非常强大的构建Web应用的平台,它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用。 绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices --这些都在ASP.NET层次结构在最高层。这篇文章的资料收集整理自各种微软公开的文档,通过比较 IIS5、IIS6、IIS7 这三代 IIS 对请求的处理过程, 让我们熟悉 ASP.N转载 2014-04-15 20:43:12 · 2981 阅读 · 3 评论 -
Http压力测试工具HttpTest4Net
HttpTest4Net是一款基于C#实现的和HTTP压力测试工具,通过工具可以简单地对HTTP服务进行一个压力测试.虽然VS.NET也集成了压力测试项目,但由于VS自身占用的资源导致了在配置不高的PC上难以做到高并发压力测试,再加上需要装VS这个样一个庞大的工具也是件很麻烦的事情.使用HttpTest4Net这个小工具只需要简单地配置一下参数就可以进行现有的HTTP服务进行压力测试并得到一个详细转载 2014-04-13 20:18:50 · 2295 阅读 · 1 评论 -
编写高质量代码改善C#程序的157个建议
最近刚开始进行查看老代码也发现太多的问题,感觉无从下手,有些东西当时都是只是实现了功能而已,由于自己经历和经验都还很有限。所以打算来学习一下,无独有偶发现了这本书,哈哈,自己感觉也很不错,所以想在此做下笔记。原创 2014-04-08 16:35:11 · 1422 阅读 · 0 评论 -
订阅发布模式(Subscribe/Publish)
订阅发布模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时,会通知所有订阅者对象,使它们能够自动更新自己的状态。 将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相应对象间的一致性,这样会给维护、扩展和重用都带来不便。当一个对象的改变需要同时改变其他对象,而且它不知道具体有多少对象需要改变时,就可以使用订阅翻译 2014-03-19 21:33:07 · 2974 阅读 · 0 评论 -
[EntLib]微软企业库5.0 学习之路——第一步、基本入门
直到去年在做项目的时候在看代码生成工具的时候看到了许多生成工具都内置了企业库的数据库访问及一些相关模块,才突然顿悟了,可能企业库应该还是有点用的,于是就试着使用了企业库的一些模块(当时版本是4.1),果然觉得企业库还是很不错的,微软在企业库中为我们封装了许多日常经常使用的模块,如:数据库访问,缓存,日志,异常处理,加密,IOC等等,在日常的项目开发中,企业库已经贯穿了一个项目从底层到表示层基本上需转载 2014-02-25 22:48:01 · 4922 阅读 · 1 评论 -
不错的.net开源项目
Json.NET http://json.codeplex.com/Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基本数据类型等)和Json的转换。原创 2014-02-11 17:41:45 · 1797 阅读 · 0 评论 -
.NET核心代码保护策略:隐藏核心程序集
我们都知道.NET的代码容易被反编译出来,站在破解者的角度来看,破解一个软件情况可分为几种:1.修改注册验证的代码,达到绕过注册的效果;2.破解出注册核心算法,写出注册机;3.完全复制代码,做成一个可编译修改的项目;从危害是上来看,第三种是最严重的,如果你的软件被实力更强的竞争对手复制了,那简直是毁灭性的打击,理论上.NET没有什么软件是不能破解复制的,只要有高手死转载 2014-01-07 22:18:23 · 1302 阅读 · 0 评论 -
Entity Framework 教程
本文档主要介绍.NET开发中两项新技术,.NET平台语言中的语言集成查询技术 - LINQ,与ADO.NET中新增的数据访问层设计技术ADO.NET Entity Framework。ADO.NET的LINQ to Entity部分以LINQ为基础,为了完整性本文档首先介绍LINQ技术。预备知识LINQ技术LINQ是.NET 3.5中新增的一种技术,这个技术扩展了.NET平转载 2013-12-11 19:29:01 · 954 阅读 · 0 评论 -
在net.tcp模式下,由SvcUtil.exe生成代理类文件和配置文件
WCF服务调用可以采用两个方法,由工具SvcUtil.exe生成本地代理服务类和配置文件方式,或者采用ChannelFactory直接创建服务代理对象。本文主要采用前面一种方式来进行。SvcUtil.exe位于:C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin目录下,可以将本工具添加到VS2010的工具菜单中,以方便使用:VS菜单-转载 2013-11-26 11:41:25 · 1295 阅读 · 0 评论 -
异步操作的优缺点及其应用场合
我曾经提到异步操作能提高系统的吞吐能力,正确使用异步操作来校正滥用异步的错误做法,那异步究竟有何优点值得我们使用?而又有什么缺点需要我们使用的时候小心呢?诚如老赵所说, 异步并不一定能提高系统性能,甚至因为线程的创建,消亡,和切换会增加系统开销,但异步除了提高性能,还可以增强系统的健壮性。在过去,windows程序总是单线程的,在这样的系统中,如果出现了异常,系统就会 因此而崩溃,甚至连我们的操作原创 2013-11-25 14:38:10 · 16469 阅读 · 0 评论 -
ASP.NET使用NPOI加载Excel模板并导出下载
1、为什么要使用NPOI导出Excel?一、解决传统操作Excel遇到的问题:如果是.NET,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导出过程中出问题可能导致服务器宕机。Excel会把只包含数字的列进行类型转换,本来是文本型的,Excel会将其转成数值型的,比如编号000123会变成123。导出时,如果字段内容以“翻译 2013-11-25 13:23:15 · 1792 阅读 · 0 评论 -
实现异步调用 Web Service
问题描述普通调用 Web Service的方法,在Web Service执行期间客户端会一直等待服务执行完毕才能响应。从而造成客户端 UI 线程的阻塞假死现象。这时候,异步调用就显得很有用,它可以让客户端在调用Web Service时,不至于阻塞客户端的 UI线程导致假死,还可以在调用Web Service的同时做些其他的处理。解决方案异步调用Web Service也有几种不同的方法,原创 2013-11-19 10:12:31 · 1671 阅读 · 0 评论 -
谈谈对于企业级系统架构的理解
在我们刚开始学习架构的时候,首先会想到分层的概念,分层架构比较经典的是三层架构,那么,什么是三层架构呢?它包括表现层,业务层,数据访问层;而对于一个新手来说,从抽象意义上的三层架构,逻辑上就划分为三个层。这个是最基本的三层架构模式。表现层充当系统的界面呈现以及UI逻辑的角色,也就是说,UI(用户界面)属于表现层;举一个对于asp.net WebForm来说,人们喜欢把对于UI的控制原创 2013-11-15 17:15:19 · 1145 阅读 · 0 评论 -
浅谈.NET反射机制的性能优化
在进入解释型模版引擎的探讨之前,我决定先分享一下这篇博客。因为在解释型引擎里将会引入反射的概念来实现更多、更复杂的功能。可能大家谈到反射面部肌肉都开始抽搐了吧!因为在托管语言里面,最臭名昭著的就是反射!它的性能实在是太低了,甚至在很多时候让我们无法忍受。不过不用那么纠结了,老陈今天就来分享一下如何来优化反射!概述本文涉及到的反射优化的途径有如下两种:通过Delegate.C转载 2013-11-15 16:33:40 · 1183 阅读 · 0 评论 -
异步编程与响应式框架
前言异步操作是强大的,它是许多高伸缩性架构的基石。异步操作在许多情况下是必须的,例如在客户端保持用户界面的响应能力,以及在日益兴起的云计算场景中。但是,异步编程又是十分困难的,它让这让许多程序员敬而远之。因此,越来越多的编程语言都对异步编程提供了相当程度的支持,其中的典型代表便是F#中的异步工作流以及Scala的Actor模型。不过目前的一些主流编程语言,如C#或是JavaScript,它翻译 2013-11-13 13:29:23 · 1879 阅读 · 0 评论 -
减少.NET应用程序内存占用经验分享
最近一周比较忙,主要的工作内容是在做一个叫“键盘精灵”的东西,简单来讲就是将很多数据放到内存中,对这些数据进行快速检索,然后找出根据输入条件最匹配的10条记录并予以展示。具体和下面两款炒股软件的相关功能类似:数据以文本形式存在文件中,且数据量较大,有近20万条,每一条记录有几个字段,以分隔符分割。当时使用的是6万条记录的测试数据,文本文件将近10M,这个模块加载到内存并建立缓存之后转载 2013-11-10 10:01:24 · 2584 阅读 · 1 评论 -
.Net 垃圾回收和大对象处理
CLR垃圾回收器根据所占空间大小划分对象。大对象和小对象的处理方式有很大区别。比如内存碎片整理 —— 在内存中移动大对象的成本是昂贵的,让我们研究一下垃圾回收器是如何处理大对象的,大对象对程序性能有哪些潜在的影响。大对象堆和垃圾回收在.Net 1.0和2.0中,如果一个对象的大小超过85000byte,就认为这是一个大对象。这个数字是根据性能优化的经验得到的。当一个对象申请内存大小翻译 2013-11-10 09:01:54 · 843 阅读 · 0 评论 -
asp.net中Profile实战篇
1.什么是个性化服务个性化服务是Asp.net自带的一种技术框架,为用户提供了自定义站点外观、内容、布局、角色管理等功能,如同QQ空间等。2.个性化服务需要程序员学习哪些方面,才能实现这些功能个性化服务是一个框架,这个框架包含3个核心功能:个性化用户配置、web部件、成员资格与角色管理。我们就是要着重学习这3个功能。3.时刻记住一般情况下只有登录的用户才能使原创 2013-09-06 13:10:08 · 2317 阅读 · 0 评论 -
细说ASP.NET Windows身份认证
阅读目录开始认识ASP.NET Windows身份认证访问 Active Directory在ASP.NET中访问Active Directory使用Active Directory验证用户身份安全上下文与用户模拟在IIS中配置Windows身份认证关于浏览器的登录对话框问题在客户端代码中访问Windows身份认证的页面上篇博客我谈到了一些关于ASP.NET Forms身份转载 2013-09-03 17:29:32 · 1702 阅读 · 0 评论 -
ASP.NET 4 快取 API 有两种:Cache 与 ObjectCache(MemoryCache)
ASP.NET 從最早期的版本就實做了一套好用的快取機制(System.Web.Caching.Cache),一直以來任何非 ASP.NET 的應用程式 (例如 WinForm, WPF, Console, WinService, …) 若要使用快取機制都必須將System.Web.dll 參考進專案才能使用,但從 .NET 4.0 開始出現了另一個擴充性更強的快取機制,稱為Object原创 2013-08-27 13:34:02 · 4866 阅读 · 0 评论 -
分享一个.NET实现的简单高效WEB压力测试工具
在Linux下对Web进行压力测试的小工具有很多,比较出名的有AB.虽然AB可以运行在windows下,但对于想简单界面操作的朋友有点不太习惯.其实vs.net也提供压力测试功能但显然显得太重了,在测试的时候也会占用了大量的资源导致测试效果不理想.AD:2013云计算架构师峰会超低价抢票中在Linux下对Web进行压力测试的小工具有很多,比较出名的有AB.虽翻译 2013-08-24 16:30:55 · 3524 阅读 · 0 评论 -
Delegate如何进行类型转换?
我们知道对于两个不具有继承关系的两个类型,如果没有为它们定义转换器,两这之间的类型转换是不允许的,Delegate也是如此。但是有时候我们却希望“兼容”的两种Delegate类型能够进行转换,比较典型的就是表示事件的Delegate。.NET Framework为我们定义了类型EventHandler来表示事件,但是却没有规定事件的Delegate类型是EventHandler的子类。原则上讲,事原创 2013-08-24 15:38:09 · 1668 阅读 · 0 评论 -
一种简单,轻量,高性能Json对象设计方案
简单,是因为只有一个类轻量,是因为整个类代码只有300行灵活,是因为扩展方式只需要继承重写某个方法即可首先我将这个类称之为JsonBuilder,我希望它以StringBuilder的方式来实现Json字符串的转换public class JsonBuilder{ protected StringBuilder Buff = new Strin原创 2013-08-24 11:42:50 · 2701 阅读 · 0 评论 -
ASP.NET MVC原理
ASP.NET MVC由以下两个核心组成部分构成:一个名为UrlRoutingModule的自定义HttpModule,用来解析Controller与Action名称;一个名为MvcHandler的自定义HttpHandler,用来实现对Controller的激活和Action的执行;!!阅读本文前请先弄明白asp.net执行的流程及httpmodule与httphandler的作原创 2013-08-24 11:26:29 · 1738 阅读 · 0 评论 -
ASP.NET MVC中Filter使用
Filter 接口Filter类型接口MVC的默认实现DescriptionAuthorizationIAuthorizationFilterAuthorizeAttribute最先执行,在其他类型的filter和action方法前执行ActionIActionFilter原创 2013-08-24 11:14:10 · 4228 阅读 · 0 评论