WCF基本概念&以winfrom为宿主发布WCF

WCF服务的发布以及调用 WCF服务的发布以及调用 最近突发想写博客的念想,觉得平时用到的东西应该及时记录下来,一方面做知识的总结,一方面后面自己查看方便,好记性不如烂笔头!好习惯应该坚持! 一、WCF介绍 Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。WCF本质上提供一个跨进程、跨机器、跨网络的服务... 阅读详情
1.WCF的基本概念  (ABC)

A 地址 Address  服务对外的地址  如: http://192.168.0.73:8888/WCFServer/UserService/ 

B 绑定 Binding  决定服务的细节   常用的有
  BasicHttpBinding 用http进行传输,数据格式为text/xml
  WSHttpBinding    比BasicHttpBinding更加安全
  NetTcpBinding    最适合做跨机器的安全绑定

C 契约 Contract 服务的定义(抽象) ,对应服务的接口 如: IUserService

 eg: WCF的一个配置(配置文件一般在新建contract时生成)

  <system.serviceModel>
    <bindings />
    <client />
    <services>
      <service name="WCFServer.Service1">
        <host>
          <baseAddresses>
            <add baseAddress="http://192.168.0.73:8888/WCFServer/Service1/"   />
          </baseAddresses>
        </host>
        <endpoint address=""  binding="wsHttpBinding" contract="WCFServer.IService1">
        </endpoint>
      </service>

      <service name="WCFServer.UserService">
        <host>
          <baseAddresses>
            <add baseAddress="http://192.168.0.73:8888/WCFServer/UserService/" />
          </baseAddresses>
        </host>
        <endpoint address="" binding="wsHttpBinding" contract="WCFServer.IUserService"></endpoint>
      </service>
     
    </services>
    <behaviors>

      <serviceBehaviors>
        <behavior>
          <!-- 为避免泄漏元数据信息,
          请在部署前将以下值设置为 false 并删除上面的元数据终结点  -->
          <serviceMetadata httpGetEnabled="True"/>
          <!-- 要接收故障异常详细信息以进行调试,
          请将以下值设置为 true。在部署前设置为 false 
            以避免泄漏异常信息-->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>



2. 以winform程序作为WCF的契约宿主

 1. 新建一个WCF服务库项目,在里面可以新建契约(IUserService)和实现(UserService),新建完成后会在app.config中生成 WCF的配置文件。
    
     
 2. winfrom程序启动WCF

 (1)新建winfom项目
  
namespace WCFServerHost
{
    public partial class Form1 : Form
    {
        
        private ServiceHost serviceHost = null;
        private ServiceHost userHost = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string btnText = button1.Text.Trim();
            if (btnText.Equals("启动服务"))
            {
                if (null == serviceHost && null == userHost)
                {
                 serviceHost = new ServiceHost(typeof(WCFServer.Service1));
                 userHost = new ServiceHost(typeof(WCFServer.UserService));  //定义了两个契约,都需要启动
                 //绑定 Binding
                 System.ServiceModel.Channels.Binding httpBinding = new BasicHttpBinding();
                 //终结点 EndPoint 
                 serviceHost.AddServiceEndpoint(typeof(WCFServer.IService1), httpBinding, "http://192.168.0.73:8888/WCFServer/MyService1/");
                 userHost.AddServiceEndpoint(typeof(WCFServer.IUserService), httpBinding, "http://192.168.0.73:8888/WCFServer/MyUserService/");
                 
                 serviceHost.Open(); //启动服务
                 userHost.Open();
                 button1.Text = "停止服务";
                 lblResult.Text = "服务已经启动";
                }
            }
            else {
                serviceHost.Close();
                userHost.Close();
                serviceHost = null;
                userHost = null;
                button1.Text = "启动服务";
                lblResult.Text = "服务已经停止";
            }
        }
    }
}

 (2) 将WCF服务库中的app.config 拷贝到winform项目下,并将WCF服务库中的app.config配置文件删除

 (3) 运行winFrom工程下的 bin/debug 下面的 exe(这一步是为了生成客户端代理,需要启动Host)  

