在哪里可以找到使用winforms应用服务器端的WCF服务的asp.net页面教程/示例?
由于
答案 0 :(得分:1)
您提到了两个独立且独立的操作:
其中哪些是实际问题?将功能公开为服务将服务使用者与服务提供者分开。服务使用者(在您的情况下是ASP .Net应用程序)永远不需要知道服务提供者(WCF应用程序)正在幕后实现其功能。它需要知道的是服务公开的公共接口。
<强>更新强>
如果您不熟悉WCF,可用的视频教程here可能是一个很好的起点。它们向您展示了使用WCF公开和使用服务的基本知识。
现在,与“使用winforms应用程序服务器端”相关。我假设你要做的是在服务中公开win表单应用程序中可用的一些功能。如果是这种情况,您需要做的就是在WCF应用程序中引用表单应用程序的exe(在Visual Studio中添加引用),并从那里调用所有需要的方法。
从架构的角度来看,更简洁的方法是在单独的项目中将win表单应用程序的用户界面(UI)和业务逻辑(BL)分开,这将在编译后产生单独的二进制文件(对应于该文件的exe文件)用户界面和BL的dll)。然后,您只需要在WCF服务中引用BL对应的dll。
答案 1 :(得分:0)
好的,这就是你需要做的事情:
所以,现在你的解决方案中有两个项目,
在Program.cs中添加一个返回项目 B 的主要形式的方法,这是一个例子:
public static class Program
{
public static MainForm mainForm;
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
mainForm = new MainForm();
Application.Run(mainForm);
}
public static MainForm RunForm()
{
Main();
return mainForm;
}
}
在 Global.asax&gt;中定义新主题。 Application_Start 调用 RunForm 方法并将结果存储在静态变量中。例如:
public static MainForm mainForm;
public void Application_Start()
{
new Thread(
() => { mainForm = Program.RunForm(); }
).Start();
}
(不要忘记使用using B;
)
(如果您没有在另一个线程中运行表单应用程序,则不会加载您的网站。)
因此,现在您可以使用 Global.mainForm
来访问主窗体
您可以定义一些在MainForm类中显示MessageBox的方法,并从网站上调用它们! (表格根本不需要显示)