Web服务中的WCF服务主机

时间:2013-12-12 11:00:37

标签: c# asp.net .net wcf web-services

我的任务是学校项目,为电影院创建分布式系统。要求非常简单:拥有影院预订系统的工作模型(因此我需要电影,房间,演出,预订和用于存储个人信息的课程),运行它的Web服务,Web界面和用于管理的桌面客户端

我通过创建一个包含共享对象定义的共享库以及一个单独的服务器和客户端实现(ServerReference和ClientReference)来采用灵活的解决方案。它只是通过引用库编写,并创建特定Reference的实例(然后使用其Start()和Stop()方法)。

我使用WCF进行内置于控制器层的通信,使用Entity Framework进行数据存储。由于我想要一个动态服务,我不得不放弃客户端和服务器的标准WCF配置,而是以编程方式创建端点和绑定。

当我尝试创建一个可以运行ServerReference的简单Web服务时,出现了问题。由于我在开发过程中有一个像桌面一样的环境,我就是这样创建的,只是意识到解决方案不会简单地与Web服务一起工作。


现在我的问题如下:共享库是在4.5上构建的,但是这个版本抛弃了Web Service选项。我不想写另一个WCF服务来托管我创建的服务,它必须是严格本地的(基本上,我想要一个控制网站,以及一个可以创建ServerReference实例的Web服务,并根据请求,触发Start()或Stop()事件)。由于Web Service仅为3.5,因此我无法使用共享库(并且由于共享库在很大程度上取决于4.5 Entity Framework 6.0.1版,我也无法更改)。

我的问题是:创建此类服务的首选方式是什么?我真的应该只创建一个运行ServerReference的WCF服务,还是有更好的方法?

(请注意:这个项目的目标是展示我们在本学期学习的有关Web服务,网页设计,并行编程,regexp等的内容。)

1 个答案:

答案 0 :(得分:0)

对我来说,这听起来像是对使用哪种技术的基本误解。

  1. ASP.NET项目不是真正意义上的运行。 IIS调用某些代码/传递结果,但没有像桌面应用程序中那样正在运行 =>您无法在ASP.NET页面中托管 WCF服务。
  2. WCF也可用于创建Web服务,但这并不重要,因为ASP.NET页面将能够通过任何渠道与您的WCF服务进行通信。
  3. 您可以独立(例如Windows服务)或IIS内托管WCF服务。对于客户来说,无论你采用哪种方式,都是无关紧要的。
  4. ASP.NET项目不是 Web服务!
  5. 所以你要做的是:

    1. 创建WCF服务,执行您需要的所有操作,包括从/向数据库读取和写入内容
    2. 独立或在IIS
    3. 中托管此WCF服务
    4. 使用页面创建ASP.NET项目以管理电影,房间等。要更改或检索数据,请与WCF服务进行通信。