WCF如何实际运作?

时间:2011-09-05 12:02:28

标签: c# wcf

我创建了一个C#应用程序,我希望将其拆分为服务器端和客户端端。客户端应该只有一个UI,服务器端应该管理逻辑和数据库。

但是,我不确定某些事情:我的应用程序应该被许多用户同时使用。如果我将我的应用程序移动到服务器,WCF是否会为每个登录用户创建另一个应用程序实例,或者所有用户只有一个应用程序实例?

如果第二种情况属实,那么如何为每个想要使用我的服务的用户创建单独的应用程序实例?我希望将我的应用程序逻辑保留在服务器上,使用户共享同一个数据库,同时使每个实例独立(因此多个用户可以使用具有不同数据的WCF服务)。像PHP一样的做法:相同的代码,每个用户的新代码实例,共享数据库。

2 个答案:

答案 0 :(得分:3)

默认情况下,WCF是无状态且无实体的。这基本上意味着任何呼叫都可以由任何客户发出,而不需要任何客户或呼叫彼此了解。

只要您在设计服务时牢记这一点,就可以了。考虑到您的服务目前是如何构建的,您期望发生什么问题?

答案 1 :(得分:2)

服务器端(由WCF处理)通常根本不会保持任何状态:所有方法调用都是自包含且相当原子的。例如,GetUsersAddOrder等。因此,该应用没有“实例”,事实上WCF服务并不知道它是使用它的特定应用。

这是有目的的:如果你想编写一个Web应用程序或简单的查询工具,它可以在WCF服务上使用这些相同的方法而不必是'app',或者在服务器上创建任何实例

WCF可以拥有具有长生命周期的对象,这些对象是有状态的,有点像远程处理,但如果您使用WCF遵循99.9%的其他设计模式,那么您将使用WCF作为Web服务。 / p>

编辑:根据您的评论的声音,您需要认真做一些有关客户端 - 服务器架构和WCF使用的深入阅读。从头开始用小东西,然后尝试将它应用到你当前的应用程序。