WCF 小型程序分步入门






4.45/5 (18投票s)
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 日:初始发布