Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 程序集替换和类继承_C#_Wcf_Dll - Fatal编程技术网

C# 程序集替换和类继承

C# 程序集替换和类继承,c#,wcf,dll,C#,Wcf,Dll,名为Portal.WebServices.TaskListService的WCF服务使用代码隐藏文件TaskListService.svc.cs。在此文件中,声明一个名为TaskListService的类型,该类型继承自类型TaskListServiceBase。并实现名为ITaskListService的接口。因此: TaskListService: TaskListServiceBase, ITaskListService ^ ^

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

TaskListService: TaskListServiceBase, ITaskListService

   ^                     ^                  ^   
   |                     |                  |
 application               separate assembly 
我想在Web服务器上部署一次
TaskListService
,并将
TaskListServiceBase
和接口放入一个单独的程序集,该程序集由承载
TaskListService
的应用程序引用。因此,当我想在web服务中添加、删除或更新功能时,我只需将新程序集复制到应用程序的bin文件夹中

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

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


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

在另一个程序集中分离接口和基类是可能的,也是正确的(分离接口是一种仅针对接口的模式,同样的模式适用于基类)

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


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

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

这允许您在需要时将契约/实现分解为多个程序集(可能由域分隔),并独立更新它们