这个服务还没完善好,而且要十分完善要在实际的项目里添加相关操作,这里只谈思路。
公共框架要设计到全局应用,尽量方便设计师的开发和程序员详细逻辑调用。比如常见的web项目和winform项目,做个全局的上下文是非常必要的。在web项目(也叫轻客户端)和winform项目(重客户端)里获取运行目录的方式就不同,一般做个常用的判断,也非常必要。我这里的上下文对象采用系统缓存构架代替了。
项目是vb的需要C#的朋友可以加我msn: ouyanghanwen@hotmail.com
Imports System.Web
''' <summary>
''' 服务全局上下文buider对象
''' 开发者:欧阳寒玟
''' 个人网站:www.coldwin.org
''' 开发时间:2010-11-12
''' 修改日期:2010-11-12
''' </summary>
''' <remarks></remarks>
Public Class ServerSession(Of T)
Private Shared objBox As New Dictionary(Of String, IDocumentServer(Of T))
Private Shared logName As String = "log"
''' <summary>
''' 获取默认日志类
''' 日志保存在根目录的log/下
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Shared ReadOnly Property log As IDocumentServer(Of T)
Get
If Not objBox.ContainsKey(logName) Then
Dim logser As New TextLogServce()
objBox.Add(logName, logser)
Return logser
Else
Return objBox(logName)
End If
End Get
End Property
''' <summary>
''' 返回程序执行的根目录
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function AppPath() As String
If isWeb() Then
Return HttpContext.Current.Server.MapPath("/")
Else
Return ""
End If
End Function
''' <summary>
''' 是否是web项目
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function isWeb() As Boolean
Dim domain As AppDomain = AppDomain.CurrentDomain
Dim result As Boolean
If domain.ShadowCopyFiles Then
Try
result = (HttpContext.Current Is Nothing)
Catch ex As Exception
result = False
End Try
End If
Return result
End Function
End Class