Discuz!NT

Discuz!NT
摘要: 在开发LLServer的同时,我一直在跟进测试企业版的相应LLServer客户端,目前这部分代码已测试完毕并提交的Discuz!NT产品中,会跟随最新的源码包一并发布。本文主要是介绍一下产品中引入LLServer的架构思路。在Discuz!NT的企业版产品中,使用了Memcached,Redis这两个软件来提供分布式缓存服务(两者任选其一)。现有又有了LLServer,它不仅提供了KEY/VALUE缓存,还包括持久化存储部分。这样,用户可以有更多大的选择余地。下面是Discuz!NT的企业版分布式缓存中一个架构图:阅读全文
posted @ 2011-08-26 11:13 代震军 阅读(6479) | 评论 (17) 编辑
 
摘要: 在之前的Discuz!NT缓存的架构方案中,曾说过Discuz!NT采用了两级缓存方式,即本地缓存+memcached方式。在近半年多的实际运行环境下,该方案经受住了检验。现在为了提供多样式的解决方案,我在企业版里引入了Redis这个目前炙手可热的缓存架构产品,即将memcached 与Redis作为可选插件方式来提供了最终用户,尽管目前测试的结果两者的差异不是很大(毫秒级),但我想多一种选择对用户来说也是好的。阅读全文
posted @ 2011-02-21 10:51 代震军 阅读(14897) | 评论 (21) 编辑
 
摘要: 在Discuz!NT的企业版设计过程中,处理大数据表一直是一个让人头疼的问题,特别是像主题表(topic),用户表(user)等,因为对于一个流量和发帖量都很大的论坛而言,在运行几年之后,这两个表的数据量可能会破千万(注:因为帖子表采用分表机制,所以这里暂未涉及,但出于性能考虑,也提供了本文中类似的解决方案)。当时考虑的架构设计中有两种思路来解决这种问题:阅读全文
posted @ 2010-07-22 11:47 代震军 阅读(12937) | 评论 (17) 编辑
 
摘要: 在前文中,介绍了Discuz!NT引入SPHINX的背景和相应的客户端的C#代码架构实现。今天这篇文章将会介绍如果在LINUX环境下安装配置SPHINX中文搜索工具,也就是服务器配置方案. 目前在网络上可以找到的SPHINX中文插件主要有两个: 1.coreseek: http://www.coreseek.cn/ 2.sfc: http://code.google.com/p/sphinx-for-chinese/ 其中的coreseek是目前对Discuz(PHP版)支持做的比较好的插件,它提供了相应的工具和源码包来尽可能简化sphinx的安装和配置。大家可从网上找到很多相关信息。 阅读全文
posted @ 2010-06-30 08:43 代震军 阅读(5471) | 评论 (8) 编辑
 
摘要: 作为Discuz!NT企业版中的一员,在设计企业级搜索架构之初,就考虑了海量数量,准实时索引更新,并发访问,安装布署等诸多方面。目前在生产环境下被广泛使用的开源搜索引擎中,sphinx以其强大快速的索引功能,优异的并发响应性能,方面灵活的布署,分布式查询等诸多因素而倍受青睐。 目前Sphinx广泛应用在Linux平台上,尽管官方所发布的产品中也有window版本,并且支持mssql数据库,但在使用过程中才发现,其只在发布的windows平台下的版本里才支持mssql数据库,而linux平台下只有MySql,PostgreSQL这两种数据库支持。尽管后来在网上查找资料时发现可以使用UNIXODBC方式在LINUX下链接MsSql数据库,但在unixodbc的官方网站下载的源码包中却发现其并不包含 makefile文件,从而导致下载解压的源码包无法编译(看来unixodbc开发者也疏忽了),当然即使ODBC能链接成功,但效率上还是可能存在问题。 阅读全文
posted @ 2010-06-28 09:12 代震军 阅读(6176) | 评论 (22) 编辑
 
