自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhuweisky

不为繁华易匠心

  • 博客(411)
  • 资源 (5)
  • 收藏
  • 关注

原创 DataRabbit 轻量的数据访问框架(04) -- IEntityRelationLoader

  (完全限定类名:DataRabbit.ORM.IEntityRelationLoader)   在DataRabbit框架提供的ORM功能之中,除了IOrmAccesser接口展现的核心ORM功能外,IEntityRelationLoader接口也提供了一些有意义的功能。正如其名,IEntityRelationLoader是通过数据表的主外键关系来加载当前Entity的Parent和

2007-03-21 09:54:00 598

原创 DataRabbit 轻量的数据访问框架(03) -- IOrmAccesser(续)

   本文将接着 DataRabbit 轻量的数据访问框架 -- IOrmAccesser 继续介绍IOrmAccesser的一些高级功能。这些高级功能需要DataRabbit.ORM.ISmartEntity接口的支持。注意,对于Entity class 来说,该接口并不是强制的。(1)关于含自增字段的Entity插入:     插入后,Entity中对应自增字段的属性将被正确

2007-03-20 11:54:00 699

原创 DataRabbit 轻量的数据访问框架(02) -- IOrmAccesser

   (完全限定类名:DataRabbit.ORM.IOrmAccesser)      在DataRabbit框架中,通过IOrmAccesser来对数据库进行ORM访问,只要Entity(即ORM中的“O”)的定义与数据库表的结构完全一致,即可使用IOrmAccesser来对其进行ORM操作。1.Entity   Entity除了包括成员变量与属性(这些变量与属性与数据库表的结构完全

2007-03-20 10:54:00 922

原创 DataRabbit 轻量的数据访问框架(01) -- ITransactionAccesser

   (完全限定类名:DataRabbit.ITransactionAccesser)   在DataRabbit 轻量的数据访问框架 --序 中,我们已经知道,所有的访问器接口都继承了ITransactionAccesser接口。ITransactionAccesser的含义在于:访问器对象即可以工作于一个事务(Transaction)上下文中,也可以在脱离事务的环境中工作。

2007-03-20 09:54:00 803

原创 DataRabbit 企业级的数据存取框架(00) -- 序

   (最新版本为DataRabbit 4.0,请到本文末下载处下载。最后更新:2009.09.15)   DataRabbit支持基于关系(Relation)的数据库操作和基于ORM的数据库操作,内置了对Oracle和SqlServer的支持,并且可以通过插件的方式对其它数据库类型提供支持。DataRabbit中的所有访问器(都实现了ITransactionAccesser接口)即可以

2007-03-19 16:55:00 1776

原创 复制SqlServer数据库

   在目前的工作中需要解决复制整个SqlServer数据库的问题,复制的内容包括数据库大纲、数据库中的存储过程、函数、表结构、主外键关系以及表中的所有数据等,也就是说copy版本与原数据库一模一样。经过一段时间的摸索,找到的一个比较简单的解决方案是:(1)在复制数据库之前,先备份该数据库到文件。(2)依据备份文件创建新的数据库,并Restore即可。   备份数据库可用如下Sql语句:

2007-03-19 11:55:00 763

原创 注解:System.Threading.Timer

   System.Threading.Timer 是一个非常常用的定时器类,关于这个类的使用,我们需要注意以下几点:   1.System.Threading.Timer 的任何一个实例,实际上是通过使用win32底层(非.NET Thread Pool中的线程)来进行调度的。   2.当到达调度时刻时,System.Threading.Timer 将异步调用由Time

2007-03-16 13:55:00 1172

原创 做一个合格的Team Leader -- 基本概念

1.领导和管理   人们乐于被领导;他们不喜欢被管理,不喜欢像牛一样被驱赶或指挥。   管理者强迫人们服从他们的命令,而领导者则会带领他们一起工作。   管理是客观的,没有个人感情因素,它假定被管理者没有思想和感受,必须被告知要做什么和该如何做。管理适合处理无生命的对象或者例行公事。   领导是引领、引导,它激励人们达成目标。领导力是带有强烈个人感情色彩的,它不是你能命令的,也不是你能测

2007-03-05 16:55:00 868

原创 自动化 object <-> xml

   .NET提供了Soap序列化的方式可以实现 object xml ,但是它有三个缺点:(1)它要求object 必须打上[Serializable]标签,这是强侵入性的。(2).NET的Soap序列化与程序集的版本紧密关联,如果object的class定义没有发生变化,而定义该class的程序集版本发生了变化,那么反序列化(xml->object)可能就会失败。(3).NET的S

2007-03-02 08:55:00 787

原创 使用Null Object设计模式

   在ESFramework的设计实现中,很多地方都用到了Null Object设计模式。Null Object模式的含义在于,提供一个对象给指定的类型,用以代替这个对象为空的情况。 Null Object提供了“什么也不做”的行为,隐藏来自它的合作者的细节。   对于如何理解和应用该模式,通过一个实例就能很好的进行说明。这一节我们在讨论消息分派器,消息分派器使用了前述的日志记录器,并

2007-02-28 19:55:00 738

原创 我的架构经验小结(二)-- 关于三层架构

   在 我的架构经验小结(一)-- 常用的架构模型 一文中简单介绍了我常采用的几种架构模型,本文将稍微深入地介绍其中的一种 -- 三层架构模型。一.三层架构图 二.系统各层次职责1.UI(User Interface)层的职责是数据的展现和采集,数据采集的结果通常以Entity object提交给BL层处理。与UI平行的Service Interface层用于将业务发布为服务(如Web

2007-01-24 15:55:00 864

原创 使用用例捕获需求

   本文来自我提供用例培训的PPT。本文内容包括1.用例基本概念2.用例的作用3.从何处发现用例线索4.如何发现用例5.编写用例的准则6.如何判断系统用例是否有效1.用例基本概念(1)需求分析(用例技术)、系统分析(OOA)、系统设计(OOD)、系统实现(OOP)(2)用例的主要作用是:用来捕获系统的高层次(High Level)用户功能性需求 (3)用例从用户的视角描述了在逻辑上相对

2006-12-23 11:55:00 933

原创 我的架构经验小结(一)-- 常用的架构模型

      经过这几年的积累,在系统架构方面逐渐积累了一些自己的经验,到今天有必要对这些经验作个小结。在我的架构思维中,主要可以归类为三种架构模型:3/N层架构、“框架+插件”架构、地域分布式架构。一.三种架构模型1.3/N层架构       这是经典的多层架构模型,对于稍微复杂一点或特别复杂的系统,不使用分层架构是很难想象的。下图是经典的3层架构:     如今,凡是个

2006-12-23 09:55:00 1358

原创 写书计划启动!《.NET通信框架的设计、实现与应用》

ESFramework 2.0 的发布,标志ESFramework 已经进入了一个稳定的发展阶段,在过去两年多的时间里,ESFramework 逐渐地成熟起来。   很早就想过要写一本关于.NET 通信框架的书,如今,是时候了!这将不是一本讲述深奥理论的教程,它是我这几年在通信框架开发过程中经验的总结;它融合原理、实现、应用于一体。虽然全书围绕ESFramework 2.0来进行,但是如果你理

2006-12-01 10:55:00 1908 4

原创 MSMQ与Hashtable

   今天在使用.NET操作消息队列时,碰到一个小问题,如果采用XmlMessageFormatter序列化消息体,则消息体中不能包含Hashtable等字段,否则将无法完成序列化和反序列化(即使消息体对象加上了Serializable特性也不行)。   经过研究发现,XmlMessageFormatter不会采用我们经常用于.NET Remoting序列化的二进制或Soap格式,而是使

2006-11-16 12:55:00 798

原创 DTS开发记录(10)-- 可视化的流程编辑

   在将数据从数据源导出到数据目标的过程中,我们通常需要对数据进行一些检查、验证、加工、转换等操作,而这个加工转换的流程可能是非常复杂的,DTS通过可视化的拖拽的方式对数据加工转换流程进行自定义编辑。   下面的一个例子,是将某个市的学生记录表中的数据导出到省的学生记录表中,市数据库使用的是SqlServer,省数据库采用的是Oracle。   左边的工具栏中是不同类型的Filter,

2006-11-15 11:55:00 1320

原创 基于MSMQ使用WCF

   在windows平台上,MSMQ是首选的消息传递中间件,它是一种高速、异步、可靠的通信机制,当我们在Internet上的两个应用需要交换信息时,使用这样的中间件可能是必须的。   WCF完全面向SOA,大大简化了以往风格迥异的多种分布式解决方案。刚好,最近的一个项目需要使用SOA架构,而底层需要使用MSMQ作为消息传递基础设施,所以这两天研究了一下,在WCF中使用MSMQ的方法。下

2006-11-09 11:55:00 1207

原创 ESFramework扩展之EsfFTP -- 基于ESFramework的FTP服务

      ESFramework体系的目标之一就是帮助快速构建IM与业务相结合的系统,在我们的业务应用中,经常会遇到类似这样的需求:商家或服务商需要提供一些资料(文档、影片宣传资料等)给他的用户,他希望用户能方便地下载这些资料,另外,用户也可以直接上传自己的文件到服务器供商家检阅。这种功能就像我们常用的FTP软件的功能一样,在这里,它通常可以直接集成到企业的业务应用中。   EsfFT

2006-09-15 11:55:00 929

原创 ESFramework扩展之EsfP2P -- 可靠的P2P传递

    上一篇ESFramework扩展之EsfP2P -- 基于ESFramework的P2P实现 主要介绍了EsfP2P如何协助建立P2P Session,那只是整个故事的一半,EsfP2P主要职能的另一半是确保P2P消息的可靠传递。我们已经知道,目前的EsfP2P扩展的实现是基于UDP的NAPT穿透(以后还会加入基于TCP的NAPT穿透),而UDP是不可靠的,在传递的过程中可能会出

2006-09-05 16:56:00 816

原创 ESFramework 最新进展 -- ESFramework体系 2006.08.25

   最近一段时间忙里抽空将ESFramework整理了一下,改动比较大,ESFramework 1.0Beta版将在不久后发布。   这次改动主要体现在重新将ESFramework定位为一个通信框架,曾在给关注ESFramework的朋友们 2006.06.25 一文中提到,要将ESFramework定位为一个应用框架,而我在后面的思索和实践中发现,ESFramework变得越来越庞大

2006-08-25 16:56:00 654

原创 ESFramework扩展之EsfP2P -- 基于ESFramework的P2P实现

    好久没有写关于ESFramework的文章了,曾很早就承诺过要写一篇介绍基于ESFramework实现NAPT P2P的文章,今天终于能抽出时间做这件事。    网络地址转换NAT(或者NAPT)的基本理论知识,网上有很多相关资料,不是很清楚的朋友可以先了解下什么是NAT、以及为什么要使用NAT。使用NAT的一个非常常见的场合就是P2P技术,要使两个隐藏在不同的局域网后面机器能够

2006-08-15 15:56:00 956

原创 DTS开发记录(9)-- 数据迁移任务 DataTask

    在DTS开发记录(1)--系统总体结构 一文中,我们已经看到,一次数据传递任务基于一个连接对和一个数据映射进行。但是之前,我们并没有提到“数据迁移任务”这个元素。随着设计的演化,我们发现一个数据任务已经不再仅仅是一个连接对加上一个数据映射了。现在,我们完全有必要把“数据迁移任务”这个概念抽象的表示出来,称之为DataTask。    有了DataTask,我们的数据引擎就可以修改

2006-07-31 17:56:00 874

原创 DTS开发记录(8)-- 主键的影响

    对于数据源向同一数据目标导出(我们称之为“数据汇集”)和增量导出来说,对主键的处理也是一个大的挑战。    我先定义一下在本DTS系统中主键(PrimaryKey)的含义:PrimaryKey 表示主键或联合主键,PrimaryKey并不是针对某个数据库表的,而是针对某个特定的DataMapping而言的,它用于在数据迁移过程中来唯一确定数据源或数据目标中每条记录。    所以,

2006-07-27 15:56:00 699

原创 反射中使用 BindingFlags.IgnoreCase

    我们经常需要通过反射来调用目标对象的方法或获取/设置目标对象的属性,Type.InvokeMember 方法签名如下:   public object InvokeMember(string name,BindingFlags invokeAttr,Binder binder,  object target,object[] args,CultureInfo culture)

2006-07-26 11:56:00 1127

原创 DTS开发记录(7)-- 灵活的引擎 IAgileEngine

    数据引擎是数据传递系统(DTS)的核心,正如游戏引擎是PC游戏的核心一样。    IAgileEngine从目前手上的DTS系统中不断的重构完善出来,虽然IAgileEngine已经不局限于在本DTS系统中使用,但是,我还是打算在这个系列文章中来介绍它。    正如,任何事物都有最简单的雏形,IAgileEngine也是一样。DTS系统最初的引擎也是一个非常简单的引擎,随着功能不

2006-07-20 15:56:00 703

原创 DTS开发记录(6)-- 数据映射

    在DTS开发记录(4)-- 映射列一文中,我们详细的讨论了参与映射的源列和目标列,在拥有了映射列的基本概念的基础上,我们可以讨论数据映射DataMapping了。    数据映射主要由一组映射项(MappingItem)组成,它包含了源数据大纲到目标数据大纲的详细的完整的映射关系。    首先要注意一点,数据映射与数据大纲绑定,但是并不与任何特定的数据库表绑定。这样,DataMa

2006-07-14 16:56:00 702

原创 DTS开发记录(5)-- 挑战增量导出

    增量导出恐怕是DTS系统中最艰难的部分了,我们曾考虑过很多方案,最后都因为需要表大纲做一定的假设而不具备通用性而放弃。有很多效率较高的方案,由于为了追求通用性而无法实现,因为现实的情况比我们理想的要复杂许多。    下面将列举我们曾考虑的几种主要方案,这些方案乍一看似乎都很有希望,可通过层层分析,最后都因为复杂的现实情况而胎死腹中。1.触发器    这是一个非常简单直接的解决方案

2006-07-12 09:56:00 1015 1

原创 DTS开发记录(4)-- 映射列

    在DTS开发记录(1)--系统总体结构 一文中,我们介绍到映射列:“参与了数据映射的源列或目标列。注意,并不是所有的列都会参与映射,这是常见的情况。”1.映射列分为:源映射列和目标映射列。    public interface IMappingColumn    {        string ColumnName { get;set;}    }    public in

2006-07-10 17:56:00 746

原创 DTS开发记录(3)-- 连接与连接对

     在 DTS开发记录(2)-- 数据管道及插件 一文中,我们介绍了数据管道,IDataPipeFactory的CreateDataPipe方法需要一个IConnection参数,这个参数就表示一个连接。public IDataPipe CreateDataPipe(IConnection conn)    IConnection的定义如下:    ///     //

2006-07-04 16:56:00 811

原创 DTS开发记录(2)-- 数据管道及插件

    通过前面两篇文章(已于2006-07-03修正)的介绍,我们已经大致明白了系统的目标的总体结构,从这篇文章开始,我们将逐渐深入到系统内部。    本文讲述数据管道,数据管道是用于在数据源/数据目标与DataTable之间进行数据传递的组件,它是与数据库类型和文件类型相关的,数据从数据源经过数据管道后,就变成与数据源类型无关的数据了,这样映射编辑和数据引擎便能对它们进行一致的处理。

2006-07-03 09:56:00 843

原创 DTS开发记录(1)--系统总体结构

    (原文发表于2006-06-28 ,修正于2006-07-03)    在DTS开发记录(序)一文中,我们已经明白了当前这个Data Transfer System的主要目标和存在的难点与挑战。在接下来的一系列的文章中,我将记录我们开发中是如何解决这些难点、如何应付这些挑战的,有的技巧或方案可能还并不成熟,所以如果你有任何想法,请留言告诉我。    本文就先从系统结构讲起。 

2006-06-28 15:56:00 881

原创 DTS开发记录(序)

    (原文发表于2006-06-27 ,修正于2006-07-03)    目前手头上正在负责一个DTS(这里的DTS是Data Transfer System的缩写)系统的开发,我打算写一系列的文章来记录这个开发的全过程,这个记录可以说是实时的--每当遇到一个重要问题或解决一个重要问题,我将记录之。侯捷老师说,“发表是最好的记忆”,这一系列的文章除了权作笔记外,也希望能对后来者有所

2006-06-27 19:56:00 978

原创 给关注ESFramework的朋友们 2006.06.25

    有好长一段时间没有更新我的blog了,也没有增加介绍ESFramework的文章了,对于关注ESFramework的朋友们,我深怀歉意。最主要的原因是,最近一段时间的工作实在是太忙了,现在手头上的一个项目是做一个数据传递系统(DTS),需要支持异构数据库之间的数据的导入导出、并且要支持数据类型的自动转换、列的合并、列的分裂、增量导出等基本功能。前两周,基本上把这个系统的大的框架搭

2006-06-25 19:56:00 833

原创 ESFramework介绍之(35)―― IMessageTransceiver

    (本文适用于ESFramework V0.3+)        在ESFramework介绍之(7)-- 服务器代理IServerAgent 一文中,我们详细的介绍了IServerAgent,我们已经知道,客户端与服务器之间的所有通信都可经过IServerAgent,包括要转发的P2P消息。IServerAgent的主要目的是:(1)屏蔽客户端与服务端之间的通信协议(Tcp/Ud

2006-06-07 19:56:00 638

原创 ESFramework介绍之(34)―― ITcpServerAgent和IUdpServerAgent组件关系图

    (本文适用于ESFramework V0.3+)    在ESFramework介绍之(7)-- 服务器代理IServerAgent(2006.06.06修正) 的介绍中,我们已经认识了IServerAgent的职责与作用,并且知道了 ITcpServerAgent和IUdpServerAgent是分别使用于Tcp和Udp的ServerAgent。但是它们与其它组件(比如通信组件

2006-06-06 10:56:00 838

原创 Java -- 在Eclipse上使用XFire开发WebService

    终于,使用Java完成了一个WebService的例子,其中的一个非常小的问题,折腾了我将近一天的时间。下面给出步骤,说明在Java平台上如何开发WebService。    采用的工具:Eclipse3.1.2 + Tomcat5.5 + XFire1.1 。使用XFire开发WebService应该说非常的容易,只需要按照下面例子的步骤来做:(1)在Eclipse中新建一个d

2006-06-01 15:56:00 633

原创 Java -- 在Eclipse上使用Spring

    在.NET上用的VS.NET+Spring.net+Nhibernate,到了Java平台上,自然对应着Eclipse+Spring+Hibernate。上一篇文章介绍了如何在Eclipse上使用Hibernate的入门,本文就简单介绍一下如何在Eclipse使用Spring。    (1)首先,是下载Spring,可以从sourceforge上下载,http://sourcef

2006-05-30 19:56:00 823

原创 Java -- 在Eclipse上使用Hibernate

    最近一个项目要用Java做,一点都不熟啊。没办法,只好硬着头皮啃了,花了大半天的时间,终于在Eclipse上完成了第一个Hibernate例子。下面记录关键的步骤,权作笔记,以备日后查看。 (1)下载Hibernate,并向项目中导入Hibernate。     Project->Properies->Java Build Path->Libraries->Add Externa

2006-05-30 15:56:00 758

原创 ESFramework介绍之(6)―― 基于C/S的4层架构概述

    ESFramework的4层结构的4层分别是:客户端(Client)、应用服务器(AS)、功能服务器(FS)、数据库服务器。它们之间的联系图示意如下:    FS (FunctionServer),功能服务器,处理并且仅处理所有的功能性请求,不参与用户管理、状态保持等,提供最纯粹的功能服务。    AS (ApplicationServer),应用服务器,转发所有的功能请求给FS

2006-05-28 10:57:00 866

原创 ESFramework介绍之(33)―― AS与FS通信实现及相关

    (本文部分内容只适合ESFramework V0.3+)    在ESFramework介绍之(14)-- AS与FS通信方案 一文中,我们讲到了AS与FS之间基本的通信方案,并且采取了一些策略来保证AS与FS之间的稳定通信。本文我们将给出AS与FS通信的两种实现,即基于Tcp连接池的通信实现和基于Remoting的通信实现。    我们已经知道,AS与FS之间的通信分为两类,一

2006-05-25 11:57:00 963

OVCS视频会议源码(Windows、Linux、Android、iOS、Web、银河麒麟、统信UOS)

OVCS是一套支持全平台的视频会议系统,并且适配了信创国产化的OS和CPU。OVCS源码压缩包中包括的源码有:服务端 + WinPC端 + LinuxPC端(国产OS) + Android端 + iOS端 + Web端。服务端和PC端使用VS + C#,安卓端和iOS端为原生,Web端为JS。 OVCS 视频会议主界面布局: (1)当只有一个人开启视频时,采用大视窗显示。 (2)当2~4人开启视频时,使用2x2布局。 (3)当超过4人开启视频时,使用3x3布局。

2023-06-20

即时通讯系统GGTalk 8.0 源码(Windows、Linux、Android、iOS)

GGTalk 8.0 源码,这次版本变更的主要内容如下: 增加Linux客户端,支持国产操作系统(如UOS、银河麒麟等)、国产CPU(如龙芯、鲲鹏等)。支持同一账号在多个设备上同时登录。支持高清视频聊天(1920*1080分辨率)。QQ:2027224508

2022-10-14

C#网络电子白板(支持pdf,word,ppt课件) 源码

下载源码,运行系统进行测试时,请注意: (1)启动服务端。 (2)启动第一个客户端,选择“老师”角色,登录进默认教室。 (3)再启动多个客户端,选择“学生”角色,登录进默认教室。 (4)老师即可进行上传课件、打开课件、删除课件、课件翻页,在课件上标注、书写,等等操作。

2015-09-10

企业即时通信系统 - OrayTalk 2.1

可在广域网直接部署运行(压缩包内含服务端、客户端、数据库脚本),功能及UI风格高仿QQ,主要功能有: (01)企业组织结构。 (02)文字聊天:字体设置、动态表情、振动提醒、截图、手写板。 (03)语音、视频聊天。 (04)文件/文件夹传送(支持断点续传)。 (05)离线文件、离线消息。 (06)远程协助。 (07)桌面共享(可指定共享区域)。 (08)好友:查找好友、添加好友、删除好友。 (09)群组:创建群、加入群、退出群、群讨论。 (10)消息记录:既在本地存储(查看时可瞬时加载),也存储于服务器数据库中(记录永不丢失,在任何地方都可查看)。 (11)最近联系人。 (12)个人资料:注册、修改、自拍头像/上传头像。 (13)在线状态:隐身、在线、离开、忙碌、请勿打扰。 (14)消息提醒(托盘图标闪动、头像闪动),对方“正在输入”提示。 (15)系统设置:开机自动启动、麦克风设备索引、摄像头设备索引,叉掉主窗口时关闭程序还是隐藏窗口。 (16)好友、群组资料本地缓存,加快启动速度。 (17)断线自动重连。

2014-09-24

ESFramework通讯框架

该通讯框架,底层使用IOCP模型,支持局域网和广域网的P2P通信,支持文件传送,支持跨平台通信,支持服务器群集 可以嵌入其它软件,二次开发,文档齐全,接口清晰规范,容易上手。

2012-05-24

IM聊天系统源码(C#),支持桌面客户端和Silverlight客户端

实现了网络聊天IM的基本功能,基于.NET 2.0 开发,使用了ESFramework通信框架。支持windows客户端和Silverlight客户端。很强大!

2011-04-08

NATUPnP - 解决TCP穿透NAT

使用upnp协议解决NAT TCP穿透问题。

2010-01-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除