- 博客(53)
- 资源 (10)
- 收藏
- 关注
原创 Lucene分布式构想
当数据量越来越大时,就必须要考虑分布式方案了,网上关于c#上的lucene分布式方案目前基本上还没有, 我在分布式索引和检索的设想如下: 索引 类似于数据库的分区表,我们也可建立分区节点,如将ID为1-1000000 放到 节点1 上将1000001-2000000 放到 节点2 上,以至类推可以很容易进行扩展,由主程序根据id往各节点进行写入.如果要均衡的
2010-05-07 09:51:00
1975
原创 一些说明
构建了一个VLDB系统, 采用SQLServer2005存储主记录数据,硬盘存储内容数据,Lucene进行检索, 主记录数据目前采用按时间的分区表方案, Lucene目前采用的是按时间进行分离存储,计划采用分布式方案。
2010-05-07 09:45:00
454
原创 Red5中的调用与回调
在red5中,服务端Application类需要实现IApplication接口,默认的做法是继承ApplicationAdapter,ApplicationAdapter实现了很多接口,它提供一些典型的代码,使我们只需要重写关注的方法, 客户端 -> 服务端调用 客户端由NetConnection的实例发起调用,定义如下:public function call(comm
2009-09-22 19:51:00
897
原创 长城Portal社区开源版发布
长城Portal特点如下:页面自定义页面模块所见即所得调整全静态化支持布局模板支持主题支持内置CMS系统易于二次开发项目地址: http://www.cchensoft.com/opensource/cc-portal/svn:http://code.google.com/p/cc-portal2/
2009-05-11 18:01:00
607
原创 在IIS环境之外运行ASPNET程序
有时候,我们需要在IIS环境之外运行ASPNET程序,如向用户提供ASPNET的程序(别指望用户都安装了IIS),在WinForm程序中提供WebService接口(这种场合比较少,但我恰好遇到了,实际就是在C/S的基础上加入了WebService)。 解决方案很简单,在Visual Studio里自带了一个Web服务器程序,此程序是WebHost.dll的一个UI外壳,有了WebHo
2009-05-04 14:48:00
850
1
转载 由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题
以前用VC6和VS2003的话, 如果缺少库文件,是会提示缺少“**.dll”,但是用VS2005却没有这样的提示。 自己实验了一下,感觉以下几种解决办法是可行的:方法一:在类似C:/Program Files/Microsoft Visual Studio 8/VC/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT 下找到了下列文件:
2008-12-03 20:00:00
3441
原创 .Net Remoting应用中的回调(callback)
在c/s应用中,有时需要从服务端回调客户端的程序,在.Net下,通过事件委托机制可以很简单的进行实现, 因为服务端需要调用客户端程序,它必须知道客户端程序的存根(即类定义),但我们应该对程序逻辑实现进行隔离,即服务端不应该包括客户端具体的实现代码,在这个前提下,我们引入了一个ServiceAdapter类,定义如下: public class Service
2008-11-26 16:14:00
1604
原创 开源应用框架 ccWebFx 1.3 发布
在v1.3版本中,我们做了几个很大的调整:1. 组件的配置描述进行了统一 组件统一采用bean描述进行定义;2. 新增了组件依赖注入功能 在配置中可定义依赖组件描述,由系统注入依赖组件; 3. 新增了一个数据访问服务IDataService 可根据需要实现不同的数据访问服务,如ADO.NET,IBatisNet和NHibernate等; 4. 新增了一个注
2008-11-26 15:56:00
640
原创 使用IBatisNet对NText类型的字段插入超长文本
使用IBatisNet当对NText类型的字段插入超长的文本时,报错误"当前命令发生了严重错误。应放弃任何可能产生的结果"查了一下资料,当使用命名参数式sql语句时,对于NText类型的参数,如指定length,则可避免上面的问题,但IBatisNet的resultMap的property里只有dbType而没有length,不知为何不提供? NHibernate里就有类似length
2008-10-11 22:25:00
1317
原创 ccWorkflow 开源工作流发布
DotNet下的工作流量引擎,基于OSWorkflow 进行重构和扩展,增加了与业务模型交互的接口。下载地址: http://code.google.com/p/cc-workflow/ 后面我将陆续写一些关于此工作流原理和应用的文章。
2008-10-09 18:17:00
1663
1
原创 NHibernate 2.x应用: 返回DataSet
虽然NHibernate是完全OO的,但我们还是有需要返回DataSet的时候。在ADO.NET里,要返回DataSet需要使用IDbDataAdapter, 那么通过NHibernate返回DataSet的关键就是如何创建合适的IDbDataAdapter实现类。在NHibernate里,由IDriver负责创建Connection和Command,我们可以扩展相应的Driver使其能创
2008-10-08 18:20:00
1889
1
原创 NHiberante源码分析之: 事务
对数据库的操作是少不了事务处理的,事务能保整数据完整性和有效性。 在nh中,使用Transaction对象对.net的事务对象(实现了IDbTransaction接口的对象)进行了包装。在nh中,一个典型的事务处理是这样的(见ISession.cs的注释)ISession sess = factory.OpenSession();Transaction tx;try { tx = sess.B
2008-10-07 14:17:00
1062
原创 NHibernate 架构UML图
从图中可以看到,Session和SessionFactory是NHibernate的核心部分。SessionFactory维护到持久机制(数据库)的连接并对它们进行管理,同时还保存着所有持久对象的映射信息。SessionFactory由Configuration.BuildSessionFactory创建,这个对象一般使用Singleton模式。Session用于将对象持久化,支持数据库事务,
2008-10-07 13:56:00
3736
原创 NHibernate应用 many-to-many
在数据库的多对多关系中, 实现方法是通过一个额外的关联表将两个主表关联起来,关联表中只保存两个主表的主健,显然, 主表与关联表是一对多的关系. 这样两个主表就通过这个关联表构成了一个多对多的关系. 典型的例子就是用户和权限了, 每个用户可以有多个权限, 而每个权限也可以分配给多个用户. 通过一个用户权限表就可以实现这样的要求.因为关联表并没有其它任何信息, 所以在NH中它不能算是一个持久对象, 没
2008-10-07 13:55:00
1429
原创 NHibernate应用 one-to-one
nh中的one-to-one(一对一)映射有两种情况, 一种是主键(PrimaryKey)关联, 一种是外健(ForeignKey)关联. 在主键关联的情况下, 显然必须有一个主键是根据别一个主键而来的, nh通过一个特殊的方式来处理这种情况, 要注意的是两个主健名称必须同名.而外健一对一关联, 需要在one-to-one配置中定义一个property-ref属性, 这个配置属性在当前版本的nh中
2008-10-07 13:54:00
2204
1
原创 NHibernate应用 one-to-many
数据库中的主从表就是一对多的关系了,这种关系在按范式设计的数据库中是十分常见的.在nh中,通过one-to-many映射可以十分方便的处理这种关系,包括级联更新,删除等. 下面以一个简单的主从表来说明one-to-many的应用.先来看看Parent类的映射信息: one-to-many关系必须通过一个nh的集合类型来定义,
2008-10-07 13:44:00
1558
原创 NHibernate dotNet2.0的一个web demo
三层结构设计, web层使用了三种方式进行数据展示,1. GridView2. Repeater + DataBinder3. Repeater + ItemDataBound事件 下载地址: http://www.cchensoft.com/down/NHibernateDemo2005v0.1.zip
2008-09-11 11:01:00
1536
2
原创 IronPython脚本程序与宿主语言的交互
随着web2.0和敏捷开发方法论的兴起,动态语言的灵活高效的特性成为了它被更多项目选择和使用的理由。一些大型网站已开始使用动态语言来实现。微软更是不甘落后,建立了dlr(动态语言运行时)来吸引动态语言爱好者在其上实现动态语言。ironpython就是其主要成员之一。// 定义一个业务对象class businessobject { private string oneproperty;
2008-09-05 17:41:00
694
原创 将ibatis.net中定义的statement转换为实际的sql语句
有时我们需要查看ibatisnet中statement生成的实际sql语句,可以通过下面的方式取得:public static string GetSql(string statementName, object paramObject){ ISqlMapper mapper = Mapper.Instance(); IMappedStatement
2008-09-04 15:05:00
1070
1
原创 IBatis/IBatis.Net中的数据加密
作为一个o/r mapping组件,IBatis通过反射(Reflect)完成对象的持久化,如果要对数据进行加密,那么切入点就在reflect上,思路就是当IBatis通过Reflect给对象属性赋值时,我们解密数据,反之加密数据。那么如何切入了?先跟踪源代码看看 :)如何跟踪源代码这里就不繁述了,这里列出几个重要的对象/接口:1. DotNetObjectDataExcha
2008-09-04 14:56:00
1327
原创 开源Web框架cc-WebFx发布
cc-WebFx是一个简单的AOP框架,它的目标就是在尽量不改变原有系统结构的情况下,为应用程序加入统一的安全,日志,事务等方面的处理功能,为实现这一目标,Framework采用动态代理和自定义Attribute来设计。通过Proxy机制,可以在正常处理流程前进行拦截,并加入相应的功能代码,在cc-WebFx中,定义了两个拦截点,一个是在执行WebForm请求处,另一个是在调用业务逻辑功
2008-03-05 10:17:00
1034
原创 IBatisNet for dotNet2.0的一个web demo
三层结构设计,web层使用了三种方式进行数据展示,1. GridView2. Repeater + DataBinder3. Repeater + ItemDataBound事件下载地址: http://www.cchensoft.com/down/IBatisDemo2005v0.1.zip
2007-08-16 18:40:00
1875
1
原创 springnet实例框架0.1版发布
springnet实例框架0.1版发布,这是一个基于springnet的文章管理案例,同时征集实例框架的最终名称!已完成功能:1. 集成spring.data.nhibernate;2. 集成spring mvc;3. skin支持;4. usercontrol属性配置化;待完成功能:1. 集成ibatisnet;2. 页面usercontrol动态设置;如想加入开发组,请加入q
2006-12-15 12:25:00
1370
原创 Lucene中文分词组件
LuceneNet的中文分词组件 示例代码如下: public static void Main(string[] args) { StreamReader reader = new StreamReader( "E://projects//Segment//test//a.txt", Encoding.GetEncodi
2006-11-21 17:28:00
1427
原创 FlexWiki中文支持
Title Summary FlexWiki的Topic采用Pascal单词形式,对中文的Topic无法自动进行处理,我对其进行了一些扩展以支持中文主题,一. 在什么地方切入到FlexWiki的格式化处理中?FlexWiki的设计并没有提供很好的扩展点,为了避免对原有的格式处理造成影响,采用在其对Topic内容格式化完成后进行切入, string formattedBod
2006-11-17 12:46:00
2819
1
原创 使用Gentle做数据层的业务层源码
一个小型web网站的业务层源码,使用Gentle(一个开源的O/R Mapping框架)做为数据持久层。这个业务层使用VB.net编写,涉及的业务对象比较少,功能也很简单,主要是给想使用O/R Mappingg进行开发的朋友一些参考。下载(367K)
2004-10-21 16:53:00
2199
3
原创 Gentle架构UML图
本文已转至如下地址:http://www.narchitecture.net/Article/ArticleDetails.aspx?id=wkoudu
2004-10-18 11:22:00
2033
1
原创 NHibernate源码分析之三(续):数据持久化
当持久化对象时,显然必须存在把记录的值赋值到对象属性和取得对象属性的值用于持久化操作,对于更新操作,还需要检查对象的值是否已发生变化,即是否为Dirty,这些操作都是由对象的持久化类来完成的。有关持久化类可参考《会话和持久化操作》一文。下面对NH的源码进行分析,以了解NH中数据加载和更新的过程。一、持久对象加载先来想像一下对象的加载过程(Load).1. 根据对象Id从数据库取得记录;2. 使用默
2004-10-18 11:18:00
3498
原创 nhibernate源码分析之八: 解析HQL
本文将对HQL查询文本的解析过程进行分析,这个可以说是NH中比较复杂的一块了(个人认为),涉及到的类也比较多。建议阅读之前先深呼吸十下,看完之后脑袋成浆糊可不要找我哟。:-)在HQL数据加载一文中,我们有提到QueryTranslator的创建过程,代码如下://*** SessionFactoryImpl.cs 429行 *** private QueryTranslator GetQ
2004-09-25 12:44:00
2934
1
原创 nhibernate源码分析之七: HQL数据加载
NH中,HQL是一个十分强大的面向对象的查询语言,简单的说,就是不需要使用实际的表名和列名来查询数据,而改用类名和属性。有两种方式来执行HQL数据加载,一种是直接使用ISession的Find方法,另一种是使用IQuery接口。IQuery接口提供了一些额外的设置,最重要的就是分页了,这个和ICriteria差不多,另外一些就是设置参数的值了。IQuery最终还是会调用ISession的
2004-09-23 17:08:00
2897
1
原创 nhibernate源码分析之六: Criteria数据加载
ICriteria是使用Expression进行数据加载的接口, 提供了设置表达式(Expression), 排序方式(Order), 分页记录等操作.它使用一种类似于SQL语句where表达表的方式来加载满足条件的数据.下面以一个查询Username为billy, Password为test的用户为例来分析nh中Criteria数据加载是怎样工作的.查询代码如下:Expre
2004-09-22 21:17:00
1935
原创 Aspect#的动态截入
代理对象是通过以下代码来进行动态戴入.switch (handlerField.Name) { case mixinHandlerFieldName: { ilGenerator.Emit(OpCodes.Callvirt, typeof(IMixinInvocationHandler).GetMethod("Invoke") ); break; }
2004-09-15 12:51:00
1636
原创 Aspect#应用 - 事务处理
下面以删除产品及其报价做为例子来说明AOP应用中的事务处理, 因数据库访问使用NHibernate, 所以使用NH中的事务.思路如下:在TransactionInterceptor(事务拦截器)中启动事务, 然后执行实现方法, 如果异常就回滚事务.事务拦截器TransactionInterceptor中的Invoke方法代码如下:public class TransactionInterc
2004-09-15 12:50:00
1904
原创 Aspect#应用 - 权限验证
下面以删除产品做为例子来说明Aspect#应用中的权限验证, 此操作请求ProductAccess.Delete权限.思路如下:因为需要传送一些信息到拦截器中, 所以我使用自定义权限属性来解决. 然后在拦截器的方法中调用自定义权限属性的验证方法.自定义权限属性public enum ProductAccess { Create = 1010, Update = 1020, Delete
2004-09-15 12:48:00
1885
1
原创 Aspect#中的代理对象
代理对象是AOP动态截入的关键部分. 下面来分析一下代理对象是如何定义的.1. CreateProxyTypeinternal static Type CreateProxyType(Type[] interfaces, IMixin[] mixins) { //... AssemblyName assemblyName = new AssemblyName(); a
2004-09-07 12:07:00
1848
原创 AspectSharp例子分析
AspectSharp自带的例子提供了一个简单的logger拦截器和一个持久化混合器. 下面来看看它的工作原理.1. 类和接口说明:IMessage: Message对象接口, (要实现aspect的对象必须声明接口?)MessageImpl: 实现IMessage接口;IMessagePersistence: Message对象持久化接口;LoggerInterceptor: 日志拦截器;
2004-09-07 12:06:00
3354
原创 在nhibernate中执行SQL语句和存储过程
在有些时候,可能需要直接执行SQL语句、存储过程等,但nhibernate并没有提供一种让我们执行SQL语句的方法,不过可以通过一些间接的方法来实现。1. IDriver接口IDriver接口就是数据访问的驱动器,对于不同的数据提供者(SqlClient, OleDb等)就有不同的驱动器,与SqlClient对应的是SqlClientDriver, 而与OleDb对应的就是OleDbDriver。
2004-08-12 19:45:00
5255
10
原创 nhibernate源码分析之五: 对象标识
对象标识相当于数据表中的主键,在持久化中起着十分重要的作用,nhibernate通过对象标识来辨别两个持久对象是否相等。在映射文件中,通过id属性来定义对象标识,内容如下: 其中unsaved-value属性用来指明对象未持久化时的值,如果此值与未持久化的对象标识值不符,将无法save对象,generator用于指定标识对象的类型,常用的有identity, assigned等。标识对象为实现
2004-08-08 23:38:00
3499
2
原创 nhibernate源码分析之四 持久化操作与SQL语句
持久化操作由与持久对象关联的持久化类来完成,持久化类是实现IClassPersister接口的类,每个持久对象都有一个关联的持久化类,这些持久化类存储在会话工厂的classPersisters集合中,nhibernate允许用户通过自定义的持久化类来持久化数据。IClassPersister接口定义了基本的CRUD操作,在nhibernate中由AbstractEntityPersister类实现
2004-08-06 14:57:00
2364
Agile Java 测试驱动开发的编程技术
2018-09-12
敏捷软件开发-原则、模式与实践
2018-09-12
敏捷软件开发-原则、模式与实践(C#版)
2018-09-12
用户故事与敏捷方法
2018-09-09
敏捷软件测试 - 测试人员与敏捷团队的实践指南
2018-09-09
Scrum敏捷软件开发
2018-09-09
Spark最佳实践(带目录)
2018-05-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人