fastCSharp是一个基于.NET元数据的 代码生成 的 底层应用框架 ,目标是打造一个“ 开发 + 运行 ” 效率双优 的开源框架。
经过半年多的时间,除了与 web开发 直接相关的部分,都已经在fastCSharp part 1.5中完成了重写工作。
fastCSharp现在实现的 代码生成实例 主要有 5个 :
1、 基于缓存 查询模式的 ORM 代码生成实例(现在只支持 MSSQL ),自定义配置类是fastCSharp.setup.cSharp.sqlTable,同时 支持反射模式 fastCSharp.setup.cSharp.sqlTable.sqlTool。
下面是ORM的model定义示例
fastCSharp的配置文件是一个 纯数据的json 格式文件,比如 Connection1 的配置定义
下面是代码生成模式 示例 ,采用 派生类 的模式
有时候 多个表格结构相同 ,那么只需要定义一个model,比如可以
下面是 反射模式示例
有人说ORM不适应于 复杂的综合查询 。真的吗?我现在展示一段查询代码
这个查询需求是,先根据话题(topic)ID查找相关联的问题(question)ID集合,然后找到这些问题的最佳答案(answer)ID集合,然后根据这些答案的用户(user)ID分组统计答案数量,最后将这些用户根据用户等级分组,每个分组根据答案数量取前6个用户。
我个人认为基于ORM的查询 更简单流畅 。如果用SQL实现这个需求,该是一个多么 复杂的SQL语句 ?如果需求有一点点变化,修改这个SQL语句该是多麻烦的事?
2、 数据类快速序列化 代码生成实例,自定义配置类是fastCSharp.setup.cSharp.serialize,同时 支持反射模式 。
代码生成模式将实现接口fastCSharp.setup.cSharp.serialize.ISerialize
如果自定义配置IsStreamSerialize = true,将实现接口fastCSharp.setup.cSharp.serialize.IStreamSerialize
反射模式的话, 直接调用反射函数
3、 TCP(静态方法)调用代码 生成实例,自定义配置类是fastCSharp.setup.cSharp.tcpCall ,支持泛型 , 支持跨类 (只能支持单例), 不支持反射模式 。下面是示例:
4、 TCP(动态方法)服务 代码生成实例,自定义配置类是fastCSharp.setup.cSharp.tcpServer, 支持泛型 , 不支持跨类 , 不支持反射模式 。下面是示例:
与TCP(静态方法)调用代码生成实例相似,可以参考一下fastCSharp.setup.tcpRegister。
5、 快速json处理 代码生成实例,自定义配置类是fastCSharp.setup.cSharp.ajax,同时 支持反射模式 。
代码生成模式将实现接口fastCSharp.setup.cSharp.ajax.IToJson与fastCSharp.setup.cSharp.ajax.IParseJson
由于很多人不需要代码生成那么好的运行效率,也 不想配置初始环境 ,所以某些代码生成实例提供了 基于反射的实例实现 。有的代码生成实例需要生成代理实例(比如TCP调用),没有办法使用反射实现相同的效果。
今天是我在现在这个公司工作的最后一天了,感谢李陶冶大牛这几年对我的照顾,感谢你对于这个项目开源发展的支持。也许过几天我就回老家“休息”了,在这里默默的祝福你和 51nod 能够一切顺利。
最后欢迎对算法有兴趣的朋友到基于 fastCSharp 开发的51nod OJ上去 AC问题 或者讨论算法问题。