摘要: 在前面的几篇文章中,主要谈到了在Discuz!NT中的跨站缓存数据,数据库负载均衡。但如果要实现将产品分布式布置到若干机器,组成集群来共同支撑起整个业务的话,还是有一定问题的(后面会有所介绍)。下面先介绍一下如何使用 Discuz!NT负载均衡方案搭建分布式应用。 Discuz!NT前端负载均衡是基于nginx实现的,下面是它的一些简介: 阅读全文
posted @ 2010-06-24 09:45 代震军 阅读(9540) | 评论 (32) 编辑
 
摘要: 目前在Discuz!NT这个产品中,数据库作为数据持久化工具,必定在并发访问频繁且负载压力较大的情况下成 为系统性能的‘瓶颈’。即使使用本地缓存等方式来解决频繁访问数据库的问题,但仍旧会有大量的并发请求要访 问动态数据,虽然 SQL2005及2008以上版本中性能不断提升,查询计划和存储过程运行得越来越高效,但最终还是 要面临‘瓶颈’这一问 题。当然这也是许多大型网站不断研究探索各式各样的方案来有效降低数据访问负荷的原 因, 其中的‘读写分离’方案就是一种被广泛采用的方案。 Discuz!NT这个产品在其企业版中提供了对‘读写分离’机制的支持,使对CPU及内存消耗严重的操作(CUD)被 分离到一台或几台性能很高的机器上,而将频繁读取的操作(select)放到几台配置较低的机器上,然后通过‘事务 发布订阅机制’,实现了在多个sqlserver数据库之间快速高效同步数据,从而达到了将‘读写请求’按实际负载 情况进行均衡分布的效果。阅读全文
posted @ 2010-06-21 14:31 代震军 阅读(12418) | 评论 (47) 编辑
 
摘要: 在之前的文章中,提到了在Discuz!NT中进行缓存分层的概念。之前在产品中也实现了其中的构想,但该方案有一个问题,就是如果将产品进行分布式布署之后,如果某一站点发生数据变化时,只能更新本地缓存和Memcached缓存信息,而其它分布式布署的站点则无法收到缓存数据已修改的‘通知’,导致数据不同步而成为‘脏数据’。 虽然在之前的文章中提到通过将本地缓存失效时间‘缩短’(比如15秒后即失效),以便在相对较短的时间内让本地数据失效从而再次从Memcached读取最新的数据,但这必定不符合我们设计的基本思路,并且导致程序的运行效率低,同时会造成过于频繁的访问Memcached,无形中增加了与 Memcached的socket开销。所以才有了今天的这篇文章。阅读全文
posted @ 2010-06-18 08:40 代震军 阅读(6853) | 评论 (6) 编辑
 
摘要: 在Discuz!NT的最新版本中,支持目前主流LINUX平台上的负载均衡解决方案,比如NGINX,HAPROXY,LVS等。本文与其说是解决方案,倒不如说是介绍如何搭建Discuz!NT负载均衡解决方案:) 因为我们的产品运行的主流平台是WINDOWS+IIS+SQLSERVER(2000以上版本),而LVS+KEEPALIVED是LINUX下的四层负载均衡软件。其有如下特点:LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率(在DR模式下),将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,LVS集群采用三层结构,其主要组成部分为: 阅读全文
posted @ 2010-06-13 14:15 代震军 阅读(10812) | 评论 (11) 编辑
 
摘要: 在目前最新版本的产品中,我们提供了缓存静态文件的解决方案,就是使用SQUID做静态前端,将论坛中的大部分静态文件布署或外链到一个新的HTTP链接上,其中可以外链的静态文件包括: 1.Discuz.web/Javascript/ 下所有以‘template_’打头的JS文件以及该文件夹下的部分js文件。 2.模版文件夹下的所有CSS或IMAGE文件(空间相册文件夹除外) 3.前台Image文件夹下的Medal(勋章),Topicidentify(主题鉴定图标)下的所有文件。阅读全文
posted @ 2010-06-10 12:43 代震军 阅读(7328) | 评论 (21) 编辑
 
