打算开始写一个开源的.net企业开发平台

前不久,应兄弟的要求,帮他考量了几家做.net的外包团队,发现了这些团队中的一些通病:

1、对于企业开发,毫无概念;

     举一个简单的例子,我问几个团队经理的时候,问到:对于业务编号的管理,比如做有些业务时,往往做一笔业务,要产生一张单据,对于这些单据的号码的产生、管理上,您都有哪些处理机制及设想?这些处理机制有相关的成功案例吗?

2、清一色的架构:petshop。

     对于我们现在要外包出去的这个项目而言,有几点要求需要权衡:

     首先,我们知道,对于一个企业的日常业务办理系统而言,我们往往需要从系统本身动手处理相关的负载策略。哪么,对于目前petshop这种框架本身来说,您的平台如何处理这个问题?

     其次,对于企业来说,往往需要与外部其他机构、企业对接,您手中的petshop平台需要增加些什么能够完成这个要求。

     再次,官方的petshop本身没有使用微软最新的mvc架构,也就是意味着其页面开发中充满了事件,这往往是造成系统效率下降的原因。见到过很多团队在后期维护时,对页面部分痛苦的重构着。

 3、缺少简化企业开发的组件

     权限控制,对于一个较大规模的企业来说,往往存在一定数量的分支机构、合作单位。如何有效的通过权限来控制不同机构间的数据访问,这个问题真需要好好考虑考虑。

     反向业务,我们知道,对于一般的企业业务而言,大量的业务存在作废这种操作,如果没有一种有效的处理机制,就意味着您需要写相同数量的作废功能来解决这个问题。

     日志,很难想象,当系统发生故障或者发现BUG时,企业是否允许您进行停机检测。更多的时候,我们需要通过运行日志来分析故障点进行修复。当然,如果您的日志系统没有使用异步方式来处理日志,性能又如何谈起。

     配置化查询,我们可能并不需要你的查询条件是运行时选择的。但是,起码这个查询是配置出来的。开发人员往往只是完成业务功能的编写,而这些业务查询常常是实施人员在当地按照客户的要求来完成的,但是,我们并不打算让实施人员参与到代码开发中来。并且,对于业务功能而言,往往需要对业务主体进行查询,并将主体的数据返回到业务办理的页面上去。这需要做相应的组件来完成。

     持久化问题,说实话,我们不能期望EF这种框架来解决我们的问题,因为微软官方只提供了对SQL SERVER 的支持,而ORACLE的发布的EF框架又问题多多。如果你使用微软的DAO加代码生成工具来完成,我只问您一个问题,项目上线初期往往BUG较多,数据库表的变动量是不能忽视的问题,您觉得使用这种方式会对后期的维护带来哪些影响。往往对于一个数据库表的查询,大部分的代码生成工具只是生成增删改查,对于扩展方法来说,往往会写在同一个DAL中,如果这些扩展较多的话,您觉得能使用这种方法吗?并且,我们做这样一套系统来说,希望可以卖给多个客户,可是并不是每个都会使用相同的数据库,如何重构你的DAO?

     定时及异步业务,有些企业的业务比较变态,单个业务可能同时处理10余万的数据,在业务繁忙的白天,这种业务您敢让他即时办结吗?

     消息通知,当业务员A办理完了相关的业务,如何告知业务员B?就像你在淘宝买东西,完成交易时,淘宝会通过旺旺通知你,并发送来相关业务的连接地址。

     报表,请别拿EXECL来忽悠。对于票据的套打而言,我从来没指望过EXECL。当然,对于报表数据的导出来说,需要能够导出成EXECL。并且,对于报表的重打而言,如果您还需要写段程序,这就说不过去了。。    

     数据导入导出,您算算,在一个带宽1M的网络上,通过功能完成一个数据量10W条的数据上传并导入,您的IIS线程会被占用多久,您的数据库连接多久能释放?又如果,我这个业务是导出10W条数据让用户下载呢?

     系统代码管理,静态代码,如省市代码;动态代码,如产品代码;也就是我们常常在页面中用下来列表框展示的内容,您如何管理它?如何让不同的分支机构或者操作员访问到适合自己的代码项?

      参数管理,不同产品的加价比例,财务期间等等,都是些常用的业务参数,如何让不同的分支机构或者操作员访问到适合自己的参数项?如何尽可能少的设计数据库表来完成业务参数的管理?

4、缺少适合自身平台的代码生成工具

只有一家外包团队有自己的代码生成工具,但是非常悲哀,他的生成的代码缺少面向对象的思想。其他的都在用一个东东……动软代码生成工具,这从侧面反映了李天平对目前程序员的影响力是如何的深远……
5、缺少积累

基本上没有任何一家外包团队能够拿出自身的知识沉淀,要么质量不高,要么人云亦云。这其中甚至还包含了一家规模较大的对日外包企业。

 

我常来,但潜水。

我觉得,小团队的观念常常会因为某一种事务的流行而丧失辨别是非的能力,这与小团队接触的项目有很大的关系。我想,我们应该可以做点什么,不求能对大家有多大帮助,至少可以提高自己。

目前初步完成了技术框架的整合:C#4.0/ASP.NET MVC3 /SPRING.NET 1.3.1/NHibernate 3.0/WCF/LOG4J/Quartz/

目前有一点很纠结,就是JAVASCRIPT的组件选型问题,纠结在哪里呢?如果页面上大量采用EXT等套件,是可以得到较好的整体效果,但是,编码量瞬间大了很多。如果只是扩展一下HTMLHelper,编码量是少了,但是难以获得类似于WINFROM的UI效果。

还有一个问题,就是NHibernate 的问题,如果我要执行一个UPDATE AA SET AA.BBB001 = AA.BBB001 + 100 这样一条语句的时候,我就很痛苦。在这里我考虑引入另外一个开源ORM框架,MYBATIS来建立扩展实体。为什么会有这种想法,没啥说的8/2原则,NHibernate 完成8,剩下的就让MYBATIS去2吧。

再就是报表组件的选型,本人之前做WINFROM及JAVA开发的,这里还没找到合适的免费的、开源的报表组件。那位兄弟有这方面的东西,支持下。

为啥选用SPRING.NET 1.3.1 ,很简单,除了切面编程以外,他官方支持了我需要的4个内容,Asp.net MVC、NHibernate 、Transaction、WCF。

posted on 2011-07-10 23:00  H500ML  阅读(1048)  评论(13)    收藏  举报

导航