在我正在设置的自助服务终端系统中,所有自助服务终端都与中央服务器通信以检入并接收更新命令。我不使用Dual Http通信,因为我不能保证在客户端站点允许哪些端口,因此始终从Kiosk(客户端)启动通信。我目前有一个更新合同,它返回一个名为KioskAction的枚举,它代表了一个自助服务终端可以执行的所有命令(UpdateClient,SendLogFile,UpdateSetting等)。这工作得很好,但我想知道是否有一种更优雅的方式来处理这个问题。
Kiosk上的当前Update方法看起来像......
var kioskAction = KioskService.Update(kioskId);
switch(kioskAction)
{
case KioskAction.SendLogFile:
KioskService.SendLogFile(kioskId, GetLogFile());
break;
case KioskAction.UpdateSettings:
Setting[] settings = KioskService.GetKioskSettings(guid kioskId);
UpdateSettings(settings);
break;
...
}
我的问题是,为了添加更多的自助服务终端功能,我必须重建和重新部署自助服务终端应用程序和WCF服务。我正在考虑的是返回某种类型的脚本(可能是IronPython),它实际上包含执行操作所需的代码。然后我可以通过向系统添加新脚本来添加新功能,而无需对Kiosk应用程序或Kiosk服务进行任何更改。
显然存在一些安全问题,因为Kiosk客户端实际上运行的是Kiosk服务返回的任何代码,因此如果Kiosk服务受到威胁,所有的Kiosk也可以。还有其他我需要注意的事项,或者在朝着这个方向前进之前我应该考虑一下吗?
答案 0 :(得分:2)
您可能还会考虑Windows Workflow Foundation工作流程,而不是代码。如果您使用仅声明式工作流(有时称为“仅xoml”工作流),您应该能够将它们放在目录中,通常会激活它们。它旨在允许这一点。
答案 1 :(得分:0)
我看到了几个风险。