摘要: 目前在网上关于TokyoCabinet(以下简称TC)和TokyoTyrant(以下简称TT)的资料已相对丰富了,但在.NET平台上的客户端软件却相对匮乏,因为做Discuz!NT企业版的关系,两个月前开始接触TC和TT,开始写相关的客户端代码。这里开放的是客户端主要功能代码,开源的目的一方面是希望更多的人来学习研究TC和TT,同时大家可以下载本C#源码继续优化提升性能,同时查找BUG,必定本人精力能力有限,而Discuz!NT企业版的功能点又太多(抽空会多写文章进行介绍)实在有些力不从心了,呵呵:) 好了,为了便于使用,下面先对源码中的项目文件进行说明:阅读全文
posted @ 2010-06-08 12:59 代震军 阅读(6258) | 评论 (32) 编辑
 
摘要: 在以前的两篇文章(Discuz!NT 缓存设计简析, Discuz!NT中集成Memcached分布式缓存)中,介绍了Discuz!NT中的缓存设计思路以及如何引入Memcached,当然前者是IIS进程的缓存(本地缓存),后者是分布式内存对象缓存系统。两者通过Discuz!NT中的memcached.config文件中的ApplyMemCached结点的值来决定使用哪一种缓存方式。不过在之后,有朋友反映当使用Memcached时,特别是在大并发来时,效率会打折扣,甚至有很多时间会消耗在socket套接字(创建和传输方面)上。而事实上也的确如此,尽管Memcached在使用池化的方式初始化一定数量的套接字资源(之前测试时实始化为128个链接),在小并发(100左右)时,可能问题不大,但并发上了1000-2000时,其效率要比本地化缓存机制低1/3(loadrunner测试场景),比如loadrunner测试1000并发时,如果showtopic(显示主题),本地缓存处理时间为15秒,而使用memcached可能会达到25-35秒。 阅读全文
posted @ 2009-11-17 11:41 代震军 阅读(11047) | 评论 (39) 编辑
 
摘要: 在之前的两篇文章中,基本上介绍了如何录制脚本和生成并发用户,同时还对测试报告中的几个图表做了简单的说明。今天这篇文章做为这个系列的最后一篇,将会介绍如何通过测试报告来查看系统的运行情况,找出影响性能的因素,以及如何去进行优化。首先,看一下这张并发用户的图: 阅读全文
posted @ 2009-09-27 16:37 代震军 阅读(4875) | 评论 (22) 编辑
 
摘要: 在上文中,介绍了如果录制脚本和设置脚本执行次数。如果经过调试脚本能够正常工作的话,就可以设置并发用户数并进行压力测试了。 首先我们通过脚本编辑界面上的“工具”菜单项,选择该菜单的第二项“Create Controller Scenario(创建控制场景)”,这时,lr会弹出一个窗口,我们只要在select scenario type项中的number of vusers设置成1000,这样我们就可以用1000并发用户来测试我们上文中所执行的操作了,如下图: 阅读全文
posted @ 2009-09-27 11:54 代震军 阅读(5364) | 评论 (17) 编辑
 
摘要: DiscuzNT3正式版发布已经有一段时间了,最近半年多来很少再写关于这个产品的技术文章了,一是时间,二是精力有限。不过在正式版发表之后,倒是有了些功夫,同时我们的一个商业客户在从2.6版本升级到3.0正式版之后,出了一个小插曲,导致不得不退回到2.6版本。因为这个客户的论坛访问量和发帖量比较大,平时在线人数5000,日发帖量在2-3万左右。所以出了一些性能上的问题,在大并发情况下,服务器响应超时,且在峰值时越发不稳定。之前我在公司内部用了tinyget做了一些简单的压力测试,发现了一些问题,但原因尚不明显,所以在公司会议上就有人提出使用loadruner来做一下压力测试,看看3.0产品的性能倒底如何,是什么造成用户的服务器不稳定。所以就有了今天的这篇文章。阅读全文
posted @ 2009-09-25 12:45 代震军 阅读(9831) | 评论 (33) 编辑
 
