WCF简单的创建以及发布
Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。
整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。
是Windows平台上开发分布式应用最佳的实践方式。它是.NET框架的一部分,由 .NET Framework3.0 开始引入,与Windows Presentation Foundation及Windows Workflow Foundation并行为新一代 Windows操作系统以及 WinFX 的三个重大应用程序开发类库
1.契约(ServiceContract):契约是属于一个服务公开的公共接口,定义了服务端公开的服务方法、使用的传输协议、可访问的地址以及传输的消息格式等。既契约告诉我们能干什么
2.地址(Address): 在WCF框架中,每个服务都具有唯一的地址,其他服务或者客户端通过这个地址可以访问到这个服务。
3.绑定(Binding): 绑定定义了服务与外部通信的方式。它由一组称为绑定元素的元素而构成,这些元素组合在一起形成通信基础结构。
4.终结点(EndPoint): 终结点是用来发送或接收消息(或同时执行这两种操作)的构造。一个终节点由三个要素组成,分别是:地址、绑定和契约。
宿主(Host):WCF服务必须承载于某个进程中。宿主是控制服务的生存期的应用程序。
1. Host in IIS
IIS 中需要配置相关知识点:https://www.cnblogs.com/GeneralKING/p/5969466.html
新建一个WcfTest的wcf程序,web.config配置如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior> <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false --> <serviceMetadata httpGetEnabled="true"/> <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> <services> <service name="WcfTest.Service1"> <endpoint address="" binding="basicHttpBinding" contract="WcfTest.IService1"> </endpoint> </service> </services> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <!-- 若要在调试过程中浏览 Web 应用程序根目录,请将下面的值设置为 True。 在部署之前将该值设置为 False 可避免泄露 Web 应用程序文件夹信息。 --> <directoryBrowse enabled="true"/> </system.webServer> </configuration>
发布到iis 通过浏览相应的svc文件即可 (http://142.31.41.38:8090/Service1.svc),调用的时候直接应用相关的服务地址即可
2. Host in Windows Console App
新建windows console 应用程序,添加对于WcfTest的引用,在program.cs文件中写入
ServiceHost host = new ServiceHost(typeof(WcfTest.Service1)); //将服务寄宿在宿主中 host.Open();//运行 Console.WriteLine("服务已启动、、、"); Console.ReadKey(true); host.Close();
添加App.config
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <compilation targetFramework="4.0" /> </system.web> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior> <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false --> <serviceMetadata httpGetEnabled="true"/> <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> <behavior name="behaviorConfiguration"> <serviceMetadata httpGetEnabled="true"/> <!--给behaviorConfiguration定义一些行为--> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> <services> <!--配置一个服务(注意:这里可以配置多个服务)--> <service name="WcfTest.Service1" behaviorConfiguration="behaviorConfiguration"> <!--name为服务的名称,behaviorConfiguration给这个服务定义一些行为--> <host> <baseAddresses> <add baseAddress="http://127.0.0.1:9090/"/> <!--服务的访问地址--> </baseAddresses> </host> <!--终结点由地址,绑定,契约--> <endpoint address="" binding="basicHttpBinding" contract="WcfTest.IService1"> </endpoint> </service> </services> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <!-- 若要在调试过程中浏览 Web 应用程序根目录,请将下面的值设置为 True。 在部署之前将该值设置为 False 可避免泄露 Web 应用程序文件夹信息。 --> <directoryBrowse enabled="true"/> </system.webServer> </configuration>
启动host程序:
调用该服务: 添加服务引用 地址 http://127.0.0.1:9090/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)