Winforms服务器端由ASP.NET,WCF使用?

时间:2011-09-06 07:11:02

标签: asp.net winforms wcf

在哪里可以找到使用winforms应用服务器端的WCF服务的asp.net页面教程/示例?

由于

2 个答案:

答案 0 :(得分:1)

您提到了两个独立且独立的操作:

  1. 从ASP .Net应用程序中使用WCF服务
  2. 创建使用win表单应用程序的WCF服务
  3. 其中哪些是实际问题?将功能公开为服务将服务使用者与服务提供者分开。服务使用者(在您的情况下是ASP .Net应用程序)永远不需要知道服务提供者(WCF应用程序)正在幕后实现其功能。它需要知道的是服务公开的公共接口。

    <强>更新

    如果您不熟悉WCF,可用的视频教程here可能是一个很好的起点。它们向您展示了使用WCF公开和使用服务的基本知识。

    现在,与“使用winforms应用程序服务器端”相关。我假设你要做的是在服务中公开win表单应用程序中可用的一些功能。如果是这种情况,您需要做的就是在WCF应用程序中引用表单应用程序的exe(在Visual Studio中添加引用),并从那里调用所有需要的方法。

    从架构的角度来看,更简洁的方法是在单独的项目中将win表单应用程序的用户界面(UI)和业务逻辑(BL)分开,这将在编译后产生单独的二进制文件(对应于该文件的exe文件)用户界面和BL的dll)。然后,您只需要在WCF服务中引用BL对应的dll。

答案 1 :(得分:0)

好的,这就是你需要做的事情:

  1. 使用ASP.Net项目创建解决方案。 (项目 A
  2. 转到文件&gt;添加&gt;新建项目并添加Windows窗体应用程序。 (项目 B
  3. 所以,现在你的解决方案中有两个项目,

    1. 将项目 B 的参考添加到项目 A
    2. 在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;
          }
      }
      
    3. Global.asax&gt;中定义新主题。 Application_Start 调用 RunForm 方法并将结果存储在静态变量中。例如:

      public static MainForm mainForm;
      public void Application_Start()
      {
          new Thread(
              () => { mainForm = Program.RunForm(); }
              ).Start();
      }
      
    4. (不要忘记使用using B;
      (如果您没有在另一个线程中运行表单应用程序,则不会加载您的网站。)
      因此,现在您可以使用 Global.mainForm
      来访问主窗体 您可以定义一些在MainForm类中显示MessageBox的方法,并从网站上调用它们! (表格根本不需要显示)