首页 > 其他分享 >Winform项目中纯代码创建WCF服务

Winform项目中纯代码创建WCF服务

时间:2024-04-18 09:59:30浏览次数:23  
标签:return string 中纯 WcfHost private WCF new public Winform

接口:

    [ServiceContract(CallbackContract = typeof(IViewCallback), SessionMode = SessionMode.Required)]
    public interface IViewService
    {
        [OperationContract]
        void ServiceTest();
    }

类:

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
    public class ViewService : IViewService
    {
        //在ViewLibary中的ViewManager中注册
        public event Action<ClientData> ServiceTestEvent;//用于客户端测试与服务端的WCF连接事件
        private ClientData GetClientData()
        {
            OperationContext context = OperationContext.Current;
            MessageProperties properties = context.IncomingMessageProperties;
            RemoteEndpointMessageProperty endpoint = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
            return new ClientData(endpoint.Address, endpoint.Port);
        }
       void IViewService.ServiceTest()
        {
            ClientData client = GetClientData();
            ServiceTestEvent?.Invoke(client);
        }    
    }  
    public class ClientData
    {
        private string _IP;
        private int _Port;
        public string IP { get { return _IP; } set { _IP = value; } }
        public int Port { get { return _Port; } set { _Port = value; } }

        public ClientData(string ip, int port)
        {
            _IP = ip;
            _Port = port;
        }
    }

参数定义:

private ServiceHost _WcfHost = null;
private ViewService _MainService = null;
private int _MetaPort = 58942;
private int _DataPort = 58946;
public ServiceHost WcfHost { get { return _WcfHost; } }
public ViewService MainService { get { return _MainService; } }
public int MetaPort { get { return _MetaPort; } }
public int DataPort { get { return _DataPort; } }

初始化服务端:

private void InitialHost()
{
    #region TCP
    //Uri tcpa = new Uri(string.Format("net.tcp://127.0.0.1:{0}/AGVS/ViewService/", DataPort));
    //_WpfHost = new ServiceHost(MainService, tcpa);
    //NetTcpBinding tcpb = new NetTcpBinding();
    //ServiceMetadataBehavior mBehave = new ServiceMetadataBehavior();
    //_WpfHost.Description.Behaviors.Add(mBehave);
    //_WpfHost.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
    //_WpfHost.AddServiceEndpoint(typeof(IViewService), tcpb, tcpa);
    #endregion
    #region HTTP
    Uri baseAddress = new Uri(string.Format("http://localhost:{0}/AGVS/ViewService/", MetaPort));            
    _WcfHost = new ServiceHost(MainService, baseAddress);//MainService用于处理客户端请求
    string tcpAddress = string.Format("net.tcp://127.0.0.1:{0}/AGVS/ViewService/", DataPort);
    NetTcpBinding tcpBinding = new NetTcpBinding();
    tcpBinding.Security.Mode = SecurityMode.None;
    ServiceMetadataBehavior mBehave = new ServiceMetadataBehavior();
    _WcfHost.Description.Behaviors.Add(mBehave);
    WcfHost.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
    WcfHost.AddServiceEndpoint(typeof(IViewService), tcpBinding, tcpAddress);
    #endregion
    ServiceDebugBehavior debugBehavior = WcfHost.Description.Behaviors.Find<ServiceDebugBehavior>();
    if (debugBehavior == null)
    {
        debugBehavior = new ServiceDebugBehavior();
        debugBehavior.IncludeExceptionDetailInFaults = true;
        WcfHost.Description.Behaviors.Add(debugBehavior);
    }
    else
    {
        debugBehavior.IncludeExceptionDetailInFaults = true;
    }
}

 启动:

private void Main()
{
    if (WcfHost.State == CommunicationState.Created)
    {
           try
           {
                WcfHost.Open();
           }
           catch (Exception ex)
           {
                Console.WriteLine(ex.Message);
           }
     }
}

 

标签:return,string,中纯,WcfHost,private,WCF,new,public,Winform
From: https://www.cnblogs.com/magicMaQaQ/p/18142796

相关文章

  • New!界面控件DevExpress WinForms v24.1预览版抢先体验
    DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!在之前的文章中(点击这里回顾>>),我们为大家介绍了DevE......
  • winform车牌识别源码(纯算法)
    车牌识别,本是图像领域中,非常成熟的一个应用,也是目前无处不在的停车场自动收费设备的技术基础。前言本文将使用c#语言,winform框架开发一个车牌识别系统M=,不借助任何框架,纯算法。效果  使用工具VisualStudio2019思路打开要识别的车牌对车牌进行去雾操作接着进......
  • 界面组件DevExpress WinForms v23.2 - 数据展示、UI模板功能全新升级
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!DevExpressWinForms控件日前正式发布了v23.2,此版......
  • 界面控件DevExpress WinForms/WPF v23.2 - 富文本编辑器支持内容控件
    众所周知内容控件是交互式UI元素(文本字段、下拉列表、日期选择器),用于在屏幕上输入和管理信息。内容控件通常在模板/表单中使用,以标准化文档格式和简化数据输入。DevExpress文字处理产品库(WordProcessingDocumentAPI、WinForm和WPF富文本编辑器)附带了内容控制支持(v23.2+)。具......
  • DevExpress WinForms中文教程 - 如何通过UI测试自动化增强应用可靠性?(二)
    DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!UI自动化测试利用特定的工具/框架来模拟用户与界面的......
  • 界面组件DevExpress WinForms v23.2 - 功能区、富文本编辑器功能升级
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!DevExpressWinForms控件日前正式发布了v23.2,此版......
  • Halcon的HWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI)
    Halcon的HSmartWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI)文章目录Halcon的HSmartWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI)一、引入hSmartWindowControl控件二、编写打开图像功能三、编写绘制ROI功能四、源程序下载Halcon的新版本中增加......
  • 往 VisualStudio 工具箱中添加 WPF/WinForms 控件的几种方式
    在使用VisualStudio开发WPF或WinForms应用时,打开UI文件的设计界面,我们可以从工具箱的控件列表中直接拖拽控件到界面上。通过这种方式,可以清晰的展示控件库中所有可用的控件,并且非常方便的将其添加到界面中。那么我们可以通过哪些方式将WPF/WinForms控件库中的控件添加到VisualS......
  • 【C#】关于WCF你需要知道的!
    虽然WCF(WindowsCommunicationFoundation)已经不在是C#的最新技术,但很多老项目依然在用WCF。这边文章会让你快速知道WCF相关的知识。1.环境以下是我的开发环境:VisualStudio2017Dotnetframework4.8 记得启动WindowsFeatures.   2.一个简单的WCF案例微......
  • DevExpress WinForms中文教程 - 如何通过UI测试自动化增强应用可靠性?(一)
    DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!UI自动化测试利用特定的工具/框架来模拟用户与界面的......