关于CodeSmith生成CSLA代码的联想
(把时间回到昨天中午)刚吃完午饭,吃边边在想早上下载的最新版本的CodeSmith(5.2),看它生成的CSLA框架代码的情况,搞了一阵子,出现很多异常,还以为是软件出毛病了,逛了他们的E文说明才发现比2.0多了很多步骤,最后还是搞定了,令自己大吃一惊,新版本(3.8)中的东西比2.0里面多了很多,这里是指代码生成时的代码量多了很多!!类也成了嵌套式的了,把业务、属性、数据门户等通过部部分类的形式分开了,而且附加了很多零碎操作,比如OnFetching这种的部分方法,或许是因为现在的客户端技术太多了,反而显得框架有些零散,不过如果普通使用的话删掉还是可以。
原本以为2.0的思想会搬到3.6/3.8里面,确实是搬了,不过看框架源码里面改动的挺大,更智能化了,特别是对于属性的操作,封装的真是厉害,跟踪了好几次才搞明白,没有2.0里面那样简洁了,突然感觉不如2.0里面爽...
经过开发药品管理这个小系统,突然发现思想被束缚了,与刚开始接触petshop式的普通三层那个时期一个感觉,好像找到了最好的思想,最为理想的解决方案,对于csla来说,无论是它对“客户”开放的接口量,还是对于业务处理的思想,对于属性getter,setter的充分利用,业务验证的创建到业务的CheckRules的过程,数据门户的封装与处理,通过配置方式配置多台机器的分布式方式,还有好多好多的功能,很强大,不过对于业务对象的设计来说好像有一点问题,或者没有想出好的解决方案,对象里面存在继承关系,对于这个框架里面不知道如何来解决这种继承,不过对象组合是没有问题,典型的就是父子关系(无论是单对象还是集合对象),父对象有责任对子对象进行数据加载(也就是说子对象的数据来源于父对象提供),也拥有对子对象进行跟踪的权力...
刚想到个问题,出于DDD思想,一般情况下它提出业务数据操作与数据库数据操作的分离,也就是说,业务数据与关系数据不会一一对应,更狠点说业务对象不关心数据是怎样处理的,这些处理都委托给基础设施层来搞定,这里就存在一个问题,就是业务对象的数据与关系数据的映射,通常情况下我们实现时是通过SQL查询或者LINQ2SQL、EF等来实现,查询出来后就直接映射到实体上,而要解决这种不对应关系就要通过map来把关系数据再次映射到业务数据,这么一来,数据的中转过程多了一步,无论是数据的读取还是更新操作,性能问题会怎样呢?对应到CSLA里面也是如此,没有测试过,只是担心,尽管数据操作会通过移动对象的方式放在服务器来处理,或者说这点根本不算是性能耗费,还是说这也是一种性能与扩展之间的平衡选择呢。。
当然,对于某个框架或者某项技术来说说肯定是要把它放在一种,或者说是一类应用领域中,与设计模式那样,用在了正确的地方才显得出它的优势。
(文章内容没有"科学依据",仅是自己的随想)
转载于:https://www.cnblogs.com/quluqi/archive/2010/06/30/1768059.html
关于CodeSmith生成CSLA代码的联想相关推荐
- CodeSmith实用技巧(八):生成的代码输出到文件中
在CodeSmith中,要把生成的代码文件输出到文件中,你需要在自己的模版中继承OutputFileCodeTemplate类.<?xml:namespace prefix = o ns = & ...
- python 自动生成C++代码 (代码生成器)
python 代码自动生成的方法 (代码生成器) 遇到的问题 工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错:而借用pyth ...
- 【工具软件】webstorm如何使用快捷键生成固定代码
我们写前端页面时会有很多的机械重复代码,每写一个文件都要重新写一遍,枯燥且浪费时间,有没有一个方法可以快速生成这些代码呢?有!webstorm替我们考虑到了这个问题,提供了解决方案,接下来让我们一起看 ...
- AI 生成的代码可信吗?编写的代码有 Bug 吗?
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 即使是帮助开发人员编写软件的工具也会产生类似的bug. 目前,大部分的软件开发人员会让 AI 帮助开发者们编写代码,但是开发人员 ...
- AI生成的代码你敢用吗?
选自gist.github 作者:0xabad1dea 机器之心编译 编辑:Panda 近日,GitHub 推出了一款利用人工智能生成模型来合成代码的工具--Copilot,但发布之后却饱受争议,包括 ...
- vue文件快速生成模板代码
vue文件快速生成模板代码 输入 vue 按 tab 键
- AI生成的代码你敢用吗?有人给最近走红的Copilot做了个“风险评估”
来源:机器之心本文约5100字,建议阅读10分钟 本文为你介绍一款利用人工智能生成模型来合成代码的工具-Copilot. 近日,GitHub 推出了一款利用人工智能生成模型来合成代码的工具--Copi ...
- powerdesigner生成php代码,让powerdesigner生成的sql语句在mysql上成功执行
花了大概半天的时间学习了下powerdesigner的用法,等我生成sql语句时,发现在生成的sql语句根本不能在mysql中执行,当然我的dbms是设置了mysql的. 在网上搜索一通,也没有什么好 ...
- CXF wsdl2java 生成java代码供客户端使用
CXF wsdl2java 生成java代码供客户端使用 环境配置: 1.下载apache-cxf-2.6.2在环境变量中配置CXF_HOME 值为E:\gavin\cxf\apache-cxf-3. ...
最新文章
- android中设置ListView的选中的Item的背景颜色(附源码)
- mysql子查询为什么不走索引_解决MySQL中IN子查询会导致无法使用索引问题
- Lintcode107 Word Break solution 题解
- MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
- 从python开始学编程pdf 解压密码_从Python开始学编程PDF高清完整版网盘免费分享...
- hive olap 数据仓库_数据仓库系统的实现和使用(含OLAP重点讲解)
- mysql数据库属性_mysql - 数据库操作和数据属性
- mybatis oracle trim,Mybatis trim标签
- LeetCode-Sum Root to Leaf Numbers
- SpringBoot的搭建
- unity3d多个版本共存
- 2.2 BubbleSort
- CAXA_三维电子图板v2
- Android开发关于调用摄像头黑屏没反应的问题
- 如果你没有钱,没有能力,没有人脉,你就这样干!
- XP下IIS相关问题
- 【游戏开发渲染】Unity ShaderGraph使用教程与各种特效案例:Unity2022(持续更新)
- 教你给大量视频快速调整色调的方法
- 完美云主机购买小技巧分享
- 云模型的介绍及python简单实现