设为首页 收藏本站
查看: 1458|回复: 0

[经验分享] wcf 学习笔记一 服务寄存到iis(个人写,非转载)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-13 14:28:17 | 显示全部楼层 |阅读模式
  这两有时间,想研究一下wcf ,通过博客园找了一个大神写的日记,跟着学习 http://www.iyunv.com/artech/tag/WCF/
  我是找到他最早的文章一步一步学习的地址:http://www.iyunv.com/artech/archive/2007/02/26/656901.html  我下面所讲的都是基于这篇文章的
  第一个把服务寄存在hosting的我就不在描述了,大神已经写的相当好,跟着做就可以了,我这里只是说一下把服务器寄存到iis上的问题
  大神把services寄存到iis的方案我不是很明白也没能实现,我抛开了他的想法,自己创建了一个新的项目如图:
DSC0000.jpg
  
  现在看一下解决方案的结构图:
DSC0001.jpg
  
  现在要做的就是用wcfServices寄存到iis上替代Sercice,新创建的 wcfServices 项目中会生成,svc文件 (在学习大神的文章时,我没有找到svc的创建方式,我用txt文件改后缀搞定的,只是项目一直没有达到预期效果,所以我也不确定我所做的是否正确)我们现在修改他里面的内容,在这之前我已经创建了一个服务契约 Contracts 和服务的实现 Services 所svc文件生成的东西我就不想用了,看代码
DSC0002.jpg
  
  我继承了 Services 服务实现类 CalculatorService  
  
  
  (如果你的配置总是提示:当前已禁用此服务的元数据发布。  从这里看起就可以了
  下一步就是关键了,我也顿在这半天,修改 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 name="wori">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="wori" name="WcfServices.Service1">
<endpoint binding="basicHttpBinding" contract="Contracts.ICalculator" address="" />
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
  
  
  这里说一下我对这个配置文件的理解

<behavior name="wori">  name里的值, 要跟 behaviorConfiguration="wori" 里的值保持一样

<service behaviorConfiguration="wori" name="WcfServices.Service1">  name :实现了服务契约的服务实现类 因为 WcfServices.Service1 服务实现类 继承了 Services.CalculatorService   所以这里我就写的 WcfServices.Service1 当然 你也可以写 Services.CalculatorService



<endpoint binding="basicHttpBinding" contract="Contracts.ICalculator" address="" />

  • 地址(Address):地址决定了服务的位置,解决了服务寻址的问题,《WCF技术剖析(卷1)》第2章提供了对地址和寻址机制的详细介绍;
  • 绑定(Binding):绑定实现了通信的所有细节,包括网络传输、消息编码,以及其他为实现某种功能(比如安全、可靠传输、事务等)对消息进行的相应处理。WCF中具有一系列的系统定义绑定,比如BasicHttpBinding、WsHttpBinding、NetTcpBinding等,《WCF技术剖析(卷1)》第3章提供对绑定的详细介绍;
  • 契约(Contract):契约是对服务操作的抽象,也是对消息交换模式以及消息结构的定义。《WCF技术剖析(卷1)》第4章提供对服务契约的详细介绍。

因为我刚刚没有理解Binding 所有这里还是刚开始的wcHttpBinding 这决定了他到底用什么协议来传递。具体能填写什么,看官方地址:http://msdn.microsoft.com/zh-cn/library/ms731399
左侧是所有可填写值,具体代表着什么,可以自己进看一下

上面配置完成后就可以把WcfServices 部署到iis上了,这里可以用vs的部署 ,右键- 》 属性 -》 web 点击创建虚拟目录
DSC0003.jpg



至于client 这面就回到了 http://www.iyunv.com/artech/archive/2007/02/26/656901.html  第五步
最后client中的代码如下:


using (ChannelFactory<ICalculator> casess = new ChannelFactory<ICalculator>(new BasicHttpBinding(), "http://localhost/WcfServices/Service1.svc"))
{
ICalculator proxy = casess.CreateChannel();
using (proxy as IDisposable)
{
Console.WriteLine("x + y = {2} when x = {0} and y = {1}", 1, 2, proxy.Add(1, 2));
Console.WriteLine("x - y = {2} when x = {0} and y = {1}", 1, 2, proxy.Subtract(1, 2));
Console.WriteLine("x * y = {2} when x = {0} and y = {1}", 1, 2, proxy.Multiply(1, 2));
Console.WriteLine("x / y = {2} when x = {0} and y = {1}", 1, 2, proxy.Divide(1, 2));
}
}
  



  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-98560-1-1.html 上篇帖子: IIS 500错误的解决方法 下篇帖子: IIS搜索引擎优化工具包
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表