摘要: 在去年我曾写过一篇文章:“推荐一个Silverlight多文件(大文件)上传的开源项目”。之后有不少朋友询问这个项目示例在开发和配置上的一些问题。当时因为时间有限没有做过多的说明,导致有些问题在大家下载完源码之后运行时才出现。今天就以这个项目为原型,简要介绍一下在DiscuzNT上是如果在该项目基本上,通过完善权限管理,文件大小控制,添加缩略图效果等功能来大体阐述一下如果开发一个真正的silverlight应用,而不是一个简单的DEMO. 阅读全文
posted @ 2009-04-08 08:37 代震军 阅读(8181) | 评论 (29) 编辑
 
摘要: 大约在两年前我写过一篇关于Discuz!NT缓存架构的文章,在那篇文章的结尾介绍了在IIS中如果开启多个应用程序池会造成多个缓存实例之间数据同步的问题。虽然给出了一个解决方案,但无形中却把压力转移到了磁盘I/O上(多个进程并发访问cache.config文件)。其实从那时起我就开始关注有什么更好的方案,当然今天本文中所说的Memcached,以及Velocity等这类的分布式缓存方案之前都考虑过,但一直未能决定该使用那个。起码Velocity要在.net 4.0之后才会提供,虽然是原生态,但有些远水解不了近火。阅读全文
posted @ 2009-03-23 09:13 代震军 阅读(15596) | 评论 (63) 编辑
 
摘要:   在商品交易过程中,信用机制的引入是至关重要的,我们在这里参考的是discuz(php)的做法(其实它最终是采用类似TAOBAO的好评机制来实现的)。所以在每笔交易结束时,都会要求买卖双方进行互评,以便为信用机制提供数据。而这里所使用的信用等级信息是参考discuz的数据进行相应级别设置的,其“信用等级”表 (dnt_goodscreditrules)结构参见下图所示:阅读全文
posted @ 2008-09-16 09:01 代震军 阅读(2870) | 评论 (15) 编辑
 
摘要: 在上一篇中, 我们了解了为提供支付宝在线支付功能,所需要的一些助手(helper)类, 在本文中,我们将会以一个线上支付流程来进一步介绍业务设计上的一些内容和思想。在之前的线下支付流程中,我们看到交易是靠买卖双方不断更新本地的交易状态来进行推动的。而线上支付这个过程的推动主要靠支付宝那面的操作来完成,而本地服务器只是提供了交易信息并进行跳转(到支付宝)。并接受支付宝回传过来的交易信息,来更新本地数据库中的交易状态并发送站内消息给买家或者卖家。了解了上面的信息之后,我们通过一个简单的例子来加以说明,同时按“老规矩”,在介绍过程中穿插对源代码的讲解。阅读全文
posted @ 2008-09-08 11:21 代震军 阅读(2419) | 评论 (8) 编辑
 
摘要: 在上一篇文章中,介绍了商品交易线下交易流程,这一篇则重点介绍一下线上支付宝交易流程。在开始今天的正文之前,有必要介绍一下关于支付宝交易信息通知的一些内容,因为我们的商品交易插件使用了其中的一种通知方式。在支付宝系统中,当交易发生时,根据系统的“处理方式”分为两类:阅读全文
posted @ 2008-08-25 09:27 代震军 阅读(4111) | 评论 (6) 编辑
 
摘要: 在上一篇文章中,大略说明了一个商品的添加编辑和删除操作。本文会继承其支付流程来展示如何购买商品以及系统设计。首先打开一个有效的商品,在商品显示页面中单击“立刻购买”按钮,如下:阅读全文
posted @ 2008-08-19 09:07 代震军 阅读(2931) | 评论 (20) 编辑
 
