11 2011 档案
摘要:一、Emit概述 Emit,可以称为发出或者产生。在Framework中,与Emit相关的类基本都存在于System.Reflection.Emit命名空间下。可见Emit是作为反射的一个元素存在的。说道反射,大家应该都不陌生,它允许我们查看程序集的元素据,从而取得形如程序集包含哪些类型,类型包含哪些方法等等大量的信息。但是反射也仅能够‘看’,而Emit则可以在运行时动态生成代码。接下来就来看看如何用Emit生成代码。二、动态生成代码 首先需要明确的是这里的代码并不是我们时常提到的C#,VB等源代码,而是IL代码。既然是IL代码,那学习Emit是不是要先对IL很熟悉呢?诚然,熟悉IL代码对..
阅读全文
摘要:关于C#中动态加载AppDomain的问题 在操作系统中,利用进程可以对正在运行的应用程序进行隔离,每个应用程序被加载到单独的进程中,并为其分配虚拟内存,进程无法直接访问物理内存,只能通过操作系统将虚拟内存映射到物理内存中,并保证进程之间的物理内存不会重叠,但是进程最大的缺点就是效率问题,尤其是进程的切换开销很大,而进程间不能共享内存,所以不可能从一个进程通过传递指针给另一个进程。 在.NET中出现了一个新的概念:AppDomain——应用程序域,所有.NET应用程序都需要运行在托管环境中,操作系统能提供的只有进程,因此.NET程序需要通过AppDomain这个媒介来运行在进程中,同时使...
阅读全文
摘要:public class Loader : MarshalByRefObject{ // Methods public object LoadObject(string dllName, string typeName) { return Assembly.LoadFrom(dllName).CreateInstance(typeName); } public T GetInstance<T>(string typeName) where T : class { if (remoteLoader == null) return null; return remoteLoader.G
阅读全文
摘要:平台总述领先科技B2C电子商务管理平台E3[1]致力于为以电子商务销售为主的企业提供更加灵活方便的综合解决方案。通过E3电子商务平台,方便快捷地处理来自不同渠道的订单、浏览分布的在不同地方的店铺销售和库存情况、创建丰富多样的促销方案,满足企业个性化的特殊需求。 B2C电子商务管理平台E3集中了国内外知名电子商务网站需求,支持各种类型商品的属性和规格自定义,整合了商品的进销存、供应商、客户呼叫中心、快递物流模块,实现了网站、实体店铺及第三方平台(如淘宝店铺)等多渠道销售订单的集中处理;支持多种在线支付和配送方式,通过手机短信、电子邮件、电话等方式与客户保持订购流程及售后、促销活动环节的互动;利用
阅读全文
摘要:windows使用nginx实现网站负载均衡测试实例 最近正在研究Nginx,Nginx作为反向代理服务器,可以对Web服务器提供加速,并且具有负载均衡的功能。 首先我要在官网下载Nginx(http://nginx.org/en/download.html),目前最新稳定的版本为1.0版本,Linux和Windows版本我都下下来了,在两台服务器上做网站负载均衡。在Windows版本中,将压缩包进行解压,执行命令:1start nginx这样就可以启动nginx服务了。而执行命令:1nginx -s stop可以停止服务。这是我在192.168.3.82的IIS服务器上,添加两个站点:这两个
阅读全文
摘要:http://nginx.org/en/download.html
阅读全文
摘要:Nginx 配置 SSL 证书步骤小记 接上篇讲到 Startssl SSL 证书申请成功后(具体点这里),该怎么配置 SSL 证书到Nginx上面呢?其实步骤很简单。1,按照如下格式修改nginx.conf 配置文件,80端口会自动转给443端口,这样就强制使用SSL证书加密了。访问http的时候会自动跳转到https上面。server {listen 80;server_name www.域名.com;rewrite ^(.*) https://$server_name$1 permanent;}server {listen 443;server_name www.域名.com;root
阅读全文
摘要:3种Nginx防盗链的方法 一:一般的防盗链如下:location ~* \.(gif|jpg|png|swf|flv)$ {valid_referers none blocked www.deepvps.comdeepvps.com ;if ($invalid_referer) {rewrite ^/ http://www.deepvps.com/retrun.html;#return 403;}}第一行:gif|jpg|png|swf|flv表示对gif、jpg、png、swf、flv后缀的文件实行防盗链第二行: 表示对www.ingnix.com这2个来路进行判断if{}里面内容的意思是
阅读全文
摘要:http://www.cnblogs.com/luminji/archive/2011/08/17/2143371.htmlhttp://memcachedproviders.codeplex.com/提供的Memcached客户端支持Asp.net站点中的Session同步,其原理是接管Asp.net的Session处理,同时在后台使用数据库支持完成WEB集群的Session的同步。具体实现步骤如下:1:数据库准备下载完毕Memcached providers之后,在解压目录下有:一个用于创建数据库表,一个用于创建这个provider的需要用到的存储过程。2:配置sessionStatese
阅读全文
摘要:《使用Nginx轻松实现开源负载均衡》是我的演讲PPT(PowerPiont),现提供下载。 PPT分为四个部分: 1、介绍Nginx的基本特征,以及使用Nginx做负载均衡器的理由。 2、用实例,来介绍Nginx负载均衡在大型网站的典型应用。 3、以实现网站动静分离为原型,对NetScaler硬件七层负载均衡和Nginx软件负载均衡做一个对比。 ①、NetScaler负载均衡交换机动静分离系统架构图 ②、Nginx反向代理负载均衡器动静分离系统架构图 ③、PHP利用Memcached实现session共享,程序无需作任何修改: 修改PHP.ini(需要memcache...
阅读全文
摘要:目 录一、 Nginx 基础知识二、 Nginx 安装及调试三、 Nginx Rewrite四、 Nginx Redirect五、 Nginx 目录自动加斜线:六、 Nginx Location七、 Nginx expires八、 Nginx 防盗链九、 Nginx 访问控制十、 Nginx日志处理十一、 Nginx Cache十二、 Nginx负载均衡十三、 Nginx简单优化 十四、 如何构建高性能的LEMP环境十五、 Nginx服务监控十六、 常见问题与错误处理.十七、 相关资源下载【前言】:编写此技术指南在于推广普及NGINX在国内的使用,更方便的帮助大...
阅读全文
摘要:除了HR和财务部门外,前期电子商务业务共分为5个部门,包括客服部、市场部、采购及物流部、技术部和网站运营部。 采购和物流其实是可以分开的,在规模到达一定程度以后,会裂变成采购部和仓储物流部两个部门,现在的描述中还是以一个部门说明。 客服部的职能就是客服服务、客户咨询、客服培训和客服考核等,通过各种方式提高用户满意度、订单转化率和平均订单金额; 技术部负责网站建设、呼叫中心(Call Center)中心建设、电子商务系统建设、采购系统、仓储系统、CRM系统以及各种系统之间的对接等; 市场部负责互联网和其他媒体推广、品牌宣传和公关、网站合作、支付合作、网站策划、CRM营销(会员制分级、ED...
阅读全文
摘要:B2C电子商务基础架构分析 运营B2C日久,越来越深刻的意识到IT系统对确保规范化业务流转,支撑消费者端的均一服务有着决定性的作用。于是,一直想好好整理下相关的系统架构,怎奈俗务缠身,一直拖到今日,猛然发现下周娃很可能就要出生,拖无可拖,快马加笔,居然整出来了。本文的重点是理清系统的逻辑关系,详细的功能模块请参见结尾附上的系统架构图。首先,聊下对系统逻辑架构的看法;我个人始终坚持认为,系统的开发与演化,前台严格follow消费者的购买流程,后台则盯牢订单流转,牢牢抓住这两条主线,才能高屋建瓴的看清B2C的逻辑链和数据流,更深刻的规划功能模块,从而更有效支撑实际业务的流转。前台系统包括:商品展.
阅读全文
摘要:大规模网站架构实战之体系结构(一) 其实大规模网站并没有什么神奇之处,主要看你的思维和视野(在考虑成本的情况下),主要体现个人认为在于拆和分,就是把一个复杂的问题尽可能的拆分成几个部分,现在MS和开源已经为我们做了很多工作,我们大多时候仅是在关注如何整合现有的资源,下面是我为XXX企业所做的体系结构设计。由于时间关系写的比较乱,具体参考图来理解。XXX企业项目分析:一、特征分析1、用户特征:游客(互联网) 1000万以上企业用户 (需要登录认证) 10万左右个人用户(需要登录认证) 1000万左右2、数据特征:门户网站新闻数据 (数据量不大)业务数据 (单项业务指标最大值在5400万/月)数.
阅读全文
摘要:有关nginx upstream的五种分配方式 nginx的upstream目前支持5种方式的分配 1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如:双击代码全选1234upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 3、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以...
阅读全文
摘要:如果你关注过nginx,必定知道nginx这个软件有什么用的,如果你的网站访问量越来越高,一台服务器已经没有办法承受流量压力,那就增多几台 服务器来做负载吧。做网站负载可以买硬件设备来实现,比如F5,不过价格就几十万到上百万,够贵,本文介绍做网站负载的软件是免费的,nginx目前好多 门户网站与大访问量的网站都在使用做为HTTP服务器,所以nginx是非常优秀的,下面介绍做负载测试吧。 环境: (2台服务器) 第一台: CPU:Inter(R) Pentium(R) 4 CPU 2.8G 内存:1G 系统:windows 7 IIS: IIS 7 nginx:nginx/Windows-0.8
阅读全文
摘要:前言:这两天机器坏了,正在送修中,写个系列的大型网站架构的文章,希望对有志在互联网做出一番事业的站长朋友们一些帮助。注意:这里的大型网站架构只包括高互动性高交互性的数据型大型网站,基于大家众所周知的原因,我们就不谈新闻类和一些依靠HTML静态化就可以 实现的架构了,我们以高负载高数据交换高数据流动性的网站为例,比如海内,开心网等类似的web2.0系列架构。我们这里不讨论是PHP还是JSP或 者.NET环境,我们从架构的方面去看问题,实现语言方面并不是问题,语言的优势在于实现而不是好坏,不论你选择任何语言,架构都是必须要面对的。文入正题:首先讨论一下大型网站需要注意和考虑的问题A. 海量数据的处
阅读全文
摘要:http://www.cnblogs.com/chenzhao/articles/2094912.html概述Ø 性能优化的思路首先是较为精准的定位问题,借助于相应的工具包,分析系统性能瓶颈在哪,在根据其性能指标,以及所处于层级决定选择优化的方式方法。在选择优化的方式方法时,大家可以参照以下章节调优方法,架构优化递进,进行正确的,有针对性,有步骤的优化。可能会发现部分指导思想或许有相悖嫌疑,大可不必较真,系统优化的过程本身就是一个不断分离+共享的组合拳,至于具体选择哪种优化方式,根据具体需求来定,但大型应用发展的总体思路是不断分离,在通过索引(非数据库)进行关联起来,切记:优化一定要
阅读全文
摘要:本节就聊聊采用Nginx负载均衡之后碰到的问题:Session问题文件上传下载通常解决服务器负载问题,都会通过多服务器分载来解决。常见的解决方案有:网站入口通过分站链接负载(天空软件站,华军软件园等)DNS轮询F5物理设备Nginx等轻量级架构那我们看看Nginx是如何实现负载均衡的,Nginx的upstream目前支持以下几种方式的分配1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2、weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。2、ip_hash每个请求按访问ip的hash结果分配,这样每个访客固
阅读全文
摘要:Nginx 简介Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。 Igor 将源代码以类 BSD 许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。根据最新一期(08 年 6 月份)的 NetCraft 调查报告显示,已经有超过两百万的主机使用了 Nginx,这个数字超过了另外一个
阅读全文
摘要:nginx for windows: 让nginx以服务的方式运行 在windows下安装了nginx, 郁闷是发现它没有以服务方式运行, 也就是说当用户注销后,程序会终止.因此需要将nginx作为服务运行.假设nginx安装在c:\nginx\下:1.下载微软服务注册工具srvany.exe, instsrv.exe, 存放到c:\nginx\目录下http://wesoho.com/soft/down/srvany.rar2.安装NGINX服务, 将命令行切换到c:\nginx\,执行下列命令instsrv NGINX c:\nginx\srvany.exe 没错就是srvany.exe3
阅读全文
摘要:nginx状态监控 通过查看Nginx的并发连接,我们可以更清除的知道网站的负载情况。Nginx并发查看有两种方法(之所以这么说,是因为笔者只知道两种),一种是通过web界面,一种是通过命令,web查看要比命令查看显示的结果精确一些。下面介绍这两种查看方法No1、通过浏览器查看通过web界面查看时Nginx需要开启status模块,也就是安装Nginx时加上 –with-http_stub_status_module 然后配置Nginx.conf,在server点里面加入如下内容location /nginx_status { stub_status on; access_log off; a
阅读全文
摘要:话说nginx是一个非常NB的高性能Web和反向代理服务器,传说新浪、迅雷等大网站都在用。以前也就听大牛们讲讲,没什么太深刻的概念,今天终于自己亲手操刀实践了一把,顺便把过程记录了下来分享给大家,这个很基础,就用轮询的方式来做一个负载均衡,最简单的配置了,今后再去深入了解它。对了,不知道nginx是什么的同学就先自己去捣鼓一下,回头如果有兴趣可以再来看下去,给几个链接:http://zh.wikipedia.org/zh/Nginxhttp://baike.baidu.com/view/926025.htm由于我linux实在是用不溜,所以就在windows搞搞了。一、在windows上安装n
阅读全文
摘要:http://wiki.nginx.org/NginxChs 最近有些时间,开始接触负载均衡方面的东西,从硬件F5再到Citrix Netscalar。不过因为硬件的配置虽然不复杂,但昂贵的价格也让一般用户望而却步(十几万到几十万),所以只能转向nginx,squid这类有反向代理功能的软件了。好在其设置都不是很麻烦。 本文就之前所做过的安装和配置步骤做一下总结分享出来,以免日后忘记了。 首先是windows系统,这里建议使用window 2003企业版,而不要作用win7(太新了,我遇到无法启动nginx的问题)。要说的是,在windows下配置安装nginx还是很容易的,少了linux下.
阅读全文
摘要:在看反射之前我们来看一下.Net源代码是怎么执行的: 我们看到.Net源代码是两次编译,一次执行的。在Visual Studio经过第一次编译生成程序集(.exe,.dll),就是IL(中间语言)和元数据,然后在经过CLR(公共语言运行库),将程序集编译成机器代码,机器代码在交给cpu去执行。我们来看.Net源代码在第一次编译之后: 现在来看一下什么是反射,反射是编程的读取与类型相关联的元数据的行为。通读取元数据,可以了解它是什么类型以及类型的成员。比如类中的属性,方法,事件等。所属命名空间System.Reflection。 反射具体是怎么实现的,下面通过一个例子来具体说明。 首先在解决方案
阅读全文
摘要:我在前文当泛型的参数类型是动态的... 中以一个简单的例子引出了动态代理,我们使用动态代理,主要是因为动态代理拥有这样的能力--使得某个类型A在运行的时候能转化为一个指定的接口I,即使这个类型A在定义的时候并没有从这个指定的接口I继承。 这句话是什么意思了?还是回到当泛型的参数类型是动态的... 一文中的那个例子,在例子中,List<>并没有从ISimpleList继承,但是从表面看来,在运行的时候,我们通过动态代理可以以ISimpleList接口来“引用”List<>类型的对象。动态代理是在运行时在内存中构建的一种类型,该类型实现了接口I,但是它将所有的方法调用都转发
阅读全文
摘要:ESFramework介绍之(35)―― IMessageTransceiver (本文适用于ESFramework V0.3+) 在ESFramework介绍之(7)-- 服务器代理IServerAgent 一文中,我们详细的介绍了IServerAgent,我们已经知道,客户端与服务器之间的所有通信都可经过IServerAgent,包括要转发的P2P消息。IServerAgent的主要目的是:(1)屏蔽客户端与服务端之间的通信协议(Tcp/Udp),ITcpServerAgent、IUdpServerAgent(2)可将异步的消息请求/回复转化为同步的方法调用。 客户端与服务端的所有交互都可
阅读全文
摘要:这是一篇迟到了很久的文章,要不是今天看到Mediar朋友写的“基于ESFramewok的 客户端和客户端通迅”的文章,我也许还不会想起写这篇应该很早就发表的Blog,它可以帮助ESFramework的研究者/使用者们更好的使用ESFramework。Mediar朋友的那篇文章中介绍了通过服务器转发P2PMessage,Mediar手动实现了一个自己的处理器,实际上ESFramework已经内置了P2PMessage的处理器,那就是P2PMessageDealer,P2PMessageDealer不仅可以把消息转发给连接到同一个AS上的好友,而且可以转发给连接到异地AS上的好友。不管怎样,还是.
阅读全文
摘要:对大多数大型系统而言,数据库往往是最容易出现瓶颈的地方,而通过使用恰当的缓存技术可以非常有效地减轻数据库的负载。将系统中用到的所有数据进行分类,分别对待不同种类的数据而不是一视同仁,有利于正确地做出缓存哪些数据、以及如何缓存的决策。我通常将系统中用到的数据分为四类:恒定不变的数据,只发生增量的数据,偶尔改变的数据,经常改变的数据。(1)对于恒定不变的数据,采用普通的恒定缓存,即这种缓存在系统启动后初始化一次就不再改变了。(2)对于只发生增量的数据,采用智能式的增量缓存,如果所要的数据在这种缓存中不存在,则该缓存会从其它地方(如数据库)自动加载目标对象并缓存起来。(3)对于偶尔改变的(但不是十分
阅读全文
摘要:ESFramework介绍之(23)―― AgileTcp 前面已经介绍了ITcp接口,而AgileTcp就是ESFramework给出的ITcp的参考实现。在之前,我曾经讲解过模拟完成端口的Tcp组件实现和异步Tcp组件实现,在它们的基础之上,我更改了处理策略,而形成了AgileTcp,目的是更清晰的结构、更高的效率。这个策略会在后面讲到。 Tcp组件主要控制着系统与终端用户的所有消息的进出,ITcp接口描述了这个组件的外貌,告诉外部如何使用Tcp组件、如何与Tcp组件交互。而从实现的角度来看,我们必须理清Tcp组件的职责:(1)管理所有已经建立的Tcp连接(2)管理与每个连接相对应接收缓.
阅读全文
摘要:.NET平台下可复用的Tcp通信层实现(续) 上一篇主要讲到了Tcp通信层中的核心组件――Tcp组件的实现,Tcp组件是整个通信层的消息驱动源,甚至,可以将Tcp组件看作是我们整个服务器系统的消息驱动源,消息处理过程从这里引发。类似的消息驱动源还有发布的WebService接口、Remoting接口等。今天我们需要关注的是Tcp通信层中的“中央”组件――消息分派器组件ITcpReqStreamDispatcher,大家已经从前文的组件关系图中看到了消息分派器的大致位置和作用了,它是Tcp通信组件和消息处理器之间的“桥梁”。我们再对前文描述的通信层组件之间关系的一段话回顾一下: “当网络(Tc.
阅读全文
摘要:.NET平台下可复用的Tcp通信层实现 2006年已经来临,回首刚走过的2005,心中感慨万千。在人生和生活的目标上,有了清晰明确的定位,终于知道了自己喜欢什么样的生活,喜欢什么样的生活方式;在技术上,成熟了不少,眼界也开阔的不少,从面向对象到组件、从.Net到J2EE、从微软到开源,颇有收获。特别值得一提的是,认识了Rod Johnson这个大牛人,也终于在自己的项目中正式使用Spring.net框架来开发了,这确实是一个优秀的框架。而在已经到来的2006年,我有一个主要目标就是B/S应用开发,来填补自己在企业级开发上的另一半空白。 以前就很想将自己在Tcp通信层的开发心得、经验共享出来..
阅读全文
摘要:有很多朋友要求给出一个应用ESFramework的Demo,在前面介绍ESFramework支持的4层架构中(回顾),有AS、FS、IRAS,其中FS的功能需求最简单,所以本文就给出一个FS实现示例。 FS主要用于管理功能插件,并且将所有的功能性请求都转发给对应的功能插件处理,不需要关心用户(由AS管理)、不用关心具体的业务需求(由对应的功能插件处理),所以FS非常的单纯,基本上是与应用无关的,可以在任何应用中复用同一个FS。(但是AS和IRAS就很难复用了,因为不同的应用对AS、IRAS的需求的差别可能非常大)。实际上,FS的实现自己只包含4个cs文件,绝大多数组件都由ESFramework
阅读全文
摘要:ESFramework介绍之(27)-- 支持OverdueMessage (离线消息)(本文适用于ESFramework V0.2+) QQ上,你给好友发消息,如果对方不在线,则服务器会把这个消息持久化存起来,等好友下次上线时,再转发给他。像这样的消息在ESFramework中称为OverdueMessage。显然,MSN没有支持OverdueMessage。当然了,ESFramework中的OverdueMessage不仅仅是文字消息,而是可以为任何类型的消息,比如,音频、视频、文件等等。 ESFramework中对所有P2P的消息的处理都是由P2PMessageDealer完成的,当P2
阅读全文
摘要:ESFramework 4.0 快速上手(15) -- 客户端登录验证 在之前版本的Rapid引擎中,是没有提供客户端登陆验证的机制的,如果要验证用户的帐号密码信息,我们只有自己手动通过自定义信息来实现。在2011.04.25发布的新版本中,客户端Rapid引擎,则内置了在初始化时验证用户的帐号密码的功能,这使得登录验证变得更加简单。一.ESPlus.Application.Basic 空间的支持 为了实现验证用户账号密码的功能,ESPlus.Application.Basic 命名空间增加了几个基础设施。(1)ESPlus.Application.Basic.Passive.IBasicO.
阅读全文
摘要:好久没有写关于ESFramework的文章了,曾很早就承诺过要写一篇介绍基于ESFramework实现NAPT P2P的文章,今天终于能抽出时间做这件事。网络地址转换NAT(或者NAPT)的基本理论知识,网上有很多相关资料,不是很清楚的朋友可以先了解下什么是NAT、以及为什么要使用NAT。使用NAT的一个非常常见的场合就是P2P技术,要使两个隐藏在不同的局域网后面机器能够相互通信,并不是一件非常简单的事情,因为,这两台机器没有公网地址,相互之间是无法直接通过IPEndPoint访问的。NAT解决了这个问题,虽然并不是所有的操作系统都完整的支持NAT,幸运的是,主流的操作系统一般都是支持的。通常
阅读全文
摘要:ESFramework介绍之(7)-- 服务器代理IServerAgent (本文原作于2006.03.15,第一次修正于2006.06.06,修正后适用于ESFramework V0.3+) (本文是ESFramework对客户端开发的支持特性之一 ,如果要按顺序阅读,请转到ESFramework介绍(序)) 分布式系统的构建一般有两种模式,一是基于消息(如Tcp,http等),一是基于方法调用(如RPC、WebService、Remoting)。深入想一想,它们其实是一回事。如果你了解过.NET的Proxy,那么你会发现,方法调用和消息请求/回复实际上是可以相互转换的,.NET的Prox.
阅读全文
摘要:ESFramework介绍之(4)――消息拦截器INetMessageHook 网络上传输的消息经常是经过加密和压缩,有的特定类型的消息可能还需要进行其它变形,ESFramework通过INetMessageHook对这些功能提供支持。需要说明的是,ESFramework对消息进行截获(Hook)处理有两种方式,一是仅仅Hook处理消息主体(Body),而不对消息头作任何变换;另一种方式是对整个消息(包括消息头和主体)都进行Hook处理。通常,第一种方式已经能够满足我们的大多数应用,并且效率也更高,如果应用有更特殊的要求,可以采用第二种方式。本文先介绍第一种方式,后面的文章中会对第二种给予讲.
阅读全文
摘要:ESFramework介绍之(32)―― Tcp客户端核心组件关系图 如果你的客户端基于ESFramework构建,并使用Tcp与服务端通信。通过这篇文章你将知道如何迅速、高效地创建客户端应用。 ESFramework对基于Tcp客户端的支持主要在ESFramework.Network.Tcp.Passive命名空间,下图给出了该命名空间中的核心组件,以及这些组件之间的关系: 下面解释一下这些组件的作用、职责。我们从最底层的通信组件NetworkStream向上看:(1)NetworkStream 即是System.Net.Sockets.NetworkStream类,在ESFramewor.
阅读全文
摘要:ESFramework介绍之(20)―― 插件自动升级 当我们的服务平台搭建成功后,所需要做的主要事情就是开发服务端功能插件(IFunAddin)和客户端插件(IPassiveAddin),每个插件对(AddinPair)实现了一组相似或相近的需求/功能。 好了,我们已经开发了十多对插件对,然后分别XCopy到了各个服务器节点上,“整个系统”已经投入了运行。通过前面的介绍(回顾),相信大家对我们的“整个系统”有了个大致的映像。我们的IRAS服务器通常只存在于一个节点上,而我们的AS和对应的多个FS通常分布在非常多个节点上(比如每个大中城市都分配一个AS),而且这些节点相距非常遥远,深圳AS位.
阅读全文
摘要:ESFramework介绍之(8)-- 客户端插件IPassiveAddin 前文已经提到了,在IServerAgent的基础上,客户端也可以采用插件的结构形式,客户端插件需要实现IPassiveAddin接口。我的想法是,当客户端主程序加载一个新的PassiveAddin时,可以在某个菜单的子Items上添加一项,当双击这个子菜单项时,则弹出该客户端插件提供的“业务操作窗体”。这只是使用客户端插件的可行方式之一,你完全可以根据你的应用来决定使用形式。IPassiveAddin接口定义如下: 1 ///<summary>2///IPassiveAddin用于客户端的插件。通常一个P
阅读全文
摘要:本实验用于测试ESFramework服务端引擎的性能,测试程序使用ESFramework 4.0版本。一.准备工作测试的机器总共有3台,都是普通的PC,一台作为服务器,两台作为客户端。作为服务器是PC配置如下:操作系统:Windows Server 2003 Enterprise Edition SP2CPU:Pentium Dual-Core CPU E5400 @ 2.70GHz内存:2G二.测试策略 本实验所采用的策略是这样的:(1)每个客户端实例首先与服务器建立N个TCP连接,然后依次在每个TCP连接上发送一个36字节的消息。遍历一次完毕后,等待(Sleep)M毫秒,再进行下一轮遍历发
阅读全文
摘要:现在我们将在ESFrameworkDemo -- 文件传送Demo的基础上,使用ESPlus提供的第四个武器,为其增加P2P通信的功能。在阅读本文之前,请务必先掌握ESFramework 开发手册(04) -- 可靠的P2P一文中介绍的P2P的基础知识以及相关API的用法。 本Demo主要演示以下功能:(1)创建基于TCP的P2P通道(2)创建基于UDP的P2P通道(内部使用可靠的UDP)(3)使用P2P通道发送消息和传送文件一.服务端 在P2P打洞的过程中,服务端会参与协助P2P通道的建立,整个过程是由ESFramework/ESPlus内部自动完成的,而这个过程对于框架使用者是透明的。P.
阅读全文
摘要:http://www.css3maker.com/
阅读全文
摘要:最近上网上找了些关于CSS实现垂直居中的方法,方法挺多,下面就我看到的几种好方法在这里说明一下,使用 CSS 实现垂直居中并不容易。有些方法在一些浏览器中无效,因此,到底选择哪种方法好,还要看具体情况。 方法一:这个方法把一些 div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align property 属性。view sourceprint?1<div id="wrapper"> 2<div id="cell"> 3<div class="content"> 4Conten
阅读全文
摘要:在页面里加入些动画,可以是页面更加生动活泼,使用CSS3的动画功能,可以使页面上的文字或图像具有动画功能。比如说背景色从一种颜色,平滑的过度到另一种颜色。CSS3中的动画功能有两种,Transitions和Animations。这两种功能都可以通过改变CSS中的属性值来产生动画效果。本文简单介绍一下Transitions功能的使用方法。 到目前为止,支持CSS3中的Transitions功能的浏览器有:Firefox 4+ 、Opera 10+、Safari 3.1+、Chrome 8+等,transitions属性的使用方法如下: transition: property durati...
阅读全文
摘要:在CSS3中,用Transform功能可以实现文字或图像的旋转、缩放、倾斜、移动这四种类型的变形,这四种变形分别使用rotate、scale、skew和translate这四种方法来实现。将这四种变形结合使用,就会产生不同的效果,使用顺序不同,产生的效果是不一样的。 目前浏览器支持情况:Safari 3.1+、 Chrome 8+、Firefox 4+、Opera 10+、IE9+ 一、旋转: CSS中使用rotate方法来实现对元素的旋转,在参数中加入角度值,旋转方式为顺时针旋转。 例一:一个黄色的div元素,通过在样式代码中使用“transform: rotate(45deg)”...
阅读全文
摘要:做winform程序,很多时候都需要用到插件式的,所以本人做了一个Demo,思路跟网上思路基本一致,现在共享出来如有需要的朋友可以下载。申明:部分代码来源于网上,当然思路也是,呵呵 原理很简单:一:定义插件接口二:实现插件接口并建立不同工项目,使其在生成时生成不同的DLL三:主程序运行时根据接口名利用反射对插件目录的DLL进行加载,加载完成后便可以使用插件接口定义的方法或属性了。下面上几张图,有兴趣的朋友可以先看看,觉得值得一看的朋友可以下载。 项目结构:DefaultPlugin,PosPlugin两个项目均为插件,均实现了Iplugin接可Iplugin接口 usingSystem;usi
阅读全文
摘要:ESFramewor使用技巧(2)-- 在插件中使用NHibernate 我们来讨论一下这种情景,你采用基于ESFramework的4层架构进行应用开发,你分析用户的需求,并将其分类整理为几大块,考虑每一块使用一个功能插件来完成。在这几个插件中,有个插件需要访问某个数据库,并且只有这个插件需要访问这个数据库,根据插件的“自治”性质,你不想将本插件中的数据访问“上升蔓延”到应用程序(FS),而是让它“仅仅”在本插件中,这样,无论是对FS还是插件都是有好处的--FS自己不需要访问数据库(日志记录除外),插件“自治”、而且插件之间相互独立,整个系统的结构是非常清晰简单的。 好了,我们决定在那个需要.
阅读全文
摘要:在Mike Taulty的视频教程中有一个动态加载silverlight应用程序的DEMO,其程序运行效果如下: 当加载dll之后: 其实实现这个的效果本身并不难,主要是这个DEMO的应用场景可以让人做很大的扩展,比如说插件机制等. 好了,让我们看看如何实际去开发这个示例,以便让大家从流程和技术点上有个了解. 首先我们需要建立一个叫DynamicLoading的silverlight Application, 然后将如下的内容拷贝到Page.xaml中:<UserControlx:Class="DynamicLoading.Page"xmlns="http:
阅读全文
摘要:我的架构经验小结(三)-- 深入三层架构 在 我的架构经验小结(二)-- 关于三层架构一文中,已经比较深入的介绍过三层架构方面的一些经验了,现在,我们来使用一个更小的比例尺来近距离观察我所理解的三层架构。一.三层架构图二.系统各层次职责1.UI(User Interface)层的职责是数据的展现和采集,数据采集的结果通常以Entity object提交给BL层处理。Service Interface侧层用于将业务或数据资源发布为服务(如WebServices)。2.BL(Business Logic)层的职责是按预定的业务逻辑处理UI层提交的请求。(1)Business Function 子层
阅读全文
摘要:TCP服务器“拒绝服务攻击” 解决方案 说这是一个完全的解决方案,其实有点夸大了,但这个方案确实可以缓解TCP服务器遭受“拒绝服务攻击”时表现出的脆弱性。 当服务器以Tcp的方式提供服务时,客户端通过tcp连接上服务器。这时,恶意的程序,也可以通过tcp连接我们的服务器,如果恶意的程序采用循环与我们的服务器建立成千上万的连接,并在每个连接上都发送恶意的数据包给服务器,慢慢就会导致服务器资源耗尽而崩溃! 为了增强Tcp服务器在遭受“拒绝服务攻击”时的稳定性,我采用的方案是这样的:(1)通信协议的消息头增加Token字段,并且它是消息头的第一个字段。当服务器接收到一段数据,如果这段数据不是以To.
阅读全文
摘要:经过这几年的积累,在系统架构方面逐渐积累了一些自己的经验,到今天有必要对这些经验作个小结。在我的架构思维中,主要可以归类为三种架构模型:3/N层架构、“框架+插件”架构、地域分布式架构。 一.三种架构模型1.3/N层架构 这是经典的多层架构模型,对于稍微复杂一点或特别复杂的系统,不使用分层架构是很难想象的。下图是经典的3层架构: 如今,凡是个程序员都能侃侃而谈3/N层架构,这确实是解决系统复杂性的一种主流模式,但是,只要采用了3/N层架构是不是就一定能解决系统的复杂性了?不一定,关键在于你在你的系统中如何实作你的3/N层结构。 在采用了3/N层架构后,我们还是要解决以下非常重要的问题:系统的可
阅读全文
摘要:(本文名字取为“服务器系统自动升级”,实际上适用于所有应用程序自动升级的情况。) 前文介绍了在服务器或客户端应用程序运行的过程中,插件如何自动升级、更新。基于前文相同的理由,AS、FS、IRAS也需要有自动升级的功能。 与插件在运行时动态更新不同,服务器系统无法在运行时动态更新,只有在服务器系统重新启动的时候,才是自动升级的切入点。(1)对于功能服务器FS,可以采用持续/逐个更新的方式,即依次重启每个功能服务器。这样可以避免功能服务被中断的情况发生。需要注意的是,只有当目标FS上没有功能请求时,才可重启该FS,否则,会导致终端出现发出请求没有响应的糟糕的用户体验。解决方案是:在FS重启之前,F
阅读全文
摘要:当我们的服务平台搭建成功后,所需要做的主要事情就是开发服务端功能插件(IFunAddin)和客户端插件(IPassiveAddin),每个插件对(AddinPair)实现了一组相似或相近的需求/功能。 好了,我们已经开发了十多对插件对,然后分别XCopy到了各个服务器节点上,“整个系统”已经投入了运行。通过前面的介绍(回顾),相信大家对我们的“整个系统”有了个大致的映像。我们的IRAS服务器通常只存在于一个节点上,而我们的AS和对应的多个FS通常分布在非常多个节点上(比如每个大中城市都分配一个AS),而且这些节点相距非常遥远,深圳AS位于深圳、上海AS位于上海、武汉AS位于武汉等等。整个系统非
阅读全文
摘要:http://blog.csdn.net/zhuweisky/article/details/411825这个题目听起来蛮吓人的,毕竟本人的经验值也不高,却大放厥词在这里谈“企业级”。原因有二,一是把这一年以来的开发DataServer服务器的工作做个总结;二是希望能抛砖引玉,希望这方面的研究和交流繁荣起来,毕竟,目前讲这方面实战经验的文章资料太少了。正式开题之前,绝对有必要先简单的介绍相关的背景。在写这篇文章的时候,我在航天量子数码科技有限公司(Aeromatex)产品部工作,全权负责DataServer的设计与实现。DataServer基于GIS/GPS是用于提供各种基于位置服务及其它远程
阅读全文
摘要:最初之所以要采用插件的形式进行开发,主要是为了解决功能服务的“热插拔”问题,在决定采用“框架+插件”的方式进行设计后,我们就更进一步,打算将一个个可以分割开来的拥有完整功能的组件都做成插件的形式,并且使同类型的插件的接口兼容,这样在以后需要改变时就可以灵活的进行替换。比如,将通信部分做成通信插件、日志记录部分做成日志插件等等。首先,我们要弄清楚,什么是插件?我给出了一个定义,可能有失偏颇。 插件又称为扩展,是一种特殊的组件,用于增强和扩展基本框架的行为能力。插件和框架的通信协议是一组接口,插件的各种特性都可以通过该接口进行访问。插件主要有如下特点:(1)一个插件是一个独立的物理单元。它可以独立
阅读全文
摘要:设想这样一种场景:我们的服务系统提供一系列的功能服务,而以后会有更多新的功能服务增加进来,也可能出现功能服务需要被更改或移除的情况。对于这样的服务系统,一个常见的基本的要求就是,在添加/移除/更新功能服务的时候不能停止的服务系统的运行。通常,将每一项服务封装成一个插件Dll,可以非常容易地实现“插件热插拔”(关于插件的基础信息,参见这里),但是插件的“热替换”(“动态替换”)却成了一个问题。原因在于,当我们从服务系统中卸载插件Dll的时候,实际上服务系统仍然持有该Dll的底层引用,这时如果你尝试删除或覆盖这个Dll,windows就会给出类似“该Dll正在被使用”的信息。 那么如何解决这个问题
阅读全文
摘要:在DataServer中,功能插件位于功能服务器上,被框架用于处理所有的功能请求,功能请求的表现形式是数据流,即字节数组。 在描述功能插件的外貌之前,先有必要了解这个被功能插件处理的数据流,这个数据流可能基于某种流协议格式,也可以是被序列化的请求对象。所谓“基于格式的流协议”是这样一种消息协议,它定义了数据流的固定偏移处接下来的几个字节的含义,比如规定数据流从偏移为4的地方是一个整数,该整数表示本消息的长度。如果采用基于协议格式的流,则功能插件必须首先能解析此数据流;如果采用的是序列化的流,则只要反序列化该流即可(序列化一般也可以采用两种方式--二进制序列化或XML序列化)。可以这么认为,序.
阅读全文
摘要:ESFramework介绍之(6)―― 基于C/S的4层架构概述 ESFramework的4层结构的4层分别是:客户端(Client)、应用服务器(AS)、功能服务器(FS)、数据库服务器。它们之间的联系图示意如下: FS (FunctionServer),功能服务器,处理并且仅处理所有的功能性请求,不参与用户管理、状态保持等,提供最纯粹的功能服务。 AS (ApplicationServer),应用服务器,转发所有的功能请求给FS,并处理所有的非功能请求,并管理终端用户、进行状态保持、日志记录等。 上图中的功能服务器FS的个数可能是0到N(N>0)个。在某种意义上可以认为,每个功能服务
阅读全文
摘要:ESFramework 4.0 进阶(01)-- 消息 需要交互的分布式系统之间通过消息来传递有意义的信息。消息是通信框架的核心。离开了消息,再谈通信框架就没有任何意义,所以,消息是ESFramework中一个最核心的概念。一. 消息的类别 在具体的应用中,我们需要对消息的类别进行定义,这有助于我们分析和讨论问题。消息大致可以分为4个类别:请求消息、回复消息、报告、通知、P2P消息。 在Client/Server模式中,出现最多的便是请求消息和回复消息。这两种类别的消息非常容易理解。 报告指的是Client/Server模式中客户端发送给服务端的消息。但这种消息不需要服务端的回复。比如,客户端
阅读全文
摘要:1.缘起:假设我们的C/S系统中服务端与客户端之间采用UDP进行通信,那么服务端如何知道每个客户端当前是否仍然在线了?有可能某个客户端一直没有退出,但是在很长一段时间内都没有与服务端作任何通信,那么服务端就应该认为这个客户端已经离线了吗?为了能让服务端掌握每个客户端是否在线的状态,我们可以这样做,只要客户端一启动起来,就每隔一段时间间隔(如10秒)就向服务端发一个“我还在线”的消息,以表明自己的状态。而服务端如果在一个更大的时间间隔内(如20秒)都没有收到某个客户端的任何消息,则可以判定这个客户端已经离线了。这就是我们常用的“心跳”机制,客户端每隔一段时间间隔发的那个消息就称为“心跳消息”,只
阅读全文
摘要:http://www.cnblogs.com/wenjie/archive/2008/04/11/1148577.html http://www.cnblogs.com/oraycn/archive/2011/10/11/2205662.html(ESFramework 开发手册)ESFramework介绍之(6)―― 基于C/S的4层架构概述 ESFramework的4层结构的4层分别是:客户端(Client)、应用服务器(AS)、功能服务器(FS)、数据库服务器。它们之间的联系图示意如下: FS (FunctionServer),功能服务器,处理并且仅处理所有的功能性请求,不参与用户管理.
阅读全文
摘要:有些情况下需要一个调度器专门来处理一些工作,如在网络处理程序中,当接收的数据后把信息存放到队列中,尽可能的更快地处理下一接收操作.而接收的数据信息则由调试器来处理,如数据分析,数据包处理等等工作.既然调度器负责处理工作,那最好给需要处理的工作制定一个规则,方便以后灵活扩展处理. 制定规则接口?12345public interface IWorkItem:IDisposable{void Execute();}其实接口制定很简单就是一个Execute方法,表示对该工作执行;那为什么还要实现IDisposable呢,目的就是为这工作提供一个释放操作描述,当此项工作完成会有一个释放行为处理相关事情
阅读全文
摘要:<summary> /// 阻塞队列 /// </summary> public class BlockQueue<T> { public readonly int SizeLimit = 0; private Queue<T> _inner_queue = null; public int Count { get { return _inner_queue.Count; } } private ManualResetEvent _enqueue_wait = null; private ManualResetEvent _dequeue_wai
阅读全文
摘要:在编写多线程程序时无可避免会遇到线程的同步问题。什么是线程的同步呢?举个例子:如果在一个公司里面有一个变量记录某人T的工资count=100,有两个主管A和B(即工作线程)在早一些时候拿了这个变量的值回去 ,过了一段时间A主管将T的工资加了5块,并存回count变量,而B主管将T的工资减去3块,并存回count变量。好了,本来T君可以得到102块的工资的,现在就变成98块了。这就是线程同步要解决的问题。在.Net的某些对象里面,在读取里面的数据的同时还可以修改数据,这类的对象就是“线程安全”。但对于自己编写的代码段而言,就必须使用线程同步技术来保证数据的完整性和正确性了。有几个规律: 1、如果
阅读全文
摘要:XML-RPC,是英文名称XML Remote Procedure Call的简称,即XML远程方法调用。我个人的理解是,XML是远程传输数据的形式,协议的作用是调用远程的API接口。 最初的接触是来自z-blog的一个插件。打开z-blog的官方首页,最下面有这样一句话: 安装WLWSupport插件配合使用Windows Live Writer,完美支持标签编辑,别名,摘要,上传;完全可视化写博. 这个功能就是通过XML-RPC实现的,而且是asp的实现方式。 话说回来,XML-RPC是什么神奇的东西呢?详细的介绍资料可以参考创建这个东西的官方网站XML-RPC.COM。 官方网站提供了一
阅读全文
摘要:http://www.cnblogs.com/zhuweisky/archive/2006/03/27/360124.html http://blog.csdn.net/zhuweisky/article/details/4608945//-----------------------------------#region InstantMessageContract public class InstantMessageContract : IContract { #region Members public int MessageTextLen; //消息文本长度 public strin
阅读全文
摘要:mencoder -oac mp3lame -lameopts aq=7:cbr:br=128 -srate 44100 -vf scale=width:height,harddup -ovc x264 -x264encopts bitrate=320:pass=2 InputFile -o OutputFile//视频滤镜... -vf ...,eq=B:C,...harddup ... B=亮度,C=对比度... -vf ...,rotate=R,...harddup ... R=旋转方式(0,逆时针90度。1,顺时针90度。)... -vf ...,mirror,...harddup .
阅读全文
摘要:http://themeforest.net/item/http://preview.walkingpixels.com/tachyonhttp://jsfiddle.net/hleinone/UF4nr/(FileInput)http://www.walkingpixels.com/http://themeforest.net/item/options-business-corporate-premium-wordpress-theme/full_screen_preview/533599http://themeforest.net/item/boulevard-a-wordpress-ma
阅读全文
摘要:在Jquery中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg')的写法。然而,当我们引入多个js库后,在另外一个js库中也定义了$符号的话,那么我们在使用$符号时就发生了冲突。下面以引入两个库文件jquery.js和prototype.js为例来进行说明。 第一种情况:jquery.js在prototype.js之后进行引入,如: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.Co
阅读全文
摘要:<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>chainningcode</title><scriptsrc="../scripts/jquery-1.2.3.intell
阅读全文
摘要:C# Socket异步通信 服务器端TCPServer1、使用的通讯通道:socket2、用到的基本功能:Bind, Listen,BeginAcceptEndAcceptBeginReceiveEndReceive3、函数参数说明Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->Socketlistener=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.
阅读全文
摘要:<!DOCTYPE html> <head> <meta charset="UTF-8"> <title>使用数据库实现Web留言本</title><script> var datatable = null; var db = openDatabase('MyData', '', 'My Database', 102400); function init() { datatable = document.getElementById("datat
阅读全文
摘要:绑定事件 var addEvent = function( obj, type, fn ) { if (obj.addEventListener) obj.addEventListener( type, fn, false ); else if (obj.attachEvent) { obj["e"+type+fn] = fn; obj.attachEvent( "on"+type, function() { obj["e"+type+fn](); } ); }};另一个实现 var addEvent = (function () {
阅读全文
摘要:http://blog.csdn.net/yangjundeng/article/details/321920标题:在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分当看到.NET中TcpListener和TcpClient的时候,我非常高兴,那就是我想要的通讯模式但是使用之后发现它们的力量太单薄了,我们需要一个更好的类库来替代它们.下面提供了一些类,可以很好的完成Tcp的C/S通讯模式.在本文的第二部分,我将为大家介绍怎么使用它们主要通过事件来现实整个的功能:服务器的事件包括:服务器满新客户端连接客户端关闭接收到数据客户端使用的事件包括:已连接服务
阅读全文
摘要:if(!coos)var coos = function(){};if(!coos.browser){coos.userAgent = navigator.userAgent.toLowerCase();coos.browser = {version: (coos.userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],safari: /webkit/.test(coos.userAgent),opera: /opera/.test(coos.userAgent),msie: /msie/.test
阅读全文
摘要:jQuery动画高级用法(上)——详解animation中的.queue()函数 如果你拿着一个疑问去找专业人士寻找答案,那么你的一个疑问会变成三个,因为他会用另外两个令你更加一头雾水的名词来解释你的这个疑问。 我想这是大多数,包括我在内,IT人在学习过程中碰到的最大问题。当你有一段代码或是一个概念不是很清楚,百度也好,Google也好,在论坛发问也好,给出的答案往往又会夹杂着更多你不懂得概念和令你头疼的代码。 我亦是吃了同样的亏,痛定思痛,决定对animate方面做一些总结,希望能给大家一些启发和帮助从一个实际应用谈起 今天不谈animate()、fadeIn()、fadeOut()...
阅读全文
摘要:jQuery框架学习第二天:jQuery中万能的选择器jQuery框架学习第一天:开始认识jQueryjQuery框架学习第二天:jQuery中万能的选择器jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQuery操作元素的属性与样式jQuery框架学习第五天:事件与事件对象jQuery框架学习第六天:jQuery中的Ajax应用jQuery框架学习第七天:jQuery动画–jQuery让页面动起来! jQuery框架学习第八天:ASP.NET jQuery实施方案jQuery框架学习第九天:jQuery工具函数介绍与使用 jQuery框架学习第十天:
阅读全文
摘要:JavaScript处理事件的一些兼容写法 博客分类:jsJavaScriptChromeC#C++C绑定事件 var addEvent = function( obj, type, fn ) { if (obj.addEventListener) obj.addEventListener( type, fn, false ); else if (obj.attachEvent) { obj["e"+type+fn] = fn; obj.attachEvent( "on"+type, function() { obj["e"+type
阅读全文
摘要:HTML5 storage提供了一种方式让网站能够把信息存储到你本地的计算机上,并再以后需要的时候进行获取。这个概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候cookie都会被发送过去。HTML5的storage是存储在你的计算机上,网站在页面加载完毕后可以通过Javascript来获取这些数据。1、sessionStorage检测!!window.sessionStorage;常用方法.key = value.setItem(key, value).getItem(key).removeItem(key).clear()
阅读全文
摘要:.Net WebService(也包括一般意义的 HttpWebRequest) 超时设置 1. 服务器端设置超时 在 web.config 的 system.web 里添加如下配置项: < httpRuntimeexecutionTimeout="30"/> 以上时间单位是秒. 记得要把 web.config 的 debug 模式关闭: < compilation defaultLanguage="c#"debug="false"/> 如果 debug 模式没有关闭, executionTimeout 会被忽
阅读全文
摘要:jQuery选择器共有四大类,分别为基本选择器,层次选择器,过滤选择器和表单选择器。下边就来分别总结一下。 1, 基本选择器? 基本选择器就是jQuery中最常用的选择器,也是最简单的选择器,它通过元素标签名,元素Id,Class来查找DOM元素。基本选择器共有五种,总结如下: 选择器返回示例元素标签选择器集合元素$(“p”)选取所有的<p>元素。Id选择器单个元素$(“#test”)选取Id为test的元素。Class选择器集合元素$(“.test”)选取所有class为test的元素通配符选择器集合元素$(“*”)选取所有的元素。群组选择器集合元素$(“div,span,p.m
阅读全文
摘要:通过HttpWebRequest在后台对WebService进行调用目录:1 后台调用Webservice的业务需求2WebService支持的交互协议3如何配置WebService支持的协议4后台对WebService的调用4.1 SOAP 1.1 后台调用实例4.2 SOAP 1.2 后台调用实例注:本文章的开发环境为VSS2008 .net FrameWork 3.5本文章设计到使用的代码示例的WebService 为服务路径:http://localhost/WebServiceTest/Service1.asmx服务接口:[WebMethod] public string Hell.
阅读全文
摘要:MongoDB实战开发 【零基础学习,附完整Asp.net示例】阅读目录开始下载MongoDB,并启动它在C#使用MongoDB重构(简化)代码使用MongoDB的客户端查看数据使用MongoDB的客户端维护数据MongoDB提供的C#驱动MongoDB不支持在查询数据库时使用Join操作获取MongoDB服务端状态【目标】:本文将以实战的形式,向您展示如何用C#访问MongoDB,完成常见的数据库操作任务,同时,也将介绍MongoDB的客户端(命令行工作模式)以及一些基础的命令。 【说明】:MongoDB是什么?有什么用?如果不清楚这些问题的,请自己google一下吧。 【适合对象】:完全没
阅读全文
摘要:1. BeginInvoke和EndInvoke方法 2. Thread类3. 线程池4. 线程同步基础5. 死锁6. 线程同步的7种方法7. 如何在线程中访问GUI组件一、线程概述在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多个子任务执行。这就需要在同一个进程中开启多个线程。我们使用C#编写一个应用程序(控制台或桌面程序都可以),然后运行这个程序,并打开windows任务管理器,这时我们就会看到这个应用程序中所含有的线程数,如下图所示。如果任务管理器没有“线程数”列,可以【查看】>【选择列】来显
阅读全文
摘要:每个委托都有三个方法:Invoke、BeginInvoke、EndInvoke。第一个方法是委托指定函数的同步调用,另外两个是异步调用。 BeginInvoke方法,调用后立即返回,不等待调用结果。EndInvoke方法,用于检索调用结果。调用BeginInvoke后可随时调用 EndInvoke 方法;如果异步调用未完成,EndInvoke 将一直阻塞到异步调用完成。EndInvoke 的参数包括您需要异步执行的方法的 out 和 ref 参数(在 Visual Basic 中为 <Out> ByRef 和 ByRef)以及由 BeginInvoke 返回的 IAsyncResu
阅读全文
摘要:系统类Type类,Object类,String类, Arrary类,Console类, Exception类,GC类, MarshalByRefObject类, Math类。DateTime结构,Guid 结构, ICloneable接口,IComparable接口,IConvertible接口, IDisposable类,集合类 ICollection接口,IComparer接口,IDictionary接口。IDictionaryEnumerator接口 ,IEnumerable接口, IEnumerator接口,IHashCodeProvider接口,IList接口,Stack 类,Qu.
阅读全文
摘要:public delegate void TimeoutHandler(int connectID);public class UserOnLineChecker{ public event TimeoutHandler SomeConnectionTimeOuted; private Timer timerForCheckOnLine; public UserOnLineChecker() { this.SomeConnectionTimeOuted = null; } private void OnLineCheckAction(object state){ if ...
阅读全文
摘要:锁除了lock外,还有ReaderWriterLock使用如下:ReaderWriterLock rwLocker = new ReaderWriterLock();rwLocker.AcquireWriterLock(1000);//加锁hashtable.Remove(id);rwLocker.ReleaseWriterLock();//释放锁
阅读全文
摘要:sphinx在window下和linux下加入开机自启动 linux下加入etc的rc.local即可window下searchd –-install -–config d:/csft3.1/bin/xxxx.conf相应的删除服务命令为:searchd –delete
阅读全文
摘要:c#委托事件简单例子2009-05-11 10:57一、委托委托类似于函数指针,但函数指针只能引用静态方法,而委托既能引用静态方法,也能引用实例方法。委托使用分三步:1、委托声明。2、委托实例化。3、委托调用。例程一:程序代码using System;namespace 委托{ delegate int NumOpe(int a,int b); //第一步:委托声明 class Class1 { static void Main(string[] args) { Class1 c1 = new Class1(); NumOpe p1 = new NumOpe(c1.Add); //委托实例化,
阅读全文
摘要:在.NET 1.1中处理事件时很麻烦的事情。比如创建下面这个类:[Serializable] public class LogEntry { private string iD; /// <summary> /// 事件ID /// </summary> public string ID { get { return iD; } set { iD = value; } } string message; /// <summary> /// 事件内容 /// </summary> public string Message { get { retu
阅读全文
摘要:http://www.cnblogs.com/2018/archive/2011/02/26/1965569.htmlWCF的基础ABC和Endpoint,对于常见的场景如果这么多的组合显然也很复杂,实际的应用中根据具体的场景选择对应的方式图书”Programming WCF Services”(WCF服务编程) 对这个组合进行了详细的总结,如下:【对于WCF的基础知识可以参阅图书或其他资料】 绑定和安全场景绑定局域网场景互联网B2B场景匿名场景无安全场景BasicHttpBindingNoNoYesNoYesNetTcpBindingYesYesNoYesYesNetPeerTcpBindi
阅读全文
摘要:http://www.cnblogs.com/xiaozhuang/archive/2008/04/30/1177399.html以前我们用WebService做分布式系统的时候,认证是个麻烦的问题,通常的做法是继承一个SoapHeader,把用户名和密码放到里面,每调用一个方法都要把用户名和密码传递给服务器端来验证 ,效率相当低,代码编写相当的麻烦,而且还不安全! WCF支持多种认证技术,例如Windowns认证、X509证书、Issued Tokens、用户名密码认证等,在跨Windows域分布的系统中,用户名密码认证还是比较常用的,要实现用户名密码认证,就必须需要X509证书,为什么呢?
阅读全文
摘要:http://www.cnblogs.com/webabcd/archive/2008/06/24/1229049.html化零为整WCF(14) - 事务(Transaction)作者:webabcd介绍WCF(Windows Communication Foundation) - 事务(Transaction): ·对契约方法使用TransactionFlowAttribute声明(设置TransactionFlowOption参数),以指定服务操作的事务流策略 ·对服务方法是用OperationBehaviorAttribute声明(设置TransactionScop
阅读全文
摘要:http://blog.csdn.net/fangxinggood/article/details/6235662WCF 很好的支持了 REST 的开发, 而 RESTful 的服务通常是架构层面上的考虑。 因为它天生就具有很好的跨平台跨语言的集成能力,几乎所有的语言和网络平台都支持 HTTP 请求,无需去实现复杂的客户端代理,无需使用复杂的数据通讯方式既可以将我们的服务暴露给任何需要的人,无论他使用 VB、Ruby、JavaScript,甚至是 HTML FORM,或者直接在浏览器地址栏输入。WCF 中通过 WebGetAttribute、WebInvokeAttribute (GET/PU
阅读全文
摘要:http://www.cnblogs.com/wlflovenet/archive/2011/10/29/WCFREST.html最近工作中学习使用了WCF REST,REST 有很多好处 高效 简约 面向资源 而客户端调用 也变得非常简单。REST 入门的资料等 大家可以去网上找 这里主要分享下遇到的问题以及解决~一.环境准备使用WCF REST 可以先下载一个模版 并大致预览下载好这个模版后 新建项目 选择这个模版 会默认帮我们生成一个 CRUD 的代码 新手朋友可以用这个快速熟悉下REST风格的WCF.这这里还给我们提供了一个很方便的功能 help 只需在我们的服务后面 加上help 就
阅读全文
摘要:WCF能够共享ASP.NET的session,不同的WCF客户端代理类在采用Per Call模式下访问WCF能够访问同一个ASP.NET Session.但是WCF的Session和ASP.NET的Session是不同的。WCF的Session代表着服务实例,它是被客户端代理类访问时初始化的。WCF依靠消息通道,安全回话和消息模式等来联系session的。而ASP.NET的session是类似服务端的一种存储数据的模式。它是通过客户端cookie和uri来维护session的 利用ASP.NET的session实现认证,在aspx里记录用户认证信息: 1 string UserId = H..
阅读全文
摘要:http://www.cnblogs.com/gaoweipeng/archive/2009/09/04/1560260.html无意中在一个国外的站点下到了一个利用WCF实现聊天的程序,作者是:Nikola Paljetak。研究了一下,自己做了测试和部分修改,感觉还不错,分享给大家。先来看下运行效果:开启服务:客户端程序:程序分为客户端和服务器端:------------服务器端:IChatService.cs:CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlig
阅读全文
摘要:http://www.cnblogs.com/datacool/archive/2011/07/13/wcfsoa.html本人才疏学浅,在现在的项目中即是程序员又是架构设计组组长。在使用WCF技术前看了无数号称WCF实战博客,没有一篇是我想要的。不过也算学到些皮毛。在此谢过,对你们的善意分享和辛勤劳动表示万分的感谢。由于以前是在csdn写博客,到博客园发文算是第一次。还请各位高手跳过,但愿不会浪费各位的表情。这里先上几张图,后面再讲过程。解决方案截图架构过程遇到的问题和解决方法。1、要不要使用dto对象,要不要建立DTO层?解决办法是巧妙的将实体对象和dto对象合并,这样少了转换的过程。感觉
阅读全文
摘要:一个Windows服务如何host多个wcf服务? protected override void OnStart(string[] args) { if (serviceHostes.Count > 0) serviceHostes.Clear(); var configuration = ConfigurationManager.OpenExeConfiguration(Assembly.GetEntryAssembly().Location); ServiceModelSectionGroup serviceModelSectionGroup = (ServiceModelSect
阅读全文
摘要:http://blog.csdn.net/21aspnet/如果你使用过P2P终结者或者类似的软件,你会发觉只要一打开就可以看到局域网内部的所有机器,而有时候我们正好有这样的需求,那我们应该怎么样用去获得局域网的所有机器呢?如果你到百度或者GOOGLE上面进行搜索你会发现,网上大致都是采用轮询的方法,让你把所有机器都扫描一遍,如果有反应则表示主机存在,但是这种办法并不可取,不仅耗资源,而且耗时间,即使你单独开一个线程去跑,估计半小时都没有任何结果。网上有人提出更加可笑的办法,说开多一些线程去检测。要知道,线程可不是省油的灯,再说,采用轮询的办法每遇到一台主机不存在就会抛出一个异常,而且该类异常
阅读全文
摘要:安装摄像头后,一般可以找到一个avicap32.dll文件这是一个关于摄像头的类usingsystem;usingSystem.Runtime.InteropServices;namespacewebcam{//////avicap的摘要说明。///publicclassshowVideo{//showVideocalls[DllImport("avicap32.dll")]publicstaticexternIntPtrcapCreateCaptureWindowA(byte[]lpszWindowName,intdwStyle,intx,inty,intnWidth,i
阅读全文
摘要:使用WIN32API获取打印机 转来转去,又回到WIN32API上来了,无奈啊。。。。。。怪不得C++依然这么吃香 啊。。。。。.Net给我们提供了DllImport来操作非托管的DLL(发现C#如此的强啊~~~~暗自偷笑)。主要使用到winspool.drv中的EnumPrinters函数,代码如下:[DllImport("winspool.drv",SetLastError=true,CharSet=CharSet.Auto)][return:MarshalAs(UnmanagedType.Bool)]privatestaticexternboolEnumPrinter
阅读全文
摘要:最近在做一个东西,要用到动态分配IP和释放IP。在C++下很容易就可以实现。但是由于因为网络IP设置是要涉及到硬件,C#是没有现成接口调用的.只能通过调用API或者是WMI这道系统提供给我们的桥梁.主要是通过"Win32_NetworkAdapterConfiguration"这个管理类。 下面附上我写的一个Demo,希望对需要的朋友有帮助,更希望高手来拍砖。using System;using System.Collections.Generic;using System.Text;using System.Management;using System.Manageme
阅读全文
摘要:C#实现网卡IP地址自由切换 需求:笔记本经常要在不同的地点连接网络,而各地的网络IP配置各不相同,这就导致不时的更改网卡的IP地址设置。Windows上更改IP设置很不方便,于是希望能够开发一款能够适用于不同网络,不同网卡的快速IP地址切换程序。分析:关键在于如何实现对网络适配器的配置。其实,MS为我们提供了System.Management 命名空间下的ManagementClass类,通过它我们可以获取和设置电脑上所有适配器的信息。其次,就是要实现对配置信息的存储,这个就简单了,可以通过将网卡信息序列化后保存到文件中,然后经反序列化取出。实现:解决了上面两个问题,一切就简单了。那就让我们
阅读全文
摘要:C#提供ManagementClass来对机器的信息进行管理,可以通过设定不同的管理类来获得机器的基本信息。下面给出了一些基本的信息的获取方法,包括获取CPU数目,cpu频率,内存大小,硬盘大小。private void GetLocalInfo() { string cpuCount; string hdSize; string memorysize; //得到CPU信息 ManagementClass mcpu = new ManagementClass("Win32_Processor"); ManagementObjectCollection mncpu = mcp
阅读全文
摘要:using System;using System.Management;namespace Soyee.Comm{/// <summary>/// Computer Information/// </summary>public class Computer{public string CpuID;public string MacAddress;public string DiskID;public string IpAddress;public string LoginUserName;public string ComputerName;public strin
阅读全文
摘要:RPC服务即Remote Procedure Call 远程过程调用,,,,它充当了客户端和服务器端交互的桥梁,,,,,,,,, 引入信道(Channel)和接收点(Destination),,,,,,开发者可以为每一个端点(Endpoint)定义多个信道 RPC组件包括三种RPC服务:RemoteObject,WebServices,HTTPService RemoteObject:用来访问服务端对象,如java对象,不需要手工地将java对象封装为WebServices,,不同于其他两个,只有RemoteObject组件才能与Flex Data Service,,它们之间都是与二进制的AM
阅读全文
摘要:Flex和Spring的整合:1、将Spring的jar包拷贝到WEB-INF的lib下2、在web.xml中注册Spring,如下配置:<!-- Spring configuration file (Not needed if you don't use Spring) --><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext.xml</param-value>&
阅读全文
摘要:无论是哪种服务器端技术都能够很轻松地应用 XML,因为 XML 完全是一个基于文本的协议。像 XML 这样基于文本的协议的缺点是额外的数据抽象层的编写与维护工作相对很沉重。此外,如果数据需要序列化和反序列化,那么这个数据抽象层在客户端和服务器端都会占用很多资源。Flash Player 可以支持另外一种传输协议,这个协议能够缓解由基于文本的协议导致的传输瓶颈问题,能够帮助开发者以更简单的方式与服务器交互。这就是 AMF(Action Message Format)。它是一个二进制格式的协议,能够替代用于传输XML的基于文本的协议而在 HTTP 协议之上交换数据。采用 AMF 的应用中,数据抽象
阅读全文
摘要:IIS7发布WCF注意 WCFWindows.netMicrosoftCIS7中默认没有加入wcf/.svc的映射,所以需要手动注册,运行栏输入 Cmd代码 c:\Windows\Microsoft.NET\Framework\v3.0\WindowsCommunicationFoundation\ServiceModelReg.exe-ic:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe -i即可
阅读全文
摘要:IIS6下配置PHP有星外的 php自动安装程序,一切配置一键搞定。http://www.5i321.com IIS7下有了新一代利器,PHP Manager for IIS 7下载:http://phpmanager.codeplex.com/releases/view/62183简单介绍使用方法:1、首先下载PHP5 http://windows.php.net/download/ 然后解压缩到C:\php2、安装IIS服务 CGI/ISAPI扩展/ISAPI筛选 (在IIS角色服务中安装)3、安装PHP Manager for IIS 7以上都安装之后,重新打开IIS管理器,会看到PHP
阅读全文
摘要:http://www.cnblogs.com/wanqiming/archive/2009/09/22/1571565.html在WCF下作大文件的上传,首先想到使用的就是Stream,这也是微软推荐的使用方式。处理流程是:首先把文件加载到内存中,加载完毕后传递数据。这种处理方式对小文件,值得推荐,比如几K,几十k的图片文件,文本文件对大文件就不适用,比如10G的电影,把10G的数据加载到缓存中再传递,这是不可想象的。这个时候我们想到的就是断点续传。由于数据量很大。会导致当前程序阻塞,所以采用异步发送的方式,以进度条显示出来,这也是本篇文章所要实现的功能. 另外,目前BasicHttpBind
阅读全文
摘要:3 MTOM消息优化传输 MTOM 全称Message Transmission Optimization Mechanism,即消息传输优化机制。它提出的模型适用于大量数据的交互情况。针对Base64编码情况带来的开销提出的解决方案。当数据量小的时候,SOAP依然使用XML进行消息的传递。 但是在大量数据情况下,如果数据依然进行Base64编码,会带来33%的额外开销,这样的情况对于大量数据交换的情况是无法容忍的。MTOM 就是针对SOAP 消息传输的基础上提出的改进办法。对于大量数据的传递,不会进行进行Base64编码,而是直接以附件的二进制原始数据的形式封装在SOAP消息的M...
阅读全文
摘要:WCF - IsOneWay 和异步的区别http://www.rainsts.net/article.asp?id=460在某些博客文章里,直接将 IsOneWay 称为 "异步方法"。虽然多数时候不会对开发带来什么问题,但深究起来,这两者是不同的。接下来,我们做个试验。将同一个服务契约分别用 IsOneWay 和异步进行实现,客户端使用多线程模拟并发调用,并使用 ServiceThrottlingBehavior (也可以使用 InstanceContextMode.Single) 进行并发控制。注意对比输出结果,我们就会发现其不同之处。IsOneWay版本[Servi
阅读全文
摘要:一、0.0.0.0 严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。 二、255.255.255.255 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。如果翻译成人类的语言,应该是这样:“这个房间里的所有人都注意了!”这个地址不能被路由器转发。 三、127.0.0.1 本
阅读全文
摘要:(1)单播 一对一(2)组播/广播 一对多 单点发送 多点接受 固定地址范围根据internet NIC关于IP地址的规定,IP地址共分为A-E 共5类,其中A-C类目前应用的普通IP地址,E类地址保留为将来使用,D 类地址即为组播地址,其网络号为固定的1110(第0~3位),第4~31位定义了某一特殊的组播地址,范围为 224.0.0.0~239.255.255.255,共有228个约27亿个地址。 本文来自: (http://www.91linux.com/) 详细出处参考:http://www.91linux.com/html/article/network/20080616/1257.
阅读全文
摘要:http://www.csharpwin.com/csharpspace/10274r6060.shtmlhttp://www.csharpwin.com/search.aspx?ChID=0&AID=0&KW=ESFramework前面我们已经讨论了客户端与服务器通信的一般模式,即Client通过Tcp连接向Server递交请求,Server处理请求后,使用同一Tcp连接将服务结果发送给Client。这一Tcp连接在程序中被抽象成网络流,也就是System.Net.Sockets.NetworkStream类,这个类是非线程安全的。 一.线程安全如果一个类是线程安全的,表明该
阅读全文
摘要:一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,但排序速度很慢。同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.二,c#中Hashtable用法简述1.使用hashtable前.需要添加System.Collections的引用using System.Collections;2.
阅读全文
摘要:(1)无参宏定义 #define D_SCREEN_LEFT 0 #define D_SCREEN_TOP0#define D_SCREEN_RIGHT1280#define D_SCREEN_BOTTOM720调用示例:printf("%d*%d\n",D_SCREEN_RIGHT,D_SCREEN_BOTTOM);(2)带参宏定义 #define SECS_TO_DAYS(secs) ((secs / 3600) / 24) //将秒转换成天#define MIN(a, b)((a)<(b)?(a):(b))//取最小值#define MAX(a, b)((a)&
阅读全文
摘要:各种位运算的使用1. & 运算二进制中1 & 1 = 11 & 0 = 00 & 0 = 00 & 1 = 0& 运算通常用于二进制取位操作,例如一个数 & 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数.2. | 运算| 运算通常用于二进制特定位上的无条件赋值,例如一个数 | 1的结果就是把二进制最末位强行变成1。如果需要把二进制最末位变成0,对这个数 | 1之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数。3. ^ 运算^ 运算通常用于对二进制的特定
阅读全文
摘要:void main(void){ int src=54; int pwd=32; int dst=0; dst=src^pwd; printf(" Encryption: %d\n",dst); src=dst^pwd; printf(" Decryption: %d\n",src);} 异或一次就加密了,再异或一次又还原了.实际应用中,常用此方法拓展结合MAC地址加密解密文件,如下:bool file_encrypt(char* data, int fmoive_type){if( fd == NULL ){return false;}else{cha
阅读全文