自托管(也做自承载)

    承载 WCF 服务最灵活、最便捷的方法就是进行自承载。要能够自承载服务,必须满足两个条件。第一,需要 WCF 运行时;第二,需要可以承载 ServiceHost 的托管 .NET 应用程序。您需要自己动手编写启动和停止宿主的代码。

什么时候使用自托管?

        当应用程序的各个组件之间需要相互通信,或者在一个本地环境中,客户端和事务的数量都十分受限是常使用自托管。对于企业级方案来说不应考虑自承载方式。自承载适用于企业项目的开发或演示阶段。此外,当您希望用户桌面应用程序进行相互通信或在点对点情况下,可以对服务进行自承载。

自承载的优点:

• 易用性:只需几行代码即可使服务运行。

• 灵活性:通过 ServiceHost<T> 的 Open() 和 Close() 方法,可以轻松控制服务的生存期。

• 易调试性:可以使用熟悉的调试方式对自承载环境中承载的 WCF 服务进行调试,而不必连接到单个应用程序来激活服务。

• 易部署性:通常,部署简单 Windows 应用程序与使用 xcopy 一样容易。您不必在服务器场和类似地方部署复杂的方案,即可部署简单的 Windows 应用程序来充当 WCF ServiceHost。

• 支持所有绑定和传输:自承载并不限制您仅能使用现有的绑定和传输技术。在 Windows XP 和 Windows Server 2003 上,IIS 限制您只能使用 HTTP。(备注:II6以下)

 下面是自承载的缺点:

•可用性受到限制:服务只有在应用程序运行时才能被访问。
•功能受到限制:自承载的应用程序在对高可用性、易管理性、可靠性、可恢复性、版本控制和部署方案的支持方面受到一定限制。至少,现有的 WCF 无法提供这些支持,因此在自承载的情况中,您必须自己实现这些功能;例如,默认情况下 IIS 提供了这些功能中几项。

下面是一个小例子

 1 using System.ServiceModel;
 2 
 3 namespace Halower.SelfHost
 4 {
 5     [ServiceContract(Namespace = "http://www.cnblogs.com/rohelm")]
 6     public interface ICalcuContract
 7     {
 8         [OperationContract]
 9         double Add(int x, int y);
10 
11         [OperationContract]
12         double Substrate(int x, int y);
13 
14         [OperationContract]
15         double Multiply(int x, int y);
16 
17         [OperationContract]
18         double Divide(int x, int y);
19     }
20 }
ICalcuContract

相关文章:

  • 2021-12-12
  • 2021-08-28
  • 2021-06-08
  • 2021-11-15
  • 2021-05-19
  • 2021-12-12
猜你喜欢
  • 2021-08-29
  • 2022-02-27
  • 2021-11-20
  • 2021-08-31
  • 2021-12-15
  • 2021-05-20
相关资源
相似解决方案