摘要: 在上一篇文章中,大略说明了一个商品交易插件的一些功能上的东西和具体的文件分布。本文章将会以上文中的“管理商品”用例来说明一下商品的添加,编辑和删除方面的设计。首先看一下商品添加功能。我们打开一个商品添加页面如下:阅读全文
posted @ 2008-08-12 08:57 代震军 阅读(3138) | 评论 (13) 编辑
 
摘要: 在今年年初,本人接受了商品交易插件设计和开发任务。在开始的那段时间里,主要是开发一系列商品交易的基本功能,包括:商品管理(CUD),在线交易,商品分类管理,定单(交易单)管理等。如下面的图中所示(普通权限用户):阅读全文
posted @ 2008-08-04 10:25 代震军 阅读(4235) | 评论 (21) 编辑
 
摘要: 大约在去年的12月份,我们开始着手设计和开发这项功能,而该项功能主要是解决类似于一些帖子附件(图片或文件)访问比较频繁,同时附件的体积又比较大,从而造成对主站服务器访问压力过大的问题。而实现了该项功能之后,在一些合作伙伴的站点上使用了一段时间,发现该功能明显的降低了主站服务器的负载,使其可以节省更多的资源(cpu,内存等) 用于处理用户的其它访问请求。 阅读全文
posted @ 2008-07-28 14:12 代震军 阅读(6090) | 评论 (38) 编辑
 
摘要: 在上文(Discuz!NT URL地址重写) 中, 聊到了“在线用户”功能,因为当时介绍的重点不是“在线”那一块,所以没做深入介绍。这就为今天这篇文章埋下了“伏笔”。因为在线这个功能太重要了,大家不妨用VS打开我们产品的最新源码,然后搜索一下“OnlineUsers.”这个内容就会看到它在产品中被使用的“频率”。 
好了,言归正传,下面就开始接着上一篇文章中所说的“OnlineUsers.ResetOnlineList();” 方法介绍 
一下用户在线功能。阅读全文
posted @ 2008-01-21 18:43 代震军 阅读(7276) | 评论 (45) 编辑
 
摘要: 在Discuz!NT中的前台页面访问(特别是aspx)是被HttpModule接管的,所以大家在Discuz.Web项目的目录下看到的唯一"aspx文件"是index.aspx,而所有其它前台页面都有“/aspx/”文件夹下的相应的子目录中,而这些子目录名称是与后台所“生成”的模板存在对应关系的。而这种“关系”的绑定是通过dnt_templates(模板数据表)来进行关联的。而有关模板机制的文章详见: 
“Discuz!NT 模板机制分析”一文。 

阅读全文
posted @ 2008-01-14 09:41 代震军 阅读(12825) | 评论 (45) 编辑
 
摘要: 根据目前官方提供的数据字典(详情见链接)。可以看出数据库中的数据结构:包括表名,字段名,字段类型,含义等。通过这些文档可以让大家对整个数据的表结构有一个基本了解。另外本人觉得,如果用一篇文章去讲解数据库,让人多少有些凑字的嫌疑。所幸目前还有 Discuz.Entity.dll这个项目没有介绍,所以想以这个 dll为主线,“搂草打兔子”,顺便简要介绍一下数据库。因为我们的实体类代码是以数据表为导向( entity大部分类都是与数据库表有着对应关系)。比如:
ForumInfo(版块),TopicInfo(主题), PostInfo(帖子),AttachmentInfo(附件)等等。阅读全文
posted @ 2008-01-07 12:47 代震军 阅读(6281) | 评论 (56) 编辑
 
摘要: 声明:本文内容纯属个人观点,官方保留最终解释 
通过前几个月的“外围清剿”,我介绍了一些在项目中边边角角的类和项目。当然这种介绍只是前期热身准备。因为从这篇文章开始,本人将跟大家聊一聊关于这个产品架构上面的东西,以备大家对这个产品有一个总体上的认识,从而为后面的文章做一下铺垫。费话少说,开始正文吧:) 首先请大家看一下官方提供的“前台页面层次图”如下: http://nt.discuz.net/doc/Default.aspx?cid=4 

