将经典ASP应用程序迁移到ASP.NET

时间:2010-06-01 13:24:29

标签: .net asp.net

我们正处于项目的设计阶段,其目标是将ASP经典应用程序重新转换为ASP.Net 4.0。系统需要完全基于Web。新系统有几个新要求使这个项目成为具有挑战性的项目:

  1. 系统需要独立于数据库。它必须在1.0版本上支持MS SQL Server,Oracle,MySQL,Postgres和DB2。

  2. 系统必须能够通过第三方报告包轻松地从数据库进行报告。

  3. 系统必须允许管理最终用户通过基于Web的界面在数据库中创建自己的表。

  4. 系统必须允许管理最终用户设计/配置用户界面(基于Web),在那里他们可以选择系统中的表和字段(我们系统的核心表或他们自己在#3中创建的自定义表) )

  5. 系统必须允许管理最终用户创建和维护这些自定义创建表之间的关系,以及这些表与系统核心表之间的关系。

  6. 系统必须允许管理最终用户创建业务规则,以强制执行验证,显示/隐藏UI元素,根据特定用户的身份,特定用户组或权限阻止某些操作。

  7. 本质上,它是一个具有一些核心票证跟踪功能的系统,但允许最终用户扩展接口,业务规则和数据库。这是否可以构建在.Net,基于Web的环境中?如果是这样,您认为完成这项工作的努力程度如何?我们目前是一个6人的商店,有2.5名全职开发人员。

5 个答案:

答案 0 :(得分:3)

有一件事要问是谁创造了这些要求?大多数经验丰富的开发人员过去都会使用通用的do-everything系统,但往往没有成功。这是因为要做到正确并且存在很多陷阱是一件棘手的事情。用户在数据库级别创建自己的表的要求是来自经验丰富的程序员,他们了解安全隐患和设计原则,还是来自“做过一些编程”的项目经理?首先解决您的实际需求。

而不是

  

系统必须允许   管理最终用户创建   他们自己在数据库中的表   通过基于网络的界面。

也许你应该有这个要求

  

系统必须允许   管理最终用户定义和   通过网络存储自己的数据   基于界面。

这将阻止您缩小选择范围。头脑风暴不同的实现,创建一些原型和概念设计的proff,并准备扔掉它们。

我的方法是将数据库访问完全抽象到您可能实际上不在数据库本身中创建新的客户端定义表的位置,而是在数据访问层中创建虚拟表。这将有助于使系统数据库不可知。

要进行验证,请查看FluentValidation。它是一个非常易于使用且灵活的验证框架,可以很好地与客户端的JQuery验证配合使用

给你自己一年左右,然后可能增加50%的好措施。实际上,估计这类项目非常困难,但是我们使用最佳实践敏捷方法在一年内与类似的团队实现了类似的规模项目。我假设你的开发人员很有能力。这是一个非常具有挑战性的项目,因为你已经正确地确定了。

答案 1 :(得分:0)

这取决于执行任务的人员的技能。向开发人员提出要求,并尝试从他们那里获得估算。

PS。请详细说明问题标题中的问题'可以做到'有点通用;)

答案 2 :(得分:0)

是的,但对于3和5这样的数字,为什么不使用可用的软件? Sun查询工具,Ms sql management studuio等。

答案 3 :(得分:0)

您提供了6个问题/要求,以下是我的诚实意见。

  1. 开发一个能够使用各种数据库后端的系统绝对是可能的,也是一种很好的方法。
  2. 允许通过第三方工具对其中一个数据库备份进行读取访问以获取报告功能是一种常见的情况,并且可能。
  3. 允许系统管理员修改数据库结构(即添加/编辑/删除表/列)这是一个值得怀疑的做法。为什么重新创建轮子。您提到的每个数据库后端都有管理工具,用于管理数据库结构的修改。更重要的是,如果您计划在公共互联网上部署此项,那么您就可以开辟灾难的可能性。如果他们是系统管理员,为什么不使用已经创建的工具呢?它更安全,更容易开发,最终更容易支持。
  4. 允许最终用户配置管理员以通过更改标签名称,隐藏字段,需要字段来配置用户界面。这不是核心表上的问题,但对于用户定义的表,请参阅我对#3的评论。
  5. 允许管理员在网络上创建和维护主要关系(即外键,主键,唯一键)与#3一样极其危险和痛苦。为什么重新创建轮子?
  6. 您的上一个问题/要求说明了很多。我只能说允许用户稍微自定义用户界面(隐藏/显示字段,在表单中创建一个字段)。至于规则引擎,有一些处理规则/工作流的框架。也许对其中一个框架的一些研究对您有所帮助。 Microsoft拥有Windows Workflow Foundation
  7. 总的来说,你不是第一个想出这些想法的人。但是像这样的应用程序的整体开发和可维护性可能是一场噩梦。

答案 4 :(得分:-1)

首先,是的,所有可以完成,但它们并不是真正的要求,而是实施细节。当你说最终用途应该能够“创建一个新表”时,你应该说的是“最终用途应该能够定义一个新的实体类型”。它不一定要有自己的表。

无论如何,如果你只有2.5个开发人员(我认为你就是其中之一),并且你没有足够的经验来查看所有要求和当前系统并估计可行性,那么我不会认为该项目将取得成功。