C#中怎样把webservice做成单例模式,做成单例模式怎样在其他程序中应用和调用?急求解决啊 分不多了
1个回答
展开全部
你好 很高兴为你解答
这个其实不难, 所谓单例模式就是只实例一个对象
以下是我做的一个例子
public class ProcessAgent
{
internal ProcessAgent(); //.ctor();
public string ProcessID { get; } //returns the process ID;
public void StartProcess(); //starts the process;
public int Status { get; } //process status, it can be Unstarted,
InProgress, Complete;
public string ConsumeResults(); //consumes the partial results;
}
--------------------------
public class ProcessAgentPool
{
private static ProcessAgentPool _me = new ProcessAgentPool();
//*unique* instance!!!
private ProcessAgentPool(); //private .ctor();
public static ProcessAgentPool GetInstance(); //this method should
return the *unique*
//ProcessAgentPool instance;
public GetProcessAgent(string processID); //returns the process with
the given ID;
public ProcessAgent CreateProcess(); //returns a new ProcessAgent instance;
}
--------------------------
public class Service : System.Web.Services.WebService
{
internal ProcessAgentPool pool;
public Service()
{
pool = ProcessAgentPool
}
[WebMethod]
public string StartProcess()
{
ProcessAgent p = pool.CreateProcess():
return p.ProcessID;
}
[WebMethod]
public int GetStatus(string processID)
{
ProcessAgent p = pool.GetProcessAgent(processID);
if (p!=null)
{
return p.Status;
}
else {
return -1;
}
}
[WebMethod]
public string GetResults(string processID)
{
ProcessAgent p = pool.GetProcessAgent(processID);
if (p!=null)
{
return p.ConsumeResults();
}
else
{
return "";
}
}
}
这是我以前做的例子, 你看看 不知道有无帮助
重点看第二个类, 里面的实例函数设成static类型的
这个其实不难, 所谓单例模式就是只实例一个对象
以下是我做的一个例子
public class ProcessAgent
{
internal ProcessAgent(); //.ctor();
public string ProcessID { get; } //returns the process ID;
public void StartProcess(); //starts the process;
public int Status { get; } //process status, it can be Unstarted,
InProgress, Complete;
public string ConsumeResults(); //consumes the partial results;
}
--------------------------
public class ProcessAgentPool
{
private static ProcessAgentPool _me = new ProcessAgentPool();
//*unique* instance!!!
private ProcessAgentPool(); //private .ctor();
public static ProcessAgentPool GetInstance(); //this method should
return the *unique*
//ProcessAgentPool instance;
public GetProcessAgent(string processID); //returns the process with
the given ID;
public ProcessAgent CreateProcess(); //returns a new ProcessAgent instance;
}
--------------------------
public class Service : System.Web.Services.WebService
{
internal ProcessAgentPool pool;
public Service()
{
pool = ProcessAgentPool
}
[WebMethod]
public string StartProcess()
{
ProcessAgent p = pool.CreateProcess():
return p.ProcessID;
}
[WebMethod]
public int GetStatus(string processID)
{
ProcessAgent p = pool.GetProcessAgent(processID);
if (p!=null)
{
return p.Status;
}
else {
return -1;
}
}
[WebMethod]
public string GetResults(string processID)
{
ProcessAgent p = pool.GetProcessAgent(processID);
if (p!=null)
{
return p.ConsumeResults();
}
else
{
return "";
}
}
}
这是我以前做的例子, 你看看 不知道有无帮助
重点看第二个类, 里面的实例函数设成static类型的
追问
单例知道是什么意思了,但是不知道在其他类中怎么调用这个单例类呢,又不能new一个实例,
就不能调用里面的方法,那如何通过GetInstance来得到那个唯一实例呢
public Service()
{
pool = ProcessAgentPool
}
是什么意思呢
追答
你好, 如果你想调用这个方法可以这样
ProcessAgentPool.GetInstance(); 就可以了, 不用实例
public Service()
{
pool = ProcessAgentPool
}
考的时候没考全
应该是这个
pool = ProcessAgentPool.GetInstance();
希望能有帮助
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询