阅读全文
posted @ 2008-01-02 18:00 代震军 阅读(13359) | 评论 (94) 编辑
 
摘要: 望DUDU见谅,暂放首页一天,呵呵:) 
就在昨天(2007.12.24), 公司的discuz!nt 2.0 正式版终于开源了,下面就是链接(开源页面): http://www.discuznt.com/opensource.html阅读全文
posted @ 2007-12-25 12:54 代震军 阅读(10084) | 评论 (136) 编辑
 
摘要: 作为产品中的一大特色,模板机制一经推出,就引来了大家特别是站长们的关注。但它所饱受的风风雨雨也成了那时不少人关注的话题。而今天本人将结合在产品组中的开发经历,介绍一下模板机制在设计使用时的一些体会心得。希望借此陋文,使模板机制揭开“神秘”面纱,为大家在实际设计中提供一些有价值的参考和建议。 
好了,开始今天的话题:) 
阅读全文
posted @ 2007-12-17 18:32 代震军 阅读(18929) | 评论 (88) 编辑
 
摘要: 如果大家从官方下载2.0正式版的DLL程序集中会从里面找到discuz.config这个DLL文件。通过reflector 反射加载这个程序集后,后从中找到一些从类名称上非常相似且有一定规律(格式)的类。它们是: 
全局配置类 

阅读全文
posted @ 2007-12-10 18:55 代震军 阅读(11794) | 评论 (59) 编辑
 
摘要: 其实这个控件的核心基本都在JS上,而相关的数据绑定和显示却非常简单。而需要说明的是在Discuz!NT的1.0和2.0正式版,这个控件做过一些调整,当然改动也基本上是在JS上,今天给大家的源码是1.0正式版的代码,虽然有些“旧”,但程序本身的思想没变,大家只要明白了这里的源码,有了这碗酒垫底,相信再看即将开源的2.0代码,就会一目了然了。好了,废话到此,马上开始今天的话题! 
阅读全文
posted @ 2007-12-04 12:29 代震军 阅读(5715) | 评论 (21) 编辑
 
摘要: 自从 9月未开始写关于"ICONIX方法"的系列文章以来,到今天已有两个多月了,当初因为兴趣点的转移才划一段落的Discuz!NT 系列文章,从今天开始又要开始续写了。这写这个系列以来,大家对我写的内容也是包贬不一,其实这也是众口难调所致,我会在接下来的几篇随笔中尽力顾及大家的感受和阅读口味。最后还是希望大家能支持我和我们的这个开源项目。好了,开始今天的话题! 先请大家看一下这个控件运行时的效果图: 

阅读全文
posted @ 2007-11-27 12:00 代震军 阅读(4999) | 评论 (26) 编辑
 
摘要: 在7月份中我曾经写过一篇文章,叫".NET2.0 框架中的 AbstractFactory 模式 " 链接如下:http://www.cnblogs.com/daizhj/archive/2007/07/23/828249.html 
里面主要说了在2.0框架下的数据库链接工厂中新增的几个类,而这几个类采用的就是 抽象类工厂模式 (Abstract Factory)。因为在Discuz!NT 2。0中使用了这些新的类,所以导致我们的产品dbhelper.cs可以支持几种数据库(目前官方实现的有sqlserver ,access ,mysql)。但同时因为1。0框架下没有这些类,所以我们采用自已简单实现其中主要的类代码来解决这个问题。这就有了今天文章的内容!阅读全文
posted @ 2007-09-24 09:39 代震军 阅读(8960) | 评论 (32) 编辑
 
