我正在使用WCF仅用于数据服务(即仅内部应用程序,非常简洁,没有会话状态等),以保持我们的Web应用程序可扩展性。我们需要为每个服务调用提供一些常规属性,目前我们一直在传递它们。对于每个调用都有一个单独的请求对象并不理想,因为除了这些公共属性之外,其余内容都非常不同,并且在开发过程中经常更改。
目前我正在考虑使用自定义标头和clientmessageinspector来设置值。对于这种情况,这是否是最简单的推荐方法,还是有更好的方法?
更多细节...
下面的红点是我不确定正确方法(或如何去做)的地方。
发送的内容
发送的数据是一组简单的ID(3个或4个,用于用户ID、客户端ID等)-所有这些ID都会影响安全性和性能(在某些情况下,它确定要连接的数据库)。我们还将扩展此功能以包含更复杂的权限-对于Windows工作程序不需要。
调用者将是Web应用程序,在其中这些对象从会话对象中获取,或者是Windows服务工作者,在其中这些对象是手动填充的。
现在的想法
理想情况下,调用者的工作流上的getinstance将自动用会话对象或使用Windows服务调用手动填充这些属性(不同的构造函数?)。然后,我们将确保这些参数始终可用,无需在每个调用它的功能上经常引用构建合同。由于应用程序的规模/复杂性而导致我们目前有很多服务调用(而不是由于错误工程学:)),因此随着权限的扩展变得越来越复杂,以自我说明的方式强制执行规则变得有些困难。
从概念上讲,会话是您在应用程序中处理此操作的地方,但服务实际上只是一个数据访问层(具有视图映射、页面化和最后一次从存储库调用的安全性),因此我们不需要那种重复或复杂性,只需要包括查询中的关键身份和权限字段。
问题
这感觉非常像我们应该在调用时使用标头进行的事情,因为我们总是需要这些字段,但我对设置和获取应位于端点和客户端接口的生命周期中的位置感到有些不确定。我也很高兴被证明是错的。
目前我正在考虑使用自定义标头和clientmessageinspector来设置值。对于这种情况,这是否是最简单的推荐方法,还是有更好的方法?
更多细节...
下面的红点是我不确定正确方法(或如何去做)的地方。
发送的内容
发送的数据是一组简单的ID(3个或4个,用于用户ID、客户端ID等)-所有这些ID都会影响安全性和性能(在某些情况下,它确定要连接的数据库)。我们还将扩展此功能以包含更复杂的权限-对于Windows工作程序不需要。
调用者将是Web应用程序,在其中这些对象从会话对象中获取,或者是Windows服务工作者,在其中这些对象是手动填充的。
现在的想法
理想情况下,调用者的工作流上的getinstance将自动用会话对象或使用Windows服务调用手动填充这些属性(不同的构造函数?)。然后,我们将确保这些参数始终可用,无需在每个调用它的功能上经常引用构建合同。由于应用程序的规模/复杂性而导致我们目前有很多服务调用(而不是由于错误工程学:)),因此随着权限的扩展变得越来越复杂,以自我说明的方式强制执行规则变得有些困难。
从概念上讲,会话是您在应用程序中处理此操作的地方,但服务实际上只是一个数据访问层(具有视图映射、页面化和最后一次从存储库调用的安全性),因此我们不需要那种重复或复杂性,只需要包括查询中的关键身份和权限字段。
问题
这感觉非常像我们应该在调用时使用标头进行的事情,因为我们总是需要这些字段,但我对设置和获取应位于端点和客户端接口的生命周期中的位置感到有些不确定。我也很高兴被证明是错的。