【发布时间】:2009-11-28 07:06:24
【问题描述】:
我是 WCF 新手,我想知道是否可以在它自己的应用程序上创建 WCF 服务并将其托管在 IIS 上。然后另一个 ASP.NET 应用程序将使用它。到目前为止,我看到的所有示例在同一个 ASP.NET 解决方案中都有 WCF 服务。 如果是这样,您能否提供一些有关如何操作的提示?我想创建一个简单的示例,它根据 id 检索人的姓氏,然后从单独的 ASP.NET 应用程序中使用它。
谢谢。
【问题讨论】:
我是 WCF 新手,我想知道是否可以在它自己的应用程序上创建 WCF 服务并将其托管在 IIS 上。然后另一个 ASP.NET 应用程序将使用它。到目前为止,我看到的所有示例在同一个 ASP.NET 解决方案中都有 WCF 服务。 如果是这样,您能否提供一些有关如何操作的提示?我想创建一个简单的示例,它根据 id 检索人的姓氏,然后从单独的 ASP.NET 应用程序中使用它。
谢谢。
【问题讨论】:
是的,你可以让它“独立”——在 Visual Studio 中从 WCF 应用程序开始——然后这个应用程序将托管在 IIS 中。
下面是非常基础的 VS 模板。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace WcfService1
{
// NOTE: If you change the class name "Service1" here, you must also update the reference to "Service1" in Web.config and in the associated .svc file.
public class Service1 : IService1
{
public string GetLastName(int id)
{
//Do Data Access here
string surname = "SomeSurname";
return surname;
}
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
}
}
【讨论】:
是的,绝对是 - 您的 WCF 服务可以存在于类库程序集中,并且在 IIS 中托管它是小菜一碟。
然后另一个 ASP.NET 应用程序可以调用它并使用它的服务。完全没问题。
至于资源:MSDN WCF Developer Center 包含从初学者教程到文章和示例代码的所有内容。
另外,我建议您看看Pluralsight screen casts on WCF - 这是一个从“Creating your first WCF service”和“Creating your first WCF client”一直到相当高级主题的优秀系列。 Aaron Skonnard 在 10-15 分钟的截屏视频中很好地解释了所有内容 - 强烈推荐!
【讨论】:
答案是肯定的(koosk 和 marc_s 有很好的答案) - 但是这些示例的原因值得简短评论。
如果您查看示例,您可能会看到(至少)两个项目,一个用于示例服务,一个用于使用它的示例应用程序,理论上您可以将项目拉入单独的解决方案,启动服务,然后启动消费应用程序,它仍然可以工作(理论上,因为您需要在两个项目中获得正确的依赖项)。
在同一个解决方案中同时拥有客户端和服务的原因是,它使 Visual Studio 能够智能地帮助您进行调试,当您启动客户端时,它会自动为您启动服务,然后您应该能够如果需要,从客户端进入服务。
值得记住的是,一个解决方案可以包含任意数量的概念上不同的应用程序以及支持这些应用程序所需的库等,它只是一个包装器 - 一个应用程序(在这种情况下是服务或客户端)只是另一个项目解决方案。
【讨论】: