将应用程序服务传播为WCF服务

时间:2010-10-03 21:02:09

标签: c# .net wcf

我使用我的花哨类( ServiceDescription 类包含 ServiceMethod 描述的集合来描述我的应用服务,以简化)。

现在,我想将一个应用程序服务公开为一个WCF服务(一个合同)。当前的解决方案非常蹩脚 - 我有控制台应用程序为每个应用程序服务生成* .svc文件( ServiceDescription )。为一个 ServiceMethod 生成了一个方法(Operation)。

这很好但我想让它变得更好。可以使用T4模板进行改进,但我确信在WCF中还有更好的方法。

我仍然希望每个应用程序服务都有一个* .svc文件,但我不想生成方法(用于相应的应用程序服务方法)。 我确信必须有一些接口允许在运行时动态发现操作。也许 IContractBehavior ...

感谢。

EDIT1 : 我不想使用通用操作合同,因为我希望能够通过所有操作生成服务代理。

我确信如果我手动编写WCF服务和操作,那么WCF会使用反射来发现服务中的操作。 现在,我想自定义这一点,以便不使用反射,只需使用我的“操作发现代码”。

1 个答案:

答案 0 :(得分:0)

我认为在这种情况下静态代码生成没有任何问题。在我看来,这是一个比动态生成合同更好的解决方案。请记住,您的合同是您提供/提供服务托管特定集合操作的唯一证据。

我看到的关于动态方法的主要问题是关于版本控制和兼容性。如果所有内容都是动态生成的,您最终可能会透明地将重大更改推送到系统中,并对现有客户端产生一些问题。

如果您计划在应用程序服务中实施某些更改时有代码生成器,则会更容易记住您对服务所做的更改可能会产生巨大影响。

但是如果你真的想动态处理消息,可以使用通用操作契约(将Action属性设置为*),并手动将消息路由到应用程序服务。 请记住,您将无法从服务中生成包含可用操作列表的代理。

相关问题