3  客户端调用, 新建一个控制台程序,添加服务引用 ,如:http://192.168.0.73:8888/WCFServer/Service1/
     调用如下:

     
namespace WCFClient
{
    class Program
    {
        static void Main(string[] args)
        {
            WCFServer1.IService1 wcfServerClient = new WCFServer1.Service1Client("BasicHttpBinding_IService1");
            string result =  wcfServerClient.GetData(123);
            Console.WriteLine(result);

            UserService.IUserService userServiceClient = new UserService.UserServiceClient("BasicHttpBinding_IUserService");
            int userId = 0 ;
            int responseId = userServiceClient.CheckUser(out userId, "test", "123456");
            if(responseId==1){
                Console.WriteLine(userId);
            }
            Console.ReadLine();
        }
    }
}

     
   
     

C#中调用Windows系统服务exe程序的工具类与重启服务的流程 场景 使用C#编写的Windows服务程序,在Winform中进行调用。 常用工具类方法检测服务是否存在或者安装,获取服务状态,启动服务,停止服务的方法。 以在Winform中重启服务为例。 注: 博客主页:https://blog.youkuaiyun.com/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载 实现 新建工具类WinSe... 阅读详情

相关推荐

C# 命名管道通信 NamedPipe 进程间通信

C# NamedPipe 通信,管道通信。 目前还有些BUG ,但是用作程序间的数据通信,问题应该不大,建议用于 Json 通信。 做这玩意出来,起初想法是用作 winService 和 winform 的通信,可以通过winfrom 上的操作,来控制服务的运行配置文件什么的。 希望能对下载的人有用,欢迎大家点评~!

WinForm 和 Windows Service 通信 - 消息队列

如题,WinForm 和 Windows Service 通信,就是应用程序和系统服务通信,可以看成是进程间的通信。通信的方式有很多,这里只介绍通过消息队列(MessageQueue)方式。理论知识就不介绍了,直接介绍实例吧。 工程下载/Files/newspring/WindowsService.rar 一、建立工程 建立3个项目,其中, Common 为类库,包含错误日志...

519

C#的IIS发布WCF服务

C#的IIS发布WCF服务

循序渐进开发WinForm项目(6)--开发使用混合式Winform模块

1、Winform数据访问模式定义 传统的Winform程序模块:用于传统的数据库通讯获取数据,这种方式获取数据,方便快捷,可以用于常规的业务系统的场景,用于单机版软件或者基于局域网内的业务系统软件。 WCF的Winform程序模块:采用了WCF技术的分布式开发模式,系统能够通过远程的WCF服务获取数据,而不用直接和数据库相连,提高数据的安全性和可维护性,适用于互联网、局域网环境下的业务系统的...

weixin_33997389的博客 322

WCF发布-订阅(Pub/Sub)服务

简单的WCF发布-订阅(Pub/Sub)服务的例子

WCF三层实例及宿主

WCF三层实例及宿主

使用Winform程序作为WCF服务的宿主

如果我们自己新建一个WCF服务库,生成了dll文件。那我们需要创建一个宿主程序,在本例中我们新建一个Winform程序作为WCF的宿主程序。 在网上很多教程里对创建过程写的很模糊,错误也很多。本文是作者在尝试了网上各种失败方法之后,经过自己的改正,总结出的可以正确运行的解决方案。  1. 创建wcf服务库。 打开vs, 新建一个 WCF服务库。 什么都不用改,直接生成。 此时会在bi

basonson的博客 9687

WCF服务创建到发布

wcf是一个面向服务编程的综合分层架构。该架构的项层为服务模型层。 使用户用最少的时间和精力建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案。且能与已有系统兼容写作。

WCF服务实例,winfrom宿主

1,WCF服务很多时候跟winfrom配套使用,当然也有没有WCF的服务做后端处理的CS项目,这个跟设计相关,不多说了,一直在使用,有时间也得到搭一搭,做下轮子! 2,

积跬步,至千里 357

WCF_HTTP_和winfrom界面宿主通讯

