您的位置:首页 > 其它

WebService开发(三)Web Service Software Factory

2007-06-19 09:44 525 查看
想了解它是什么?http://www.codeplex.com/servicefactory这里来看。
想要用上它,先安装dotnetfx3.exe,GuidanceAutomationExtensions.msi,Web Service Software Factory - December 2006 (refresh).msi,微软有提供下载,搜一下就找到了。安装好后,新建项目如下


Guidance Packages下还有一个wcf的项目模板,恰好最近园子里有人在讲一系列WCF的文章。下一步



看一下生成的解决方案结构



作为WebService的最佳实践,微软建议我们解决方案大概就是这个样子了。主要我们还是看好它的引用关系,这对理解这个框架是最好的方法。
1.BusinessLogic(业务逻辑)引用BusinessEntities(业务实体)和DataAccess(数据访问层)。
2.ServiceContracts(服务契约)引用DataTypes(数据类型)。ServiceContracts这里通常是接口的定义,我们将[WebService],[WebMethod]应用于接口和接口内方法之上,让任何类继承接口并实现,.asms文件利用<%@ WebService Language="C#" Class="实现接口的类" %>来对外发布服务。来实现操作定义(服务契约)和操作实现的分离。
3.ServiceImplementation(服务实现)引用BusinessEntities(业务实体),BusinessLogic(业务逻辑),ServiceContracts(服务契约)和DataTypes(数据类型)这四个层。ServiceImplementation内利用“翻译器”将DataTypes(数据类型)和BusinessEntities(业务实体)这两层进行转换,以达到服务涉及类型的松耦合。还有一个原因就是业务层的的业务对象(DataType)可能和持久层(BusinessEntities)或者数据层(DataAccess)的存储大相径庭。
4.WebService.Host引用ServiceImplementation,对外发布服务。



它提供了一个叫EmployeeService的示例解决方案,大家可以研究一下。

经常在CSDN上看到有人问:怎么动态改变Web服务的调用地址?
呵呵,我知道UDDI是专门来搞这事的。不过,通过前几天的尝试,竟然没有成功~
有玩转的朋友一定告我一声啊!//via mail(at)eRay.cn



呵呵,在没有玩转UDDI之前又要解决问题,先自己搞了~

简单的思路:修改VS.NET生成的代理类~
打开做好Web服务引用的项目,然后“显示项目的所有文件”。在Web References文件夹下完全展开一个引用,可以看到References.cs这类的文件,这个就是代理类了。
打开之,找到构造函数,里边有对this.Url之类的语句。改之即可……
呵呵,将地址写到Config里,然后用ConfigurationSettings.AppSettings之类应该可以搞定。

呵呵,搞定搞定,完了不?没完。来左点点,右点点。
突然发现,每个Web Refrence都有一项叫“URL 行为”的属性,其值为“动态”、“静态”二取之一。
莫非彼动态就是此动态?设定之,然后看Config文件。
我冷,刚才那阵白忙了~

想起前天晚上看的《程充员》第11期,上边有句话说:.Net Framework已经将绝大部份的中小模块包含在期Namespace中,作为编程人员似乎更多的是要去学会使用这些东东,而不是自己重复造轮子造车……
是真的~

使用动态Web引用。

加入引用后,在解决方案管理器中选中引用,察看其属性,把URL行为一项从静态改为动态。此时解决方案里会多一个文件app.config,此为动态配置文件。在文件里写入:

<configuration>

<appSettings>

<add key="HelloWindowsApplication.www.ns.com.HService" value="http://localhost/hellowebservice/helloservice.asmx" >

</add>

</appSettings>

</configuration>

在程序(C#)里可这样读出数据:

HService Ser = new HService();

string appSer = ConfigurationSettings.AppSettings"HelloWindowsApplication.www.ns.com.HService"];

Ser.Url = appSer;

MessageBox.Show(Ser.HelloWorld(" String Trafered."));

更详细的请参阅MSDN
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: