我正在寻找建立会计应用程序的方向的输入。应用程序需要允许高度自定义,有时需要更改整个过程。
我想要一种方法来进行更改,而无需在客户有特定的修改请求时重新编译整个应用程序。后端将是某种SQL数据库。出于成本原因,最有可能是SQL Server Express。前端将是C#。
我正在考虑一个基于事件的系统,该系统将在不同类型的操作(例如条目)时生成事件。然后我会有一个处理事件的插件系统。在最终保存数据之前,我可能需要以特定顺序对数据应用多个进程。它还需要触发其他过程。
我希望保持我的基本应用程序不变,这适用于大多数客户,但是可以通过优雅的方式加载其他特定客户的自定义流程。
我对所有建议持开放态度。即使他们正在考虑采用完全不同的方式来解决问题。我们目前的内部开发人才是.NET和MS SQL Server。我不知道可能适合这种情况的软件模式。
其他信息: 这不是一个完全空白的平板系统,它将具有适用于大量客户的功能。由于各种原因,需求会根据州,甚至在需要定制的地区和城镇级别而变化。
我希望能够插入额外的预编译模块。当我开始研究可能的选项时,我想象一个空的处理程序,我可以通过插件插入代码。例如,例如,对引发事件的总分类帐进行新条目。处理程序被调用,但处理程序的代码来自一个插件,这可能是我的原始进程,适合80%的客户。如果客户想要自定义操作,我可以添加一个完全替换原始插件的插件,或者让它在原始运行后通过另一个插件添加额外的后处理步骤。我想是一种分层过程。
答案 0 :(得分:2)
您可以查看Managed Extensibility Framework 它提供了丰富的组合层功能,允许您构建松散耦合的插件应用程序。
更新:听起来您需要在不同地理区域使用预定义模块,并且使用责任链设计模式可能有助于您管理变更原则。 对不起没有提供任何代码只是抛出我的想法
答案 1 :(得分:0)
Windows Workflow Foundation (WF)(.NET Framework的一部分)是您的需求的潜在候选者。它可以动态组合各种操作,命令允许和脚本,以便您可以更轻松地为不同的用户/客户定制不同的工作流程。
Biztalk使用WF进行大规模系统集成,并由许多其他应用程序托管,这些应用程序需要能够轻松修改许多较小任务和操作的编排。
您可能希望从this tutorial on WF4开始。
HTH。
答案 2 :(得分:0)
这不仅仅是插件或者你如何在技术上解决插件问题的方式,使用MEF(+ 1 @laptop)或其他东西,你必须付出大量努力来定义你的应用程序中的插件“点”,这已经不见了最重要的是,例如。你将把那些空的“事件”放在你的代码中,或者这个事件或插件将具有哪些参数。
例如,可用插件将在保存事件之前,但您必须在应用程序中只有一个位置可以保存各种类型的业务文档,因此您可以在那里调用插件,参数将是抽象文档对象。
因此,您必须认真思考您的系统架构,对各种插件点进行足够的抽象,并完全完成该架构,不要仅仅执行系统的一部分并开始编码。
我希望你理解我的意思,因为英语不是我的母语。