首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监视用户在.net应用程序中正在做什么,并触发应用程序功能更改

问监视用户在.net应用程序中正在做什么,并触发应用程序功能更改
EN

Stack Overflow用户
提问于 2010-05-17 03:19:27
回答 1查看 138关注 0票数 1

对于如何实现一个非常基本的机制,记录多个用户在应用程序中所做的事情,我需要一些建议。当另一个特性运行时,我需要更改应用程序,以限制功能。

用例示例用户可以正常编辑无薪记录。如果应用程序然后运行一个Payrun进程(Long),那么我需要更改应用程序的某些部分,以在短时间内限制功能(例如。将现有的无薪记录改为只读)。

对于如何在.net应用程序中做到这一点,有什么建议吗?

体系结构细节

  • VB.net

  • Windows
  • VS 2008/2010,
  • Server 2005/2005,
  • CSLA Framework3.8,

2008 Web服务器场

  • 900+User

F 217

该解决方案是一个只读的extranet web报告应用程序和内部(防火墙)数据输入和数据处理应用程序(数据的小单项和大批量导入)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-17 03:27:58

通常,我们在数据库层中处理这个问题,因为单独计算机上的各个应用程序并不直接了解彼此。应用程序可以在执行操作之前或定期检查数据库,或者底层存储过程可以使用某种简单的表和信号量的锁定来管理模式。

在单个服务器上的非分布式web应用程序上,您可以使用application对象很容易地处理这个问题,因为实际上只有一个应用程序,而且它可以相当容易地监视用户活动。

让我们假设您只有两种模式,并且所有事情都是在存储过程中处理的:

模式中一个用户在做某种投递操作和正常模式。让我们假设POSTING操作中的操作相对简单,为了清楚起见,我们将省略确保没有竞争条件的代码,并将所有代码内联,而不是封装到其他SPs或函数中:

代码语言:javascript
复制
CREATE PROCEDURE Post
AS
BEGIN
    UPDATE ModeControl
    SET Mode = 'POSTING'


    UPDATE Payments
    SET Whatever = whatever
    WHERE whatever

    UPDATE ModeControl
    SET Mode = 'NORMAL'
END

CREATE PROCEDURE IsPosting -- poll this in your app or before performing operations
AS
BEGIN
    IF EXISTS (SELECT * FROM ModeControl WHERE Model = 'POSTING')
        RETURN 1
    ELSE
        RETURN 0
END

CREATE PROCEDURE Normal1
AS
BEGIN
    -- Catches potential problems at database even though app shouldn't call in 'POSTING' more
    IF EXISTS (SELECT * FROM ModeControl WHERE Model = 'POSTING')
        RAISERROR...

    -- Perform Normal1 operations
END

CREATE PROCEDURE Normal2
AS
BEGIN
    IF EXISTS (SELECT * FROM ModeControl WHERE Model = 'POSTING')
        RAISERROR...

    -- Perform Normal2 operations
END

显然,如果您有一个完整的数据访问层和一些框架位,您可以装饰您的方法,并使用反射自动对您的方法进行分类,并检查不允许的模式,从而将其绑定到某种状态机类型的东西中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2846468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档