随笔分类 - C#
C#
    
摘要:设想这样一种场景:我们的服务系统提供一系列的功能服务,而以后会有更多新的功能服务增加进来,也可能出现功能服务需要被更改或移除的情况。对于这样的服务系统,一个常见的基本的要求就是,在添加/移除/更新功能服务的时候不能停止的服务系统的运行。通常,将每一项服务封装成一个插件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
        阅读全文
            
摘要: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.
        阅读全文
            
摘要:http://blog.csdn.net/yangjundeng/article/details/321920标题:在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分当看到.NET中TcpListener和TcpClient的时候,我非常高兴,那就是我想要的通讯模式但是使用之后发现它们的力量太单薄了,我们需要一个更好的类库来替代它们.下面提供了一些类,可以很好的完成Tcp的C/S通讯模式.在本文的第二部分,我将为大家介绍怎么使用它们主要通过事件来现实整个的功能:服务器的事件包括:服务器满新客户端连接客户端关闭接收到数据客户端使用的事件包括:已连接服务
        阅读全文
            
摘要:.Net WebService(也包括一般意义的 HttpWebRequest) 超时设置 1. 服务器端设置超时 在 web.config 的 system.web 里添加如下配置项: < httpRuntimeexecutionTimeout="30"/> 以上时间单位是秒. 记得要把 web.config 的 debug 模式关闭: < compilation defaultLanguage="c#"debug="false"/> 如果 debug 模式没有关闭, executionTimeout 会被忽
        阅读全文
            
摘要:通过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 ...
        阅读全文
            
 
                    
                     
                    
                 
                    
                 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号