在IIS中寄宿服务

通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定、配置服务、寄宿服务、通过添加服务引用的方式配置客户端并访问服务。我们对WCF的编程生命周期有了一个最基本的了解。

 

在前两篇中演示的例子,一定要力求背着做下来,包括源程序、配置文件都要背着一行行的手写下来,这样才能有深刻的体会。WCF的知识零散复杂,必须扎扎实实的学习和练习。如果你还没有做到了然于胸,现在赶紧翻回去把例子再做一遍。

 

今天让我们稍微深入一点,了解一些关于寄宿的新知识:在IIS中寄宿服务。

 

在前两篇的例子中,我们建立了一个控制台应用程序来作为服务的宿主,这种寄宿方式叫做"自托管",即WCF服务和应用程序是一体的。这种寄宿方式有一些优点,他需要最少的框架支持(只需要一个控制台应用程序就可以了,随处建立,随处运行),因此配置和使用都是最简单的,此外通过控制台程序还可以对WCF服务运行中发生的错误进行监视,在开发服务阶段,这种方式能提供调试的便利。

 

然而,如果作为最终产品部署,自托管的寄宿方式就不那么合适,应用程序相比框架(IIS、Windows服务等)是不稳定的,WCF与应用程序共享生命周期,应用程序关闭后WCF也会停止。还有许多特性诸如进程回收、空闲关闭等自托管都是不支持的。因此,为了使我们的WCF符合产品级别的要求,应该为其选择一个更稳定、伸缩性更好的宿主。

 

除了自托管,WCF还可以寄宿于IIS、Windows服务、Windows进程激活服务(WAS)中。比较流行的是在IIS和Windows进程激活服务寄宿。

 

在IIS中寄宿,需要IIS5.1或更高版本的支持,IIS会为我们管理ServiceHost(还记得他吗,看第一篇中的代码),同时为我们提供进程回收、空闲关闭、进程运行状况监视等特性支持,我们只需要把服务相关的文件按照一定的组织方法放入IIS的托管中(就像建立一个网站应用程序或虚拟目录),IIS会为我们管理一切。这种托管受到支持的系统很多,从Windows XP SP2 到 WIndows Server 2008,所以它非常流行。然而他也有缺点,它只能接受http协议的绑定,对于tcp、管道、MSMQ都是不支持的。

 

从IIS7开始,提供了所谓Windows进程激活服务(WAS) 的功能,如果把WCF寄存在WAS中,就可以支持所有的绑定协议(TCP等),像MSMQ这样的协议,在内网和.Net编程模型下有很大的性能优势,因此WAS应该会成为未来WCF寄宿的主要方式,但是IIS7要求Windows Vista以上版本的系统才能支持,他的普及可能尚需时日吧。

 

我们今天先学习在IIS中寄宿,记住,IIS寄宿只支持http协议的绑定。

 

实验环境在说明一下:

Windows 7 家庭高级版 SP1

IIS7

Visual Studio 2010 旗舰版 SP1

 

老老实实的学习,我们今天不借助IDE帮助建立的项目,完全手写一个寄宿于IIS的服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值