WCF_HTTP_和winfrom界面宿主通讯 通过网页地址直接可以和wcf通讯 并把数据传给winfrom界面

(92页PPT)某大型集团信息化项目企业数字化转型ERP系统蓝图设计规划方案(附下载方式)

同时,外贸获利空间被严重挤压,必须从价格竞争转向品牌竞争。该方案针对某大型外贸集团在数字化时代的转型需求,提出了一套完整的ERP系统建设框架和实施路径,具有很高的专业参考价值。特别值得关注的是方案提出的"价值为先"指导思想,通过将企业价值图与信息系统建设紧密结合,确保IT投资直接支撑价值创造。同时,方案充分考虑了集团多元化、国际化的发展需求,设计了灵活可扩展的系统架构。总的来说,这份实施方案专业性强、内容全面、措施具体,既立足解决当前问题,又着眼未来发展需求,为大型集团企业的数字化转型提供了优秀范本。

AI_data_cloud的博客 1026

WCF学习(六)宿主

在选择运行服务的宿主时,WCF非常灵活。宿主可以是Windows服务、COM+应用程序、WAS或IIS、Windows应用程序,或简单的控制台应用程序。6.1自定义宿主自从自定义宿主开始。下面的示例代码列出了...

大糊涂虫 327

告别官方WebRTC的30G编译:我用libdatachannel给USB摄像头做了个轻量级网页监控

本文介绍了一种基于libdatachannel的轻量级WebRTC监控方案,通过USB摄像头实现实时视频推流。相比官方WebRTC库30GB的庞大编译体积,libdatachannel仅需几十MB,大幅简化了开发流程。文章详细讲解了从视频采集、FFmpeg编码到WebRTC传输的全过程,并提供了性能优化和部署方案,帮助开发者快速构建高效的网页监控系统。

weixin_29207533的博客 533

WCF 基于 WinForm 宿主 发布

ServiceHost Host = new ServiceHost(typeof(ServiceHTTP)); //绑定 System.ServiceModel.Channels.Binding httpBinding = new BasicHttpBinding(); //终结点 ...

weixin_33975951的博客 194

网络可视媒体的智能计算-胡事民

本文为胡事民教授在山大做报告的笔记,现场见下图: 可视媒体是承载视觉信息的媒体类型,如图像、视频等,它具有网络化、海量和无序涌现等特征。 可视媒体计算的研究意义 可视媒体作为一种信息承载的介质,是用来表达语义信息的。那么就有一种介质与信息之间相互转化的问题。转化方向正反两种,举个栗子说明一下: 1. 可视媒体→→\rightarrow语义信息:比如看到画面,理解其中发生的事件、各主题之...

gdymind的博客 2450

Vue3 - 详细实现流程图编辑器可视化平台示例代码,打造前端web网页流程图在线编辑绘制操作展示,vue3自定义绘制流程图在页面上画流程图功能(提供各种操作按钮及节点控件,界面美观交互式流程图插件)

vue3,绘制流程图,在线流程图制作,在vue3中实现流程图,vue3做一个制作流程图的功能,vue3流程图组件,vue3流程图,流程图绘制展示,vue3流程图可视化在线编辑源码,基于VUE3的在线绘制流程图工具,vue3+logicflow流程图,绘制动态流程图并自定义节点和线,vue使用logicFlow绘制流程图,生成各种流程图图形可连接点移除,基于Vue的流程图组件,工作流程图,流程编辑器,vue3流程组件,vue-flow绘制流程图,绘制流程图示例demo,vue3 logicflow流程图使用教

🏆 前端领域优质创作者 9965

HVAC温度采集实战:ADS122U04与STM32F469II高精度设计

在工业测量中,高精度温度采集常依赖ΔΣ ADC与参考基准的协同。ΔΣ ADC通过过采样和数字滤波实现高有效位数,结合内置PGA和IDAC,可直接处理RTD和热电偶的微弱信号。这种技术方案能显著提升系统精度和抗干扰能力,广泛应用于HVAC、过程控制等场景。针对PT100三线制测量,ADS122U04IPWR提供24位分辨率和集成激励源,配合STM32F469II的SPI与DMA,实现多通道轮询与工频抑制。硬件布局和校准策略是发挥性能的关键,本文分享从选型到量产的完整工程经验。

