我正在研究一个由WinForms应用程序,一组XML Web Services和一组WCF服务组成的旧系统。每个应用程序都是“内部” 3层,因为业务和数据逻辑被分解到单独的程序集中,但是“外部”是整体的,因为所有3个程序集都由每个应用程序加载到各自的应用程序域中。
WinForms应用程序必须排在第一位,因为内部设计中充满了跨越层边界的全局静态数据。其中最明显的缺点是登录的用户信息。前端应立即“登录”用户,然后数据随后将在每个读取和写入的数据库上使用该信息。
在WinForms应用程序中,此“工作正常”,但在Web服务中却毫不奇怪地消失了,因为并行的传入请求阻塞了彼此的静态数据,并且非常糟糕的事情开始发生。到目前为止,我已经找到了许多用于在ASP.NET级别跟踪全局数据的选项,但是它们都依赖于ASP.NET特定对象,例如Session
或HttpContext
,我无法采用。这也需要在WinForms应用程序中工作。
是否还有其他类似于静态变量的选项可以通过我的努力改装到系统中(通过合理的努力;重构系统以进行正确设计目前不在范围内)?