日期:2014-05-20  浏览次数:21078 次

如何让系统支持二次开发
如何能让自己的系统具有二次开发的功能,就是说允许别人在现有的基础上做二次开发却不使用我原来的代码,这样的系统中设计之初需要注意些什么问题,谢谢。

------解决方案--------------------
需要注意接口的实现.函数功能的封装.最大限度的降低耦合性,提高内聚性.
------解决方案--------------------
把你的功能先都做成接口.
------解决方案--------------------
把你需要公开的功能做成dll文件,写一个DLL文件的使用说明就行了,要注意的问题是要符合COM+标准,通用性好。
------解决方案--------------------
引用楼主 ddff2004 的帖子:
如何能让自己的系统具有二次开发的功能,就是说允许别人在现有的基础上做二次开发却不使用我原来的代码,这样的系统中设计之初需要注意些什么问题,谢谢。

------解决方案--------------------
LZ这个问题比较大.简单来说,我认为早期的接口设计以及文档只是表象,更多的提供系统的一种扩展性,是属于浅层次的二次开发.真正意义上的二次开发,首先你的系统应该是完全面向对象的模块化设计,包括你自己的系统之间的相互调用.在此基础上区分系统内核和用户模块.开放用户模块给用户二次开发.DotNet的特性提供了更多选择,比如说你可以使用反射,甚至可以为你的系统定义一套自己特有的语言,你有自己的编译器,将你自己定义的语言编译为DotNet IL,实现更加强大的二次开发平台.
------解决方案--------------------
我觉得还是要看具体应用的。
有些软件是提供插件形式支持的,这种方式适用于中小型软件,或者是某个软件系统的一个组件。而大多数优秀的ERP性质的软件则支持直接内嵌编译器的方式,让开发人员直接在其本身的平台上做二次开发。代表作有SAP的ERP使用BAPI,微软的ERP Dynamics AX使用的是MorphX环境,而SYSPRO系统则使用XML+Web Service还有内嵌VB脚本的方式。
不仅仅是ERP,很多优秀的软件都支持代码编写,比如CrystalReports,比如InstallShield。那么,我们完全可以把Visual Studio系列工具看作是一个二次开发平台,它不仅支持本身插件的二次开发,而且还支持Windows/.NET平台的二次开发。
接口和聚合等这方面的思考,相对于“是使用插件方式还是内嵌编译器方式”这一问题就更为底层了,这是在讨论用什么方式来实现二次开发。面向抽象编程始终还是提高软件扩展性的重要手段。
------解决方案--------------------
问题有点大,不太好回答。虚的问题也就只好虚着回答了:)
我觉得一个系统或者项目来说都有自己的一个近期的目标和远期的目标。考虑应用系统是否有二次性的开发应该是结合具体项目而言的,毕竟项目的影响方有很多,有开发团队、经费、时间等各种影响因素【有可能重新开发的代价还更小呢】。
脱开这些外部因素来说,对于一个系统的二次开发首先要求对于业务(你需要满足客户的要求)的熟悉和归纳,通过抽象和重构的方法进行业务框架的搭建,之后才是具体的实现框架。不管是InstallShiled还是CrystalReports都是在一定的业务要求框架下开展的。
单纯从技术方面来说,二次开发就意味着需要借用之前的成果,这就要求在应用系统架构的时候将应用系统的技术体系分析清楚,同时在设计中尽量的降低耦合度【代价是性能可能受损、安全受损等多种问题】,在衡量各种因素之后的采用一种适合自己项目的方式。
在应用二次开发上需要考虑的方向包括:耦合度、性能、安全、业务符合度、灵活性等
在技术实现山可以考虑的方向:面向对象的设计思路、模式开发的应用、接口定义等
在项目中还需要考虑的有:数据的规范性【国际标准、国标、行业标准等】、接口的容错性和可扩展性等。
呵呵,小子竖言,仅供参考。哈哈
------解决方案--------------------
这个要看你接口怎么设计的,设计好接口后你直接把接口名称和功能告诉他就行了
------解决方案--------------------
从机制上支持二次开发不难,例如Plugins、Script Hosting等,都有很成熟的模式。

但是这个问题本质上是与业务逻辑紧密相关的。

主要是将各种领域对象包装成独立的组件、将各种领域逻辑封装成接口。
特别是,针对系统中目前可以预见到的、肯定会发生变化的功能点,一定要抽象成接口。

二次开发的必要性一般就发生在系统功能不足以满足用户需求的时候,
但是在开发时又没有很好的解决办法,甚至可预见到在某些点上用户将会有各种稀奇古怪的要求。

举例来说:
目前我们只知道软件需要支持与CAD软件的集成,但又确定用户将要集成哪些CAD软件。
这时候,我们就可以将系统中针对CAD软件的操作抽象成接口,比如CAD文件加载、
CAD文件参数抽取、CAD元素替换等等,留待将来自己扩展、或第三方进行二次开发。

------解决方案--------------------
使用Visual Studio 2005 继承开发环境,使用C#.NET及VB.NET,VC++.NET 编程语言都可以,按照COM(组件对象模型)规范,实现Addin 接口即可。如果想使你的外接程序能够被Office所共享,就开发共享外接程序,如果针对特定Office 程序如Word,可以使用VS 2005 的VSTO开发,这个比较方便。