摘要: 设计前提:早在RC1之前聚合功能还比较弱化时,系统结构比较简单,只用了一个website页面就聚集了大部分的功能调用。因为快速完成之后陆续又加入了不少新特性,导致类的名称(website) 与所聚合提供的功能已完全不相符 (代码已过度膨胀) ,所以重构的任务已变得非常紧迫了。但用什么方式,因为系统聚合时是按内容类型聚合功能页面并决定显示方式的。而这里的内容类型在大概可分为(论坛主题,相册,图片,空间文章(及最新回复)等)。为了尽量简化系统设计时的复杂度,这里只按内容所属的大类(论坛,空间,相册, 图片)来进行简单的初步规划,这就产生出来上面图片所说的类AggregationData,SpaceAggregationData, 
AlbumAggregationData.cs,ForumAggregationData.cs ......阅读全文
posted @ 2007-09-18 11:57 代震军 阅读(7412) | 评论 (37) 编辑
 
摘要: 继上篇文章之后(链接),大家给了一些反馈和意见,有些BUG和不当之处我已修正,将会在2.0正式版本中提供给大家。希望大家能继续支持我们这个开源项目。 

好了,开始今天的话题,首先需要说明的是因为这两个控件都比较简单所以放在一起给大家说一下。 

先说一下 ColorPicker 控件 ,贴一张运行效果图让大家看一下: 
阅读全文
posted @ 2007-09-07 18:17 代震军 阅读(5881) | 评论 (46) 编辑
 
摘要: 大约还是去年12月份,当时项目中遇到了一个很棘手的问题,就是管理员(或站长)在后台设置了邮箱信息之后,使用注册邮件发送激活验证码时,总有用户反映不能收到激活信息的邮件。 
虽然不能收到邮件的情况有很多,甚至我已通过这个邮件发送程序测试过国内大多数知名网站的邮箱(如126,sina ,sohu ,gmail等),但还是有站长或用户隔三差五反映这个问题。甚至到今天我偶尔还会得到技术支持部门有关这方面问题的报怨。因此,今天这篇文章虽然说到了一个有关这个问题的解决方案(但不完善),但还是希望园子里以前处理过这方面问题或有成功经验的朋友指点一二。 

好了,不费话了,开始今天的话题。 

阅读全文
posted @ 2007-09-03 11:52 代震军 阅读(6484) | 评论 (39) 编辑
 
摘要: 继上篇文章之后(链接),大家给了一些反馈和意见,有些我已动手进行了部分修改,将会在2.0版本中提供给大家。希望大家能继续支持我们这个开源项目。 

好了,开始今天的话题,今天就说一下 Tab 控件。 

先贴一张运行效果图让大家看一下: 

阅读全文
posted @ 2007-08-22 09:24 代震军 阅读(6706) | 评论 (50) 编辑
 
摘要: 作为一个社区类型软件,大并发支持和高效稳定运行永远是“硬道理”,而有效安全的使用缓存恰恰能起到事倍功半的效果。而.NET本身所提供的缓存机制又显得过于“单薄”,比如说订制不太灵活方便, 缓存对象之间层次感不强, 使用时缺乏统一的管理等等。 

Discuz!NT缓存产生背景: 
在去年五月份我加入Discuz!NT项目组时,发现这个项目当时还未使用缓存机制。主要原因是项目还处于起步阶段,很多东西还只是有想法,但未付诸实施,或还没找到合适的方案, 而缓存就是其中一个到底该不该使用,如果使用的该到底能多大程度缓解数据库压力以及开发成本的东西。 
阅读全文
posted @ 2007-08-15 09:13 代震军 阅读(25403) | 评论 (164) 编辑
 
摘要: Discuz!NT在开源之后,还没什么文章来说明 Discuz!NT项目的一些特点。作为这个控件库的设 
计者,本人将在接下来的时间里用连载的方式来向大家解释其中一些控件的设计思想,实现功能以及 
一些未曾使用过的功能展示(因为管理后台只使用控件的部分功能)。同时因为这组控件开发的周期 
很短(当时仅用一个半月,后不断增强功能),有不少思路和控件设计的规范相驳,但当时只考虑为 
后台程序开发和订制方便,因此就暂且开发成了这个样子,但本人日后会不断完善和规范这些代码:)阅读全文
原文地址:https://www.cnblogs.com/zzw1986/p/4842526.html