我的任务是重新构建现有的ASP.Net 2.0网站。目前的解决方案有3个项目; Web UI,业务层项目和数据层项目。
数据层使用某种SQL帮助程序类和存储过程来返回DataTable。
Business Layer排序传递了DataTable,我没有看到太多的业务逻辑。
UI网站对DataGrids非常重视。
在集思广益时,我的想法是;我希望显然保持分层设计,并通过在解决方案中使用3个项目来使用代码分离。
我最困惑的部分是数据层 我应该对此部分,实体框架使用什么,或者创建自己的代表我的数据库或逻辑对象的类? 发展速度也是一个问题,它必须相当快速地下降,并且要灵活或分离以进行增强。
我尝试过MVC路线,但此时开发人员的学习曲线太陡了。所以,它必须是Web Forms。 : - (
我倾向于使用Enterprise Library进行数据访问,日志记录,缓存和异常处理。
我正在寻求建议和最佳实践。
答案 0 :(得分:2)
我希望显然保持分层设计,并使用3个项目
来使用代码分离
为什么呢?假设一切都应该进入一个项目,直到你能够清楚地识别需要分离的类,这是不是更有意义?
特别是如果您使用的是Entity Framework,nHibernate或LINQ to SQL之类的东西 - 那些库就是您的DAL。
我目前领导的应用程序由7个项目组成(不包括单元测试项目),但是在我们拥有具有引人注目,易于理解的需求的具体功能之前,我们没有创建项目。在一个不同的项目中。区别很重要 - 不是“你认为它应该”,而是“它必须或某些事情变得非常困难或不可能”。否则,你正在修建无处可去的道路,并预测它们将在100年内满足交通需求。
答案 1 :(得分:0)
我会重新考虑MVC。任何Web开发人员都应该掌握MVC回归的标准HTML功能。作为一名webforms开发人员,我在几天内开始使用MVC,我不会再回去了!
答案 2 :(得分:0)
我建议您使用NHibernate或LINQ to Sql.Both很有趣且功能强大.ADO.NET实体框架也很好。
答案 3 :(得分:0)
您的任务是重新设计解决方案 - 为什么呢?这应该是推动你的新架构(至少在一定程度上)。
所以,这个答案的两个部分:更高级别的东西,然后是你问题中的细节。
有哪些非功能性要求? (也称为“能力”http://en.wikipedia.org/wiki/Ilities)或至少是他们的相对优先权?
这些应该推动任何建筑工作。我们是否正在设计速度,可用性和可维护性(例如)?
关于你的具体情况:正如你所说,看起来逻辑层中没有太多逻辑。只是通过DataTables听起来可以短期限制使用,但从长远来看是不切实际的。如果你只是推送数据(报告)来显示那么那很酷,我想。
我从来没有亲自使用过Entity Framework,nHibernate或LINQ to SQL,但任何都应该可行。它们可能会对依赖空间产生影响(供应商锁定,许可等) - 这是否重要。
至少我想要抽象出接口背后的数据访问实现 - 这样你使用什么并不重要。
使用企业库是好的,如果你不需要,就没有必要重新发明轮子。
关于开发速度:看一下你需要用DAL做的事情。对于任何新技术,首先根据最复杂的功能进行原型制作。这应该有助于确定在时间限制下它是否可行。
答案 4 :(得分:-1)
我就是这样做的。我将首先从数据层,视图,业务逻辑和规则重新构建所有内容。从数据层开始,看看我可以重用什么,看看我需要重做什么来提高性能和可扩展性。当然考虑到我的所有业务逻辑以及我必须重做所有内容的时间。
如果您没有时间,可以重新编写代码。
对于数据层,您应该检查http://www.ormbattle.net我最终购买了LLBLGEN Pro,因为它的后端是独立的。