开发多功能asp.net Web应用程序的策略

时间:2010-03-04 11:20:09

标签: asp.net vb.net visual-studio

我即将开始一个新项目,并希望就如何实施提出一些建议。

我需要一个Web应用程序,其中包含用于保留时间段的预订模块,以及一个时间管理模块,该模块将使员工能够进入/退出。

如果我正在编写时间管理模块的更新,我不希望通过发布包含这两个模块的新解决方案来中断预订引擎的可用性。

使事情变得更加困难,有一些共享功能,如普通用户,角色和安全性。

这是我得到的一个建议,听起来有点邋,,但可能有用。 编写一个“容器”Web应用程序,它基本上由一个框架和身份验证/安全功能组成。然后它有链接,将2个独立构建和发布的Web应用程序加载到框架中。

我可以看到,如果我想更新时间管理模块,我只需要单独构建和发布,其余的解决方案将“未触动”

有更好的选择吗?

4 个答案:

答案 0 :(得分:0)

除非我遗漏了某些内容,否则如果您运行ASPX.net(v2,3,无论如何),您可以动态替换ASPX文件(包括任何CLASS文件),WEB SERVER将自动“做正确的事情”。

因此,如果您将“模块”包装在类中,则可以随心所欲地替换这些文件,而不会损害其他类的功能(未修改。)

当我重读这个时,我确信我误解了你的目标......

答案 1 :(得分:0)

听起来像你想要的是Composite Application Block的某些内容,但是对于Web应用程序(CAB用于智能客户端应用程序)。

您要做的主要事情之一是尽可能减少和抽象模块之间的耦合。

将会话保留在数据库中将大大有助于您将模块动态加载到应用程序中。

这将允许您将时间管理放在一个服务器中,将预订引擎放在另一个服务器中。当您更新一个服务器的功能时,您只需更新一个服务器,而另一个服务器继续为用户提供服务。

答案 2 :(得分:0)

将两个类库添加到Web应用程序中。一个用于“预订模块”,一个用于“时间管理”模块。 编译完成后,每个模块都有一个DLL,并将它们放在Web应用程序的bin文件夹中(Visual Studio会这样做),然后你可以在需要时单独替换它们。

答案 3 :(得分:0)

也许你已经知道了: 如果被误解,会话是网络问题的核心。 Http是一种无连接协议,这意味着连接的两端都不关心通信的流程。只需一个请求即可获得一个响应。没有跟踪客户端Web应用程序如何工作?假设我们登录雅虎邮箱。单个请求(填充登录页面)被发送到服务器并且单个响应(收件箱页面)返回,那么如果我们想看到“草稿”文件夹怎么办? 为了激发状态到HTTP,添加了一个我们称之为“cookie”的简单解决方案。 cookies是将每个请求发送到指定服务器的简单文本。因此,在登录页面上,Yahoo服务器发送带有其他文本(cookie)的响应,该文本强制客户端(浏览器)记住它并随每个新请求一起发送。这样,Yahoo服务器(Web应用程序)可以跟踪请求的顺序。这就是为什么我们不应该在完成雅虎时关闭浏览器窗口并且应该注销。退出时,雅虎服务器会忘记该cookie,并且不接受任何带有该cookie的后续请求。所以因为雅虎无法找到我们关闭浏览器的“无连接”是一个好名字。 asp.net如何处理这个? 简单地说,asp.net对任何新请求使用“会话cookie”(没有cookie的请求),让你把变量放在服务器端的“Session”对象中。只要我们在同一个应用程序中,我们就可以使用相同的会话变量。 asp.net正在做的是为“会话ID”cookie和“会话变量”创建一个表。这对asp.net程序员来说是透明的。我们只是简单地在会话变量中加一个值:session(“Age”)= 19;并在我们需要时阅读。 ASP.NET以这种方式处理会话cookie:你创建一个会话变量(这里是“年龄”),所以asp.net应该跟踪这个请求;无论响应是什么,asp.net都会添加一个“会话cookie”。 “会话cookie”是一个唯一的文本,应该由该客户端发送后续请求直到它到期(通常在asp.net中为20分钟)。使用Firefox和“web developer”插件来查看和操作cookie。

相关概念:会话Cookie与永久性Cookie,Cookie属性(域名,到期日期......) 服务器如何处理cookie(保留在内存中,存储在数据库中......)