65.9K
CodeProject 正在变化。 阅读更多。
Home

WCF 小型程序分步入门

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.45/5 (18投票s)

2009年6月3日

CPOL

5分钟阅读

viewsIcon

252799

WCF 小型程序分步入门

摘要

在这篇文章中,我将向您展示一个使用 WCF 的小型加法程序。阅读完这段代码后,读者将对 WCF 程序有一个清晰的基本理解。

引言

WCF (Windows Communication Framework) 是一种统一技术,它整合了以下技术:

  • NET Remoting
  • MSMQ
  • Web 服务
  • COM+

它基于 SOA(面向服务的架构)。

什么是终结点、契约、地址和绑定?

上述术语是 SOA 的核心。每个服务都必须公开一个或多个终结点,以便客户端可以访问该服务。终结点包含三个重要部分:在哪里、是什么以及如何。

契约(是什么)

契约是两个或多个方之间的协议。它定义了客户端如何与您的服务进行通信的协议。技术上,它描述了一个方法的参数和返回值。

地址(在哪里)

地址指示我们在哪里可以找到此服务。地址是一个 URL,指向服务的位置。

绑定(如何)

绑定决定了如何访问此终结点。它决定了通信如何进行。例如,您公开了可以通过 SOAP over HTTP 或 BINARY over TCP 访问的服务。因此,对于每种通信介质,都会创建两个绑定。

SOA 的重要原则?

WCF 基于 SOA。SOA 基于四个重要概念:

边界定义清晰

在 SOA 中,一切都是正式化的。使用服务的客户端不需要知道服务的实现方式。如果您看一些旧的通信方法,如 DCOM,服务器端的任何更改都会导致客户端也必须更改。因此,服务器和客户端的实现耦合非常紧密,需要在所有地方进行更改。在 SOA 中,规则是如果您进行增强,则不需要在客户端进行任何更改。基于 SOA 的应用程序只知道存在一个终结点、契约和绑定。

注意:为了简要说明终结点和契约,任何 SOA 服务都通过终结点公开。终结点定义了三个重要方面:是什么、在哪里和如何。

服务会演进

变化是自然规律,服务也会不断演进。在 SOA 中,服务可以进行版本控制,您可以将这些服务托管在新的终结点上。例如,您有一个名为“搜索门票(门票号)”的服务,它根据门票号提供详细信息,并公开在终结点“ep1”上。明天,您想让您的“搜索门票”服务更有用,通过增加一个选项,允许用户按乘客姓名进行搜索。因此,您只需声明一个新的终结点“ep2”,并带有服务“搜索门票(门票号,乘客姓名)”。这样,使用终结点 ep1 的客户端可以继续使用,而我们则在另一个终结点上,通过添加新的终结点 ep2 来演进我们的服务。

服务只共享模式和契约

服务使用模式来表示数据,使用契约来理解行为。它们不使用依赖语言的类型或类来理解数据和行为。XML 用于定义模式和契约。因此,环境之间没有过度的耦合。

服务兼容性基于策略

策略描述了系统的能力。根据策略,服务可以降级以匹配客户端的服务。例如,您的服务需要为主两类客户端托管,一类使用 Remoting 作为通信方法,另一类客户端使用 DCOM。理想的 SOA 服务可以根据它们各自的通信策略来满足这两类客户端。

代码片段

(服务/服务器端)

涉及的步骤

步骤 1:打开 VS2008,创建项目并选择“Windows 服务应用程序”,给您的项目任意命名。我将其命名为“MyService”。

步骤 2:您将看到解决方案窗口,在其中打开“IMyService.cs”。

在其中,您将看到 `[ServiceContract]` - 在此下方声明了您的接口名称。之后,您将看到 `[OperationContract]` - 您的函数契约应在此处定义。函数的实现将在“MyService.svc.cs”中定义,如下图所示。


步骤 3:打开“MyService.svc.cs”并在其中编写代码,就像我为我的“addfunction”编写代码一样。您可以在函数内部编写代码。下面显示了图片。

步骤 4:这是最重要的一步。在此,我们声明了终结点。在此内部,我们可以定义一个终结点,如下图所示。终结点是自动定义的。我们也可以通过编程来定义它。

步骤 5:保存项目并运行它。它将显示如下。复制浏览器地址栏中的地址。

代码片段

(客户端)

让服务器服务运行(上面的页面)。

步骤 1:在另一个 VS2008 中打开一个 Web 应用程序,右键单击解决方案名称,然后选择“添加服务引用”,会弹出一个窗口,将之前复制的链接粘贴到地址栏中,然后按 GO。然后服务将出现在服务部分,然后按 OK。服务引用将出现在解决方案资源管理器中,如下所示。

步骤 2:现在在默认页面上添加一个按钮,然后双击按钮,您将进入代码隐藏部分。在这里创建出现在解决方案资源管理器中的服务的对象。大致如下。

protected void Button1_Click(object sender, EventArgs e)
{
ServiceReference1.MyServiceClient cls = 
	new wcfProxycall.ServiceReference1.MyServiceClient();
cls.Open();
Response.Write( cls.addData(5, 4));
cls.Close();
}

步骤 3:现在保存项目并运行它。如果一切顺利,那么输出将是这样的。

希望这篇文章能帮助您理解和构建一个简单的 WCF 加法程序。

谢谢。

历史

  • 2009 年 6 月 3 日:初始发布
© . All rights reserved.