2012-06-13 46 views
0

我是一名初级.NET程序员。 我必须开发一个应用程序,为小部分用户(大约8个)处理本地环境中的销售,客户和提供者(还有其他很多事情)。 整个事情应该为集中式数据库的本地使用而创建。 我的架构从上到下会是这样的:关于.net中集中数据库应用程序的设计/体系结构的建议

1.在windows窗体上。

2.Controller用于处理用户请求

3.Bussines对象是实体框架生成的对象

4.SQL数据库。

很显然,我已经知道这不是架构的最佳方法,但我希望尽可能简单。 我已经做了大量的研究,但问题的数量似乎变宽了,所以我一直在寻找一些关于这个特定问题的指导,所以我可以在推荐一个我感到满意的建筑之后专注于研究。对于这个问题的解答抱歉,我只是不知所措。

Tnx帮助newb。

+0

MSDN拥有一个带有示例项目的实体框架概述。 http://msdn.microsoft.com/en-us/library/bb399567.aspx SO是针对特定的编程问题。 – Paparazzi

+0

谢谢,我用EF4决定其他技术的文章,但它并没有接近分层问题。 – LECHIP

+0

然后中间层看看WCF Windows Communication Foundation。中间层作为服务托管(通常在IIS中),WCF用于从客户端与服务进行通信。考虑为您的客户端的表单WPF。 – Paparazzi

回答

0

你所描述的似乎是一个来自初级开发人员的好方法。

有许多因素会影响适合项目的架构。时间,日程安排,资金,简单或复杂性,可维护性和未来发展扩展与一次性完成的应用程序。无论如何,由于数据模型或与未知系统的集成,未来版本可能会需要大规模重写吗?

第一次迭代后没有任何应用是完美的。任何优秀的开发人员在完成项目后都会找到无数改进项目的方法,因为他们的技术技能和知识都在增长。这就是说,数据库和实体框架的一面是完全正确的。 EF将帮助您快速关注功能而不是基础设施。您可能已经对EF与其他对象模型套件或传统的基于存储过程的方法进行了权衡。

用户界面可能是由客户或业务需求决定的。这里唯一的另一个重大决定可能是内联网的Web应用程序,所以你不必担心在用户的机器上安装软件。

控制器/类库/业务层有意义,因此您不必直接在您的winforms代码中针对EF编写查询。这使您可以更轻松地拆分UI并将其替换为其他行。

你没有概述什么都不知道确切的情况抛出任何红旗。用这种方法继续前进,看看它是如何发展的。完成之后,请考虑架构的哪些方面具有挑战性,是多余的或麻烦的。

+0

谢谢你的回答,很高兴知道我在正确的轨道上!另一个问题,如果我切换到一个Web应用程序,而不是使用Windows窗体,我会需要什么额外的图层,我知道我必须有一个服务层提供给网站,然后我不知道是否我应该使用业务层中的相同对象从UI中来回传输服务器。 – LECHIP

+0

另外,我应该在哪里进行验证?总是对我感到困惑,哪里是添加验证规则的最佳地点。 – LECHIP

+0

回复:如果是web应用程序:你不一定需要任何额外的图层。标准的asp.net网站/ webapp的代码隐藏页面应该能够直接调用控制器/业务层的方法。如果您有多个需要访问相同数据/功能的不同应用程序,则提供数据服务的单独服务将非常有用。如果你只有一个应用程序,那么不需要服务(还)。 – ulty4life

0

由于正如您所说,实体框架对象已生成,您可能希望在控制器和实体对象之间具有一个或多个模型级别。很多时候,一个特定的视图数据来自多个实体。如果您没有控制器可以访问的其他级别的模型,通常会发生的情况是业务逻辑迁移到控制器。

换句话说,控制器会创建模型,模型会知道如何与实体进行交互。

请注意,我假设您使用MVC模式,因为您参考#2中的控制器。

+0

虽然MVC是为UI创建的框架。我没有看到实体和模型之间的区别,对我来说,它们在我的设计中是一样的。 – LECHIP

+0

我的控制器,其中实际的类采取用例并分成不同的步骤来实现完整的操作 – LECHIP

+0

只有MVC中的视图用于UI。控制器处理请求,模型包含数据并执行业务逻辑。我使用非常松散的术语模型,实体是模型。 所以一般在MVC中,Controller不会对实体起作用。它只是接受HTTP请求并将其作为参数转换为对数据执行操作的模型。 看起来您正在使用更多的服务基础方法,因此通常只需将模型作为服务层即可。 –

相关问题