当前位置:编程学习 > C#/ASP.NET >>

怎么样产品化一个现有项目?

有一个为某家公司开发的项目忽然被另一家公司相中表示要买,可是他们对业务的需求与原先的那家公司有一些差异,但总体框架基本相同,而且这个项目有希望在更多的公司中投用,这样就会有更多的个性化需求。
我以前都是做定制化开发的,虽然在设计阶段也考虑过有这样的可能性,但因为时间关系只封装了与业务无关的功能。我现在可以把业务中有关用户管理、权限管理等基本功能抽取出来作为基础服务,因为对这些功能的需求基本上是相同,但是具体业务逻辑要怎么封装就实在是难倒我了。
所以向各位大牛求教,有什么样的办法可以很方便地实现差异化需求(包括业务和界面,WinForms),并且维护也不会太复杂,是否这现成的框架可供参考?
--------------------编程问答-------------------- 我们公司的做法是:框架+业务融合器+基础设施服务 --------------------编程问答-------------------- 主要是接口,编程时面向接口编程,如果接口一致就可以 --------------------编程问答--------------------
引用 1 楼 u011573693 的回复:
我们公司的做法是:框架+业务融合器+基础设施服务


业务融合器是个什么东西,能简单的说一下吗? --------------------编程问答--------------------
引用 2 楼 hangang7403 的回复:
主要是接口,编程时面向接口编程,如果接口一致就可以


接口的运用要看整体框架的设计了,并不是所有场合都适用,少量的业务差异用接口会有一种杀鸡用牛刀的感觉。 --------------------编程问答-------------------- 不建议封装,建议拆分后重用。

报表、界面、工作流、实体结构都可以重用。 --------------------编程问答--------------------
引用 5 楼 devmiao 的回复:
不建议封装,建议拆分后重用。

报表、界面、工作流、实体结构都可以重用。


关于拆分能说得具体点吗? --------------------编程问答-------------------- 如果你不说明你的业务接口,这无法空洞去说。

就好像一个工地板砖的(丝毫没有考虑过抽象扩展机制),现在要学习做建筑师,那么你就从头开始重新设计你的产品。

假如你在设计上原先根本没有讨论过所谓“接口”中有什么内容,只是空洞地说技术,那么自然也不可能对你起作用。 --------------------编程问答-------------------- 你在题目中扔出一个问题,然后又说自己的这个问题是“少量的业务差异用接口会有一种杀鸡用牛刀的感觉”,我觉得是自相矛盾的。可能除了别人免费给你写个最终代码以外,别的方面(设计上的讨论)的意见你全都无法接受。 --------------------编程问答--------------------
引用 8 楼 sp1234 的回复:
你在题目中扔出一个问题,然后又说自己的这个问题是“少量的业务差异用接口会有一种杀鸡用牛刀的感觉”,我觉得是自相矛盾的。可能除了别人免费给你写个最终代码以外,别的方面(设计上的讨论)的意见你全都无法接受。


最近心情不太好吗,刚被老板骂过吧,火气不要这么大,乖了,结帖的时候多给你点分就是了。 --------------------编程问答-------------------- 尽管这样说可能有点反人类--- 不过你在做第一个项目时请忘记产品化之类的事,过滤泛化带来的损失永远大于重新修改代码架构的成本,亲身经历

从第2个项目开始,每遇到一个点就只修改那一处,尽量控制泛化的范围。比如增加第一个特殊字段时,你才去考虑在系统中增加自定义字段功能(虽然这几乎一定是早晚要做的);每遇到一种不同的处理,就去考虑增加一个系统参数,在这之前,当项目做 --------------------编程问答--------------------
引用 10 楼 phommy 的回复:
尽管这样说可能有点反人类--- 不过你在做第一个项目时请忘记产品化之类的事,过滤泛化带来的损失永远大于重新修改代码架构的成本,亲身经历

从第2个项目开始,每遇到一个点就只修改那一处,尽量控制泛化的范围。比如增加第一个特殊字段时,你才去考虑在系统中增加自定义字段功能(虽然这几乎一定是早晚要做的);每遇到一种不同的处理,就去考虑增加一个系统参数,在这之前,当项目做

+1
我认为前三个都应按项目做,有了足够经验才能明白这类项目的共性,开始产品的设计。

--------------------编程问答--------------------
引用 10 楼 phommy 的回复:
尽管这样说可能有点反人类--- 不过你在做第一个项目时请忘记产品化之类的事,过滤泛化带来的损失永远大于重新修改代码架构的成本,亲身经历

从第2个项目开始,每遇到一个点就只修改那一处,尽量控制泛化的范围。比如增加第一个特殊字段时,你才去考虑在系统中增加自定义字段功能(虽然这几乎一定是早晚要做的);每遇到一种不同的处理,就去考虑增加一个系统参数,在这之前,当项目做


说得好,其实我也是这么做的。项目现在已经投用了,接下来就是遇到大量的个性化需求冲击原先的项目,有对数据的影响,也有对业务逻辑的影响,所以需要寻求一种方法,既保留原来项目的完整性,又要响应新增的变化。 --------------------编程问答--------------------
引用 11 楼 rtdb 的回复:
+1
我认为前三个都应按项目做,有了足够经验才能明白这类项目的共性,开始产品的设计。


这个项目从第一期开始已经做了好几年了,经验已经足够了,接下来要做的就是产品化。关于产品化软件的设计模式,有比较好的推荐吗? --------------------编程问答-------------------- 整个项目需要重构,抽出核心逻辑和相关代码。将所有可能的变化作为插件功能。

其实这里怎么说都是白说,撸主自己试着去做吧,这种东西没有什么可用的框架,因为没人知道你的业务逻辑到底怎么样的。 --------------------编程问答-------------------- 高度抽象框架 产品化 --------------------编程问答-------------------- 功能插件化 很好用哦
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,