weixin_33768481的博客 327

基于YOLOv26的卫星遥感环境监测系统

本文介绍了一个基于YOLOv26的卫星遥感环境监测系统。该系统采用分层架构设计,包含数据采集、预处理、目标检测、图像分析、变化检测等核心模块。技术栈包括YOLOv26、PyTorch、OpenCV等深度学习框架和图像处理工具,以及GDAL、rasterio等地理信息处理库。系统支持获取多种卫星数据源(如Sentinel、Landsat、MODIS)的遥感图像,并进行时间序列分析。通过代码示例展示了数据采集模块的实现,包括卫星图像获取和模拟生成功能。该系统可应用于环境要素检测、变化监测等场景,为环境监测提供智

一键难忘的博客 934

WCF简单实例--用Winform启动和引用

以订票为例简单应用wcf程序,需要的朋友可以参考下

IT Tech 6398

【proteus】模拟串口和物理串口通讯

proteus提供了两种串口,一种是模拟的串口,还有一张是用软件仿真到硬件的物理串口。他们的区别就是:模拟串口只能在proteus内部进行通讯,但是物理可以通过软件映射到硬件上和单机或者串口软件通讯。 物理串口在元器件搜索COMPIM即可找到。 模拟串口在这里: PROTEUS仿真图: 物理串口COMPIM的设置: 模拟串口的设置: VSPD是一款虚拟串口软件,VSPD下载链接: 链接:https://pan.baidu.com/s/1AZygJCeWZfQTnxdCb_3TPg 提取码:12pm

阿蛋的博客 8933

Python爬虫实战:绕过Cloudflare反爬的最新技术与完整代码详解

在互联网数据采集领域,越来越多的网站开始部署CDN和安全防护服务,其中 Cloudflare 是最为广泛使用的防护方案之一。它不仅为网站提供DDoS防护,还能通过JS挑战、验证码和行为分析来识别并拦截爬虫。这给爬虫工程师带来了极大挑战——如何在不违反网站服务条款的情况下,实现有效的数据采集?本文将分享Python领域绕过Cloudflare反爬的最新技术方法,结合最新流行库与自动化浏览器,帮助你攻克这一难题。绕过Cloudflare反爬不是一蹴而就,需结合多技术、多策略,持续迭代。

2201_76125261的博客 2628

(1)WCF托管

wcf 托管方式有很多种,常见的托管方式,iis,was,控制台,winfrom等。 先创建一个wcf服务 IService1.cs using System.ServiceModel; namespace WcfServiceLibrary6 { [ServiceContract] public interface IService1 ...

ainixi7099的博客 210

⑤单细胞学习-cellchat组间通讯差异分析

参考:

hx2024的博客 1980

关于WCF服务寄宿的一些小细节

这两天在学习“李林峰的园子”上几篇关于WCF的帖子,在此首先感谢一下李林峰园主,你的帖子很适合我这样的初学者。 问题一:大小写敏感 在使用winfrom当宿主的时候,遇到一个BUG:服务“WcfLibrary.User”有零个应用程序(非基础结构)终结点。这可能是因为未找到应用程序的配置文件,或者在配置文件中未找到与服务名称匹配的服务元素,或者服务元素中未定义终结点。 这一定是配置...

aozhalan9920的博客 150

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

[转]Web Service与WCF区别

经常被问到Web Service与WCF有啥异同点。 就安全机制来说,认证方式就大不一样。 Web Servcie调用认证需要在SOAP头信息里加入用户名\口令信息,通常的做法是继承一个SoapHeader。每调用一次都要把用户名、口令传到服务端验证,效率低,代码烦,不安全。 WCF就牛B多了,支持多种认证技术:Windows认证、X509证书、Issued Tokens、用户名密码认证等。...

weixin_34293902的博客 102

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: MSMQ的使用
下一篇: test
sust2012
博客等级 码龄15年 46粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sust2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值