WCF服务库的使用
fansa 2019-11-11 03:53:22 1. 添加新建项目-创建WCF服务库:MyWCFLibrary
观察默认的接口和实体类:
【1】服务契约:(ServiceContract)服务契约定义了远程访问对象和可供调用的方法。
【1】数据契约:(DataContract)数据契约则是服务端和客户端之间要传送的自定义数据类型。
好处:一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送。
特别注意:只有声明为DataContract的类型的对象可以被传送,且只有成员属性会被传递,成员方法不会被传递。WCF对声明为DataContract的类型提供更加细节的控制,可以把一个成员排除在序列化范围以外,也就是说,客户端程序不会获得被排除在外的成员的任何信息,包括定义和数据。
默认情况下:所有的成员属性都被排除在外,因此需要把每一个要传送的成员声明为DataMember
2. 添加我们需要的接口和实现类
【1】将默认的接口和实现类改为IStudentService和StudentService
【2】在接口中我们可以添加Student实体类,并标注数据契约,和对应的数据成员。
【3】编写接口实现类的中的各种方法。
3. 修改配置文件中的基地址:
<add baseAddress="http://localhost:8733/MyWCFLibrary/StudentService/" />
4. 添加新建项目-创建WCF宿主程序(这里我们依然选择控制台程序):MyWCFConsoleDeploy
【1】添加自定义服务库的引用,找到WCF服务库的DLL文件,添加即可。
【2】添加系统服务库模块引用,添加引用的时候,选择框架,找到System.ServiceModel,添加即可。
【3】在Main方法中,按照以前的方法,编写启动WCF服务的代码。(注意命名空间的引入)。
【4】生成后,用管理员身份启动。这时候会出现错误提示:
WCF 服务有零个应用程序(非基础结构)终结点....
解决方法:WCF服务的配置文件是在宿主项目里面,而不是WCF服务库里面。
把配置文件复制倒刚才添加的控制台程序中即可。运行成功。
5.添加新建项目-创建windows应用程序:CallMyWCF
调用方式和前面一样。需要注意添加WCF模块的引用