我仅将 WCF 用于数据服务(即应用程序内部并且非常精简,没有会话状态等),以保持我们的 Web 应用程序可扩展。
我们需要为当前一直传入的每个服务调用提供一些通用属性。每次调用都只有一个请求对象并不理想,因为除了这些公共属性之外,其余的都非常多样化,并且在开发过程中变化非常频繁。
目前我正在考虑使用自定义标头和 clientmessageinspector 来设置值。对于这种情况,这是最简单的推荐方法还是有更好的方法?
更多详情..
下面的红点是我不确定正确方法(或如何去做)的地方。
发送什么
发送的数据是一组简单的 id(3 或 4 个用于 userid、clientid 等)——所有这些 id 都会影响安全性和性能(在某些情况下,它决定了要访问的数据库)。
我们还将扩展它以获得更复杂的权限 - Windows 工作人员不需要。
调用者将是一个 Web 应用程序,其中这些来自会话对象,或者是一个 Windows 服务工作者,其中这些是手动填充的。
当前的想法
理想情况下,调用者工作流上的 getinstance 将使用会话对象自动填充这些属性,或者使用 Windows 服务调用(不同的构造函数?)更手动地填充这些属性。
然后,我们将确保这些参数始终可用,无需任何思考,也无需在整个代码中不断引用,以在调用它的每个函数上构造合约。我们目前有很多服务调用(由于应用程序的规模/复杂性,而不是由于糟糕的工程:)),因此随着复杂权限的扩展,以自我记录的方式执行规则变得有点困难。
从概念上讲,会话是您在应用程序中处理此问题的地方,但服务实际上只是一个数据访问层(具有视图映射、分页和来自存储库调用的最后调用安全性),因此我们不需要那种重复或复杂性,只是要包含在查询中的关键身份和权限字段。
问题
这感觉很像我们应该对调用的标头做的事情,因为我们总是需要这些字段,但是我有点不确定 set 和 get 应该在端点和客户端接口的生命周期中的什么位置。我也很高兴我错了。