程序集替换和类继承

时间:2011-04-08 19:28:23

标签: c# wcf dll

名为Portal.WebServices.TaskListService的WCF服务使用代码隐藏文件TaskListService.svc.cs。在此文件中,声明一个名为TaskListService的类型,该类型继承自类型TaskListServiceBase。并实现一个名为ITaskListService的接口。所以:

TaskListService: TaskListServiceBase, ITaskListService

   ^                     ^                  ^   
   |                     |                  |
 application               separate assembly 

我想在网络服务器上部署TaskListService 一次,并将TaskListServiceBase和界面放入由单独的程序集中引用托管TaskListService的应用程序。因此,当我想添加,删除或更新Web服务中的功能时,我只需将新程序集复制到应用程序的bin文件夹中。

由于这在运行期间发生,我想知道这种做法是否存在任何处罚或警告(除了使用编译时常量等),或如果这种情况是甚至可能,或者是否有更好的做法。

所以基本上,我的问题是:我希望在不重新部署整个应用程序的情况下更新WCF服务的功能,只更新已更新的程序集

(是的,我觉得这里有点愚蠢)

2 个答案:

答案 0 :(得分:2)

另一个程序集中的接口和基类的分离是可能和正确的(Separated Interface是一种仅为接口描述此模式的模式,并且相同的模式适用于基类)。

关于部署,您可以这样做,因为程序集是由IIS进行阴影复制的。但是,一旦复制了新程序集,我假设您必须回收应用程序,以便加载新程序集。

我手动为Windows服务执行了此操作,该服务启用了启用了卷影复制的独立AppDomain,因此我可以远程更新程序集并强制重新启动服务。

答案 1 :(得分:1)

这是我遵循的一种做法,我知道没有任何缺点,只有好处。我更进一步,因为我不使用背后的代码。因此,在上面的示例中,TaskListService.cs将存在于ServiceImplementations程序集中,与ServiceContracts程序集分开。

这允许您根据需要将合同/实现分解为多个程序集(可能由域分隔)并单独更新它们。

相关问题