实现一个基本的“Hello World”WCF 服务 (v4.5)
从头开始手动实现一个基本的 WCF 服务 (.NET 4.5),分步操作,附有清晰的说明和精确的屏幕截图。
以前关于 .NET 4.0/Visual Studio 2010 的文章
在我之前在 CodeProject.com 上发表的文章中,我解释了 Windows Communication Foundation (WCF)、LINQ、LINQ to SQL、Entity Framework 和 LINQ to Entities 的基本原理,包括
以上所有文章都基于 .NET 4.0/Visual Studio 2010,所以如果 .NET 4.0/Visual Studio 2010 对您适用,您可以打开并阅读以上任何一篇文章。对于那些正在学习 WCF/LINQ/EF 4.5 与 Visual Studio 2012 的人来说,以上文章已经过时。因此从现在开始,我将使用 .NET 4.5/Visual Studio 2012 更新这些文章。
关于 .NET 4.5/Visual Studio 2012 的新文章
以下文章是使用 .NET 4.5/Visual Studio 2012 更新的。我会在完成时更新链接。
- 实现一个基本的“Hello World”WCF 服务 (v4.5) -- 本文
- 使用 Entity Framework (v4.5) 实现 WCF 服务 -- 下一篇文章
- 使用 Entity Framework (v4.5) 控制 WCF 服务的并发
- 介绍 LINQ—语言集成查询 (v4.5)
- LINQ to SQL:基本概念和特性 (v4.5)
- LINQ to SQL:高级概念和特性 (v4.5)
- LINQ to Entities:基本概念和特性 (v4.5)
引言
在本文中,我们将从头开始实现一个基本的 WCF 4.5 服务。我们将通过以下步骤构建一个 HelloWorld WCF 服务
- 创建解决方案和项目
- 创建 WCF 服务契约接口
- 实现 WCF 服务
- 在 IIS Express 中宿主 WCF 服务
- 创建客户端应用程序以使用此 WCF 服务
创建 HelloWorld 解决方案和项目
在构建 WCF 服务之前,我们需要为我们的服务项目创建一个解决方案。我们还需要一个目录来保存所有文件。在本文中,我们将把项目源代码保存在 C:\SOAWithWCFandLINQ\Projects 目录中。我们为创建的每个解决方案设一个子文件夹,并且在此解决方案文件夹下,为每个项目设一个子文件夹。
对于这个 HelloWorld 解决方案,最终的目录结构如下图所示
您无需使用 Windows 资源管理器手动创建这些目录;当您创建解决方案和项目时,Visual Studio 会自动创建它们。
现在按照以下步骤创建我们的第一个解决方案和 HelloWorld 项目
1. 启动 Visual Studio 2012(您可以在本文中使用 Visual Studio Ultimate、Premium 或 Professional)。如果弹出“打开项目”对话框,请单击“取消”关闭它。
2. 转到菜单“文件 | 新建 | 项目”。将出现“新建项目”对话框窗口。
3. 从窗口的左侧,展开“已安装 | 其他项目类型”,然后选择“Visual Studio 解决方案”作为模板。从窗口的中间部分,选择“空白解决方案”。
4. 在窗口底部,将名称键入“HelloWorld”,将位置键入 C:\SOAWithWCFandLINQ\Projects\。请注意,您不应在位置中输入 HelloWorld,因为 Visual Studio 将自动为新解决方案创建一个文件夹。
5. 单击“确定”按钮关闭此窗口,您的屏幕应如下图所示,显示一个空解决方案。
6. 根据您的设置,布局可能有所不同。但您的“解决方案资源管理器”中仍应有一个空解决方案。如果您看不到“解决方案资源管理器”,请转到菜单“视图 | 解决方案资源管理器”或按 Ctrl + Alt + L 调出它。
7. 在“解决方案资源管理器”中,右键单击解决方案,然后从上下文菜单中选择“添加 | 新建项目…”。您也可以转到菜单“文件 | 添加 | 新建项目…”以获得相同的结果。下图显示了添加新项目的上下文菜单。
8. “添加 | 新建项目”窗口现在应该出现在您的屏幕上。在此窗口的左侧,选择“已安装 | Visual C#”作为模板,并在窗口的中间部分,选择“类库”。
9. 在窗口底部,将名称键入 HelloWorldService。将位置写入 C:\SOAWithWCFandLINQ\Projects\HelloWorld。同样,不要将 HelloWorldService 添加到位置,因为 Visual Studio 将为这个新项目创建一个子文件夹(Visual Studio 将使用解决方案文件夹作为添加到解决方案的所有新项目的默认基本文件夹)。
您可能已经注意到,Visual Studio 2012 中已经有一个 WCF 服务应用程序的模板(实际上 Visual Studio 中有几个 WCF 模板)。对于这个非常初级的示例,我们不会使用这个模板。相反,我们将自己创建所有内容,以了解每个步骤的目的。这是您理解和掌握这项新技术的绝佳方式。在我新书的下一章(有关详细信息,请参阅本文底部),我们将使用这个模板来创建项目,因此我们不需要手动输入大量代码。
Visual Studio 还会创建一个名为 Class1.cs 的空类文件。稍后,我们将把这个默认名称更改为一个更有意义的名称,并将其命名空间更改为我们自己的命名空间。
10. 现在您可以点击“确定”按钮关闭此窗口。
一旦您点击“确定”按钮,Visual Studio 将为您创建几个文件。第一个文件是项目文件。这是一个项目目录下的 XML 文件,名为 HelloWorldService.csproj。
在项目文件夹下会自动创建三个目录——一个用于存放二进制文件,一个用于存放对象文件,第三个用于存放项目属性文件。
屏幕上的窗口现在应该如下图所示
我们现在已经创建了一个新的解决方案和项目。接下来,我们将开发和构建这个服务。但在我们进一步进行之前,我们需要对这个项目做两件事
点击“解决方案资源管理器”工具栏上的“显示所有文件”按钮,如上一张图片所示。点击此按钮将显示硬盘上项目文件夹下的所有文件和目录,即使是那些未包含在项目中的项。请确保您没有选择解决方案项。否则您将看不到“显示所有文件”按钮。
最后,为了开发 WCF 服务,我们需要添加对 System.ServiceModel 程序集的引用。
- 在“解决方案资源管理器”窗口中,右键单击 HelloWorldService 项目,然后从上下文菜单中选择“添加引用…”。您也可以转到菜单项“项目 | 添加引用…”来完成此操作。“引用管理器”对话框窗口将出现在您的屏幕上。
- 从“程序集\框架”选项卡中勾选 System.ServiceModel,然后点击“确定”。现在,在“解决方案资源管理器”中,如果您展开 HelloWorldService 项目的引用,您将看到 System.ServiceModel 已被添加。另请注意,System.Xml.Linq 默认已添加。我们稍后在查询数据库时将使用它。
创建 HelloWorldService 服务契约接口
在上一节中,我们为 HelloWorld WCF 服务创建了解决方案和项目。从本节开始,我们将开始构建 HelloWorld WCF 服务。首先,我们需要创建服务契约接口。
- 在“解决方案资源管理器”中,右键单击 HelloWorldService 项目,然后从上下文菜单中选择“添加 | 新建项…”。以下“添加新项 - HelloWorldService”对话框窗口将出现在您的屏幕上。
- 在窗口左侧,选择“已安装 | Visual C# 项”作为模板,并在窗口中间部分选择“接口”。
- 在窗口底部,将名称从 Interface1.cs 更改为 IHelloWorldService.cs。
- 点击“添加”按钮。
现在,一个空的服务接口文件已添加到项目中,我们将使用它作为服务接口。
按照以下步骤进行自定义。
using System.ServiceModel;
[ServiceContract]
[OperationContract]
string GetMessage(string name);
文件 IHelloWorldService.cs 的最终内容应如下所示
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
namespace HelloWorldService
{
[ServiceContract]
public interface IHelloWorldService
{
[OperationContract]
string GetMessage(string name);
}
}
- 添加一个
using
语句 - 向接口添加 ServiceContract 属性。这将把该接口指定为 WCF 服务契约接口。
- 向接口添加一个 GetMessage 方法。此方法将字符串作为输入并返回另一个字符串作为结果。它还带有一个属性 OperationContract。
- 将接口改为 public。
实现 HelloWorldService 服务契约
现在我们已经定义了一个服务契约接口,我们需要实现它。为此,我们将重用 Visual Studio 之前为我们创建的空类文件,并修改它以使其成为我们服务的实现类。
在修改此文件之前,我们需要对其进行重命名。在“解决方案资源管理器”窗口中,右键单击文件 Class1.cs,从上下文菜单中选择“重命名”,并将其重命名为 HelloWorldService.cs。
Visual Studio 足够智能,可以更改所有相关的引用文件以使用这个新名称。您也可以选择该文件并在“属性”窗口中更改其名称。
接下来,按照以下步骤自定义此类文件。
public class HelloWorldService: IHelloWorldService
public string GetMessage(string name)
{
return "Hello world from " + name + "!";
}
- 打开文件 HelloWorldService.cs。
- 如果尚未完成,请将其名称从
Class1
更改为HelloWorldService
。 - 使其隐式实现
IHelloWorldService
。 - 向类中添加一个
GetMessage
方法。这是一个普通的 C# 方法,返回一个字符串。您也可以右键单击接口链接,然后选择“实现接口”以添加此方法的骨架。
文件 HelloWorldService.cs 的最终内容应如下所示
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloWorldService
{
public class HelloWorldService: IHelloWorldService
{
public String GetMessage(string name)
{
return "Hello world from " + name + "!";
}
}
}
现在,构建项目。如果没有构建错误,则意味着您已成功创建了第一个 WCF 服务。如果您看到编译错误,例如“ServiceModel”在命名空间“System”中不存在,这是因为您没有正确添加 System.ServiceModel
命名空间引用。请重新访问上一节以添加此引用,一切就绪。
接下来,我们将把这个 WCF 服务托管在一个环境中,并创建一个客户端应用程序来使用它。
在 IIS Express 中托管 WCF 服务
HelloWorldService 是一个类库。它必须托管在一个环境中,以便客户端应用程序可以访问它。在本节中,我们将学习如何使用 IIS Express 托管它。稍后,在下一章中,我们将讨论 WCF 服务的更多托管选项。
创建宿主应用程序
Visual Studio 2012 中有几种 WCF 服务的内置宿主应用程序。然而,在本节中,我们将手动创建宿主应用程序,以便您更好地了解宿主应用程序的内部结构。在后续章节中,我们将学习和使用内置宿主应用程序。
要在 IIS Express 中托管该库,我们需要向解决方案添加一个新网站。按照以下步骤创建此网站
如果找不到模板“ASP.NET 空网站”,请确保在上一步中选择了“新建网站”,而不是“新建项目”。
- 在“解决方案资源管理器”中,右键单击解决方案文件,然后从上下文菜单中选择“添加 | 新建网站…”(必须在“选项 | 项目和解决方案”中启用“始终显示解决方案”才能看到解决方案文件)。“添加新网站”对话框窗口应会弹出。
- 选择 Visual C# | ASP.NET 空网站作为模板,并将 Web 位置保留为文件系统。将网站名称从 WebSite1 更改为 C:\SOAWithWCFandLINQ\Projects\HelloWorld\HostDevServer,然后单击“确定”。
- 现在在“解决方案资源管理器”中,您的解决方案中多了一个项(HostDevServer)。它将如下图所示
- 接下来,我们需要将网站设置为启动项目。在“解决方案资源管理器”中,右键单击网站 HostDevServer,从上下文菜单中选择“设为启动项目”(或者您可以先从“解决方案资源管理器”中选择网站,然后选择菜单项“网站 | 设为启动项目”)。HostDevServer 网站应在“解决方案资源管理器”中突出显示,表示它现在是启动项目。
- 因为我们将从这个网站托管 HelloWorldService,所以我们需要向该网站添加一个 HelloWorldService 引用。在“解决方案资源管理器”中,右键单击网站 HostDevServer,然后从上下文菜单中选择“添加引用…”。应出现以下“引用管理器”对话框
- 在“引用管理器”对话框中,点击“解决方案\项目”选项卡,勾选 HelloWorldService 项目,然后点击“确定”。您会看到 HostDevServer 网站下创建了一个新目录 (bin),并且 HelloWorldService 项目的两个文件已复制到这个新目录中。稍后,当访问这个网站时,Web 服务器 (IIS Express) 将在这个 bin 目录中查找可执行代码。
测试宿主应用程序
现在我们可以在 IIS Express 中运行网站了。如果您通过按 Ctrl + F5 或选择菜单中的“调试 | 不调试启动…”来启动网站 HostDevServer,您将在浏览器中看到一个带有错误的空网站。
如果您按下 F5(或从菜单中选择“调试 | 开始调试”),您可能会看到一个对话框,显示“调试未启用”(如下所示)。选择“不调试运行”(等同于 Ctrl + F5)选项,然后点击“确定”按钮继续。我们将在下一章探讨 WCF 服务的调试选项。在此之前,我们将继续使用 Ctrl + F5 来不调试启动网站。
IIS Express
此时,您应该已经启动并运行了 HostDevServer 站点。这个站点实际上是在 IIS Express 中运行的。IIS Express 是一个轻量级的、独立的 IIS 版本,专为开发人员优化。这个 Web 服务器旨在仅供开发人员使用,并具有类似于 Internet Information Services (IIS) 服务器的功能。它也有一些限制,例如,它只支持 HTTP 和 HTTPS 协议。当在 Visual Studio 中创建新网站时,IIS Express 会自动为其分配一个端口。您可以在网站的属性中找到您的网站端口,如下图所示。
当您需要调试或单元测试 Web 项目时,通常会从 Visual Studio 内部启动 IIS Express。如果您确实需要从 Visual Studio 外部启动它,可以使用以下格式的命令行语句
C:\Program Files\IIS Express\iisexpress /path:c:\myapp\ /port:1054 /clr:v4.0
对于我们的网站,语句应该像这样
"C:\Program Files\IIS Express\iisexpress"
/path:C:\SOAwithWCFandLINQ\Projects\HelloWorld\HostDevServer /port:1054 /clr:v4.0
IISexpress.exe 位于您的程序文件目录下。在 x64 系统中,它应该位于您的程序文件 (x86) 目录下。
修改 web.config 文件
虽然我们现在可以启动网站,但它只是一个空网站。目前,它没有托管我们的 HelloWorldService。这是因为我们还没有指定这个网站应该托管哪个服务,或者这个网站的入口点。
要指定我们的网站将托管哪个服务,我们可以向网站添加一个 svc 文件。自 .NET 4.0 以来,我们还可以使用无文件 (svc-less) 激活服务来实现此目的。在本节中,我们将采用无文件方式来指定服务(请参阅我之前的文章,了解如何使用真实的 svc 文件完成此操作)。
现在让我们修改网站的 web.config 文件来托管我们的 HelloWorldService WCF 服务。打开网站的 web.config 文件并将其更改为如下所示
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
<a href="http://go.microsoft.com/fwlink/?LinkId=169433">http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.5"/>
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment >
<serviceActivations>
<add factory="System.ServiceModel.Activation.ServiceHostFactory"
relativeAddress="~/HostDevServer/HelloWorldService.svc"
service="HelloWorldService.HelloWorldService"/>
</serviceActivations>
</serviceHostingEnvironment>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
请注意,system.serviceModel
节点是我们添加到配置文件中的唯一代码。
httpGetEnabled
行为至关重要,因为我们希望其他应用程序能够通过 HTTP 找到此服务的元数据。如果没有元数据,客户端应用程序就无法生成代理,因此无法使用该服务。
以下是此配置文件中其他元素的简要说明
Configuration
是文件的根节点。system.serviceModel
是所有 WCF 服务特定设置的顶级节点。serviceHostingEnvironment
用于指定托管环境。serviceActivations
节点用于指定服务名称及其相对地址。此配置元素允许您定义映射到 WCF 服务类型的虚拟服务激活设置。这使得在 WAS/IIS 中托管的服务无需 .svc 文件即可激活。- 在
serviceBehaviors
节点中,您可以为服务定义特定的行为。在我们的示例中,我们指定了一个行为,该行为为服务启用了服务元数据交换。
启动宿主应用程序
现在,如果您通过按 Ctrl + F5 启动网站(不要使用 F5 或菜单选项“调试 | 开始调试”,直到我们稍后讨论这些内容),您仍将看到相同的空网站和相同的错误。但是此时,我们已在此网站中托管了一个服务,因此只需在地址后附加 HostDevServer/HelloWorldService.svc(它应该类似于 https://:1054/),您将获得此服务的描述,即如何获取此服务的 wsdl 文件以及如何创建客户端来使用此服务。您应该会看到一个类似于以下页面的页面。
现在,单击此页面上的 wsdl 链接,您将获得此服务的 wsdl xml 文件。wsdl 文件提供了此服务的所有契约信息。在下一节中,我们将使用此 wsdl 为我们的客户端应用程序生成代理。
创建客户端以使用 WCF 服务
现在我们已经成功创建并托管了一个 WCF 服务,我们需要一个客户端来使用该服务。我们将创建一个 C# 客户端应用程序来使用 HelloWorldService。
在本节中,我们将创建一个 Windows 控制台应用程序来调用 WCF 服务。本书后面,我们将创建其他类型的应用程序来测试我们的其他 WCF 服务,例如 WinForms 应用程序和 WPF 应用程序。
创建客户端应用程序项目
首先,我们需要创建一个控制台应用程序项目并将其添加到解决方案中。按照以下步骤创建控制台应用程序
- 在“解决方案资源管理器”中,右键单击解决方案 HelloWorld,然后从上下文菜单中选择“添加 | 新建项目…”。应出现“添加新项目”对话框窗口,如下图所示。
- 选择“Visual C# | 控制台应用程序”作为模板,将项目名称从默认值 ConsoleApplication1 更改为 HelloWorldClient,并将位置保留为 C:\SOAWithWCFandLINQ\Projects\HelloWorld。单击“确定”按钮。现在已创建新客户端项目并将其添加到解决方案中。
生成代理和配置文件
为了使用非 RESTful WCF 服务,客户端应用程序必须首先获取或生成代理类。
我们还需要一个配置文件来指定服务绑定、服务地址和契约等内容。
要生成这两个文件,我们可以使用命令行中的 svcutil.exe 工具。您可以按照以下步骤生成这两个文件
"C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe"
https://:1054/HostDevServer/HelloWorldService.svc?wsdl /out:HelloWorldServiceRef.cs /config:app.config
您将看到类似于以下屏幕截图所示的输出
- 通过按 Ctrl + F5 或选择菜单选项“调试 | 不调试启动”来启动服务(此时您的启动项目仍应为 HostDevServer;如果不是,您需要将其设置为启动项目)。
- 服务启动后,打开命令行窗口,将目录更改为客户端应用程序文件夹,然后使用以下语法运行命令行 svcutil.exe 工具(SvcUtil.exe 在您的机器上可能位于不同的目录中;您需要将 1054 替换为您的服务托管端口)
这里,生成了两个文件:一个用于代理 (HelloWorldServiceRef.cs),另一个用于配置 (app.config)。
如果您打开代理文件,您会看到服务的接口(IHelloWorldService
)在代理类中被模拟,并且创建了一个客户端类(HelloWorldServiceClient
)来实现此接口。在此客户端类内部,服务操作(GetMessage
)的实现只是一个将调用委托给操作的实际服务实现的包装器。
在配置文件中,您将看到 HelloWorldService 的定义,例如端点地址、绑定、超时设置和服务安全行为。
您也可以在运行时动态创建代理,或者通过 Channel Factory 而不是代理调用服务。请注意,如果您采用 Channel Factory 方法,您可能需要与客户端共享您的接口 DLL。
在后面的一章中,当我们将引用添加到 WCF 服务时(Visual Studio 实际上只是调用相同的命令行工具 SvcUtil.exe 来完成工作),我们将学习如何通过 Visual Studio 生成代理和配置文件。
自定义客户端应用程序
在运行客户端应用程序之前,我们还有一些工作要做。请按照以下步骤完成自定义
- 重新加载 app.config 文件。如果您之前打开过 app.config 文件,当您切换到 Visual Studio 2012 时,系统会要求您重新加载 app.config 文件,因为它已更改。点击“是”重新加载它。
- 将代理文件添加到项目中。在“解决方案资源管理器”中,首先选择 HelloWorldClient 项目,点击“显示所有文件”以显示所有文件,现在在 HelloWorldClient 文件夹下您将看到代理文件 (HelloWorldServiceRef.cs)。但是,此文件尚未包含在项目中。右键单击它并选择“包含在项目中”以将其包含在客户端项目中。您也可以使用菜单“项目 | 添加现有项…”(或上下文菜单“添加 | 现有项…”)将其添加到项目中。
- 添加对
System.ServiceModel
命名空间的引用。就像我们对项目 HelloWorldService 所做的那样,我们还需要添加对 WCF .NET System.ServiceModel 程序集的引用。从“解决方案资源管理器”中,右键单击 HelloWorldClient 项目,选择“添加引用…”,然后勾选 Assemblies\Framework\System.ServiceModel。然后点击“确定”按钮将引用添加到项目中。 - 修改 program.cs 以调用服务。在 program.cs 中,添加以下行以初始化服务客户端对象
HelloWorldServiceClient client = new HelloWorldServiceClient();
在 HelloWorldServiceClient
上使用默认构造函数意味着客户端运行时将在 app.config 文件中查找默认客户端终结点,该终结点由于使用 SvcUtil 而存在。
然后我们可以像对待其他任何对象一样调用它的方法
Console.WriteLine(client.GetMessage("Mike Liu"));
将您的姓名作为参数传递给 GetMessage
方法,以便它为您打印消息。
运行客户端应用程序
我们现在准备好运行这个客户端程序了。
首先,确保服务宿主应用程序 HostDevServer 已经启动。如果您之前停止了它,现在就启动它(您需要将 HostDevServer 设置为启动项目,并按 Ctrl + F5 以非调试模式启动它),或者您可以直接右键单击项目 HostDevServer 并从上下文菜单中选择“在浏览器中查看(Internet Explorer)”)。
然后,在“解决方案资源管理器”中,右键单击项目 HelloWorldClient,选择“设为启动项目”,然后按 Ctrl + F5 运行它。
您将看到如下图所示的输出
将服务应用程序设置为自动启动
因为我们知道在运行客户端程序之前必须启动服务宿主应用程序,所以我们可以对解决方案进行一些更改以自动化此任务,即在运行客户端程序之前立即自动启动服务。
为此,在“解决方案资源管理器”中,右键单击“解决方案”,从上下文菜单中选择“属性”,您将看到“解决方案‘HelloWorld’属性页”对话框。
在此页面上,首先选择“多个启动项目”选项按钮。然后将 HostDevServer 的操作更改为“不调试启动”。将 HelloWorldClient 更改为相同的操作。请注意,HostDevServer 必须在 HelloWorldClient 之上。如果不是,请使用箭头将其移到顶部。
现在要测试它,首先停止服务,然后按 Ctrl + F5。您会注意到 HostDevServer 先启动,然后客户端程序运行没有错误。
请注意,这仅在 Visual Studio IDE 内部有效。如果您从 Windows 资源管理器(C:\SOAWithWCFandLINQ\Projects\HelloWorld\HelloWorldClient\bin\Debug\HelloWorldClient.exe)启动客户端程序而未首先启动服务,服务将不会自动启动,您将收到错误消息,内容为“在 https://:1054/HostDevServer/HelloWorldService.svc 上没有终结点侦听”。
摘要
在本文中,我们实现了一个基本的 WCF 服务,在 IIS Express 中托管了它,并创建了一个命令行程序来引用和使用这个基本的 WCF 服务。此时,您应该对 WCF 服务的内部工作原理有透彻的理解。当您使用 Visual Studio WCF 模板或自动化指导包开发 WCF 服务时,这将使您受益。在下一章中,我们将探讨更多的托管选项并讨论如何调试 WCF 服务。
作者注
本文基于我的书籍《WCF 4.5 多层服务开发与实体框架 (第三版)》(ISBN: 1849687668 ISBN 13: 9781849687669)的第 2 章。本书是一本实践指南,教您如何使用 WCF 和实体框架在 Microsoft 平台上构建 SOA 应用程序。它已针对 VS2012 从我的前一本书《WCF 4.0 多层服务开发与 LINQ to Entities》进行了更新。
通过本书,您可以通过完成实际示例并将其应用于实际任务,学习如何掌握 WCF、LINQ、Entity Framework 和 LINQ to Entities 概念。它非常适合希望学习如何构建可扩展、强大、易于维护的 WCF 服务的初学者。本书示例代码丰富,解释清晰,示例有趣,并提供实用建议。这是一本真正为 C++ 和 C# 开发人员编写的实践书籍。
您无需拥有任何 WCF、LINQ、Entity Framework 或 LINQ to Entities 经验即可阅读本书。详细的说明和精确的屏幕截图将引导您完成探索 WCF、LINQ、Entity Framework 和 LINQ to Entities 新世界的整个过程。本书与其他 WCF、LINQ、Entity Framework 和 LINQ to Entities 书籍的区别在于,本书侧重于如何做,而不是为什么这样做,因此您不会被大量关于 WCF、LINQ、Entity Framework 和 LINQ to Entities 的信息所淹没。读完本书后,您会为自己以最直接的方式使用 WCF、LINQ、Entity Framework 和 LINQ to Entities 而感到自豪。
您可以从 Amazon 购买此书,或从出版商网站购买,地址为 http://www.packtpub.com/windows-communication-foundation-4-5-multi-layer-services-development-framework/book。
更新
我的书(适用于 Visual Studio 2013 / Windows 7 和 8.1)的最新版本刚刚出版。您可以直接从出版商的网站获取,地址为
或 从 Amazon 获取,地址为
http://www.amazon.com/Multi-Layer-Services-Development-Entity-Framework/dp/1784391042