WCF过多的就不介绍

时间:2021-10-30 05:36:46

WCF的话是相比拟较新的技术,里面的basichttpbinding可以跟以前的ws进行通信,并且担任了大部分的通信协议(几种http协议的实现以及net.TCP实现、msmp、定名管道等实现),此外寄宿的宿主可以是命令行控制台、IIS、桌面措施等。

WCF过多的就不介绍,通过项目例子来实现WCF和C#的通信。

创建新的项目解决方案:按照需要,,添加WCF,这里是在Web中添加的WCF。

WCF过多的就不介绍

添加完成会出产两个类:

WCF过多的就不介绍

Iservice1:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WebApplication1
{
// 注意: 使用“重构”菜单上的“重定名”命令,可以同时变动代码和配置文件中的接口名“IService1”。
[ServiceContract]
public interface IService1
{
[OperationContract]
void DoWork();
}
}

Service.svc.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WebApplication1
{
// 注意: 使用“重构”菜单上的“重定名”命令,可以同时变动代码、svc 和配置文件中的类名“Service1”。
// 注意: 为了启动 WCF 测试客户端以测试此处事,请在解决方案资源打点器中选择 Service1.svc 或 Service1.svc.cs,然后开始调试。
public class Service1 : IService1
{
public void DoWork()
{
}
}
}

这是类中的要领。

此中Web.config会自动出产一段代码

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>

一般情况需要改削这段代码内容:

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<bindings>
<basicHttpBinding>
<binding closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="65536" maxReceivedMessageSize="65536" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" messageEncoding="Text">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8733/MESService/" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMESService" contract="ServiceReferenceMES.IMESService" />
</client>
</system.serviceModel>

之后再例外新的措施添加处事引用:运行上个项目的措施,自动检索就会找到,之后再添加。

WCF过多的就不介绍

这样就可以实现两个项目的通信!!

通信道理,就是通过WCF生成的两个类进行编写要领,通过引用处事中的类,可以实现通信交互。

例如:

//打开处事
ServiceReferenceMES.MESServiceClient proman = new MESServiceClient();
string str = proman.TerminateProduct(MESOrder.ToString());//运行处事规矩法

要领本身界说!!!