【问题标题】:WCF service host in web serviceWeb 服务中的 WCF 服务主机
【发布时间】:2013-12-12 11:00:36
【问题描述】:

我的任务是为一个电影院创建一个分布式系统。要求很简单:有一个电影院预订系统的工作模型(因此我需要电影、房间、节目、预订和一个用于存储个人信息的类)、一个运行它的 Web 服务、一个 Web 界面和一个用于管理的桌面客户端.

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

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

当我尝试创建一个可以运行 ServerReference 的简单 Web 服务时,问题就出现了。由于我在开发过程中想到了一个类似桌面的环境,所以我就这样创建了它,只是意识到该解决方案不能简单地与 Web 服务一起使用。


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

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

(请注意:这个项目的目标是展示我们在本学期学习的有关 Web 服务、Web 设计、并行编程、正则表达式等方面的知识)

【问题讨论】:

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


    【解决方案1】:

    在我看来,对于何时使用哪种技术存在根本性的误解。

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

    所以你要做的是:

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

    【讨论】:

    • 没有误会,我非常清楚WCF和ASP.NET的所作所为。后者被添加到标签中,因为我正在创建一个用于控制所述服务的 Web 界面。但是让我详细介绍一下:我已经创建了五个要运行的 WCF 服务,以及一个根据请求启动它的 ServerReference(因此不需要实际的服务,它也可以手动运行)。我想创建一个 Web 服务来初始化和使用这个 ServerReference,但显然我必须使用 WCF
    • A ServerReference 不会“启动” WCF 服务。该服务由应用程序/Windows 服务或 IIS 中的ServiceHost 托管。
    • 您显然不知道我在说什么,所以我将尝试用这个简短的 600 个字符来解释:我为一组 ServiceHost 创建了一个控制器,称为“ServerReference”。现在,当我调用此 ServerReference 的“Start”方法时,它会初始化并打开 ServiceHosts。因此,我的术语“应请求启动的 ServerReference”。但没关系,我已经解决了我的问题,即使在你尝试纠正我的帮助不大之后。
    • 请记住 - 你是寻求帮助的人,而不是我。到目前为止,我已经能够让我的 WCF 服务运行。如果您无法表达您的问题以便其他人能够理解您,这显然不是我的问题,这显然是我的答案 - 无论它是否有效 - 是 only 答案你明白了。
    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2010-10-19
    相关资源
    最近更新 更多