-1

我们正计划在 web 中开发一个大型应用程序,我们目前的计划是为业务层中的每个类创建一个 WCF 服务。这有效吗?我想知道在大型 Web 应用程序中我们可以在哪里使用 WCF 以及使用它的主要优点

我们有这些项目

1) MVC3 with Razor that handles UI 

2) Class Library Project that communicate with Database

3) WCF Project 

我们使用的方法

1)Creates UI and Model  in MVC 

2)Makes dll that communicate with UI (eg:Save function/Update function) using ClassLibrary Project

3)The Class Library Created is Added (Added to Bin) in WCF Project 

4) Builds the WCF and Host It in Server

5) The Hosted Service is Used in MVC Project for Communication with DB

我们的技术负责人说它重量轻且更安全,但我想知道他为什么说要WCF用于整个应用程序

4

3 回答 3

2

首先问这个问题,为什么需要服务层,什么时候可以通过单独的应用程序来实现。如果您只想通过松散耦合来实现这一点,那么它没有任何意义。

在我看来,服务层对于公开您的数据(dal-layer)而不是业务层很有用。以推特为例。Twitter 通过 Web 服务公开它的数据。您对数据的处理完全是您的解释。许多应用程序可以通过 HTTP 使用这些数据。因此,您的客户端可以位于远程,并且不需要与您的应用程序位于同一台服务器上。业务层可以根据数据的解释而改变。消费者则需要担心最新的更改,包括最新的 DLL。它只会消耗网络服务。模拟您的服务也很容易,然后您可以在业务层上非常轻松地编写 NUnits 测试。我还建议你看看ASP.Net Web API,它提供了公开服务和数据的宁静方式(具有将其公开为 JSON 的内置能力)。RestFull 服务比 WCF 有很多优点,比如你不必担心 WSDL 等。接口始终保持不变。使用 RestFul 服务非常容易。

再次与 Twitter 示例一样。使用 twitter api 的客户端不在同一台服务器上。因此,通过 HTTP 公开它是有意义的。但是,如果您没有这样的要求(客户端不在远程位置),那么通过 Web 服务公开您的数据是没有意义的。然后一个单独的应用程序将为您提供松散耦合,这对您来说应该足够好。在 HTTP 上公开数据也会对性能产生一些影响。

更新 2

我了解您尝试实施的方案,我认为它完全可以。他的意思是轻量级,从您的 WCF 服务中,他将与数据库进行交互,然后根据要求为每个操作和控制器发送轻量级 DTO。所以基本上你的 WCF 只会从你的类库中调用方法,会获取一些业务对象并将其转换回 DTO(根据你的操作来呈现 UI)并将其发送到控制器。

还要确保你为你的服务使用依赖注入,这样你就可以用模拟数据为你的控制器编写 NUnit 测试,因此不需要数据库来运行你的 NUnit

于 2012-08-03T06:59:30.000 回答
1

我的偏好是让服务层成为一个完全独立的应用程序,可以被许多应用程序使用。它使项目,尤其是大型项目,比在单个 Web 应用程序中创建服务层更容易扩展。

于 2012-08-03T06:53:16.470 回答
-1

很遗憾的告诉你。使用 WCF 效率较低。使用 WCF 的主要目的是让任何客户端应用程序都可以访问您的数据。不仅仅是网络应用程序。您可能还拥有 Silverlight 或 winform。WCF 与“A BIG”网络应用程序无关。

于 2012-08-03T07:25:50.260 回答