基于.NET的WebService的实现和WCF的实现
1.新建一个MVC web项目。
2.点击项目,【右键】→【添加】→【新建项】

3.点击【Web】→【Web服务】

4.恭喜,Web Service已经新建成功,里面的方法就可以参考着根据自己的需要进行修改了,是不是很简单。

5.Web Serice建成之后当然是开始调用了。在【引用】上【右键】,添加【服务引用】

6.开始引用。

7.恭喜服务已经引用成功。

再看配置文件,会多出一些代码,这些都是自动生成的,可以看看理解理解。

8.开始在程序中调用方法了

9.到此为止Web Service的建立到调用已经全部完成。
10.新建WCF与Web Service基本上是一样的,下面直图解不在介绍。
点击项目,【右键】→【添加】→【新建项】→【Web】→【WCF服务】


11.WCF建成之后当然是开始调用了。在【引用】上【右键】,添加【服务引用】,以后过程即使一模一样的了。

12.WCF和Web Service已经建立成功,那么如何供外部访问呢,当时是发布了,发布在IIS就可以,和发布网站是一样的。
WCF控制台应用程序例子

上面这是个简单的架构图。Iservice大家都有的功能的接口(契约),IUserService针对不同的类定义不同的接口,
AbstractService实现IService的公共方法,Uservice实现自己的方法,也可以重写集成的方法。
下面是分层,Web层,大家可以当做不存在,哈哈。

下面是IService层
using System;
using System.Collections.Generic;
using System.ServiceModel; namespace IServiceClassLibrary
{
[ServiceContract]
public interface IService<TModel> : IDisposable where TModel : new()
{
[OperationContract]
string Add(TModel tModel); [OperationContract]
string Delete(int id); [OperationContract]
string Edit(TModel tModel); [OperationContract]
TModel GetModel(int id); [OperationContract]
IEnumerable<TModel> GetAll();
}
}
using System;
using System.Runtime.Serialization; namespace IServiceClassLibrary
{
[DataContract]
public class UserData
{
[DataMember]
public int UserID { get; set; } [DataMember]
public string UserName { get; set; } [DataMember]
public string Password { get; set; } [DataMember]
public string Discribe { get; set; } [DataMember]
public DateTime SubmitTime { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.ServiceModel; namespace IServiceClassLibrary
{
[ServiceContract]
public interface IUserService : IService<UserData>
{
[OperationContract]
IDictionary<int, string> GetUserDict();
}
}
下面是Service层
using IServiceClassLibrary;
using System;
using System.Collections.Generic; namespace ServiceClassLibrary
{
public abstract class AbstractService<TModel> : IService<TModel> where TModel : new()
{
public virtual string Add(TModel tModel)
{
//throw new NotImplementedException();
return "Add";
} public virtual string Delete(int id)
{
//throw new NotImplementedException();
return "Delete";
} public virtual string Edit(TModel tModel)
{
//throw new NotImplementedException();
return "Edit";
} public virtual TModel GetModel(int id)
{
TModel tModel = new TModel();
return tModel;
} public virtual IEnumerable<TModel> GetAll()
{
IList<TModel> tModels = new List<TModel>();
return tModels;
} public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
} protected virtual void Dispose(bool dispose)
{
if (dispose)
{
//CleanUp managed objects by calling thier
}
}
}
}
using IServiceClassLibrary;
using System.Collections.Generic; namespace ServiceClassLibrary
{
public class UserService : AbstractService<UserData>, IUserService
{
public IDictionary<int, string> GetUserDict()
{
IDictionary<int, string> keyValue = new Dictionary<int, string>();
keyValue.Add(, "test");
return keyValue;
} protected override void Dispose(bool dispose)
{
if (dispose)
{
//CleanUp managed objects by calling thier
}
}
}
}
下面是Server层,这层需要配置了,【新建】→【控制台应用程序】建好之后,【添加】→【新建项】→【WCF 服务】,建号之后,生成的两个文件可以删去了,
查看配置信息,对配置进行修改就可以了,懒人模式,高效准确。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="ServiceClassLibrary.UserService">
<endpoint address="" binding="basicHttpBinding" contract="IServiceClassLibrary.IUserService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>
using IServiceClassLibrary;
using ServiceClassLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks; namespace WCFServer
{
class Program
{
static void Main(string[] args)
{
using (ServiceHost host = new ServiceHost(typeof(UserService)))
{
host.AddServiceEndpoint(typeof(IUserService),
new BasicHttpBinding(),
new Uri("http://localhost:8733/ServiceClassLibrary/UserService/"));
if (host.State != CommunicationState.Opening)
{
host.Open();
}
Console.WriteLine("服务已经启动!");
Console.ReadLine();
}
}
}
}
下面是客服端
using IServiceClassLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks; namespace WCFClient
{
class Program
{
static void Main(string[] args)
{
EndpointAddress ea = new EndpointAddress("http://localhost:8733/ServiceClassLibrary/UserService/");
IUserService proxy = ChannelFactory<IUserService>.CreateChannel(new BasicHttpBinding(), ea);
Console.WriteLine(proxy.Delete());
Console.WriteLine(proxy.GetUserDict().First());
Console.ReadLine();
}
}
}
OK,WCF程序已经建立完成,先启动Server,再启动Client,程序正常运行。
如果遇到下面的问题,请以管理员身份运行就可以了。

其他的WCF文章
1. WCF入门
2. 我的第一个WCF程序
4. 基于.NET的WebService的实现和WCF的实现
基于.NET的WebService的实现和WCF的实现的更多相关文章
- 基于soapUI构建WebService测试框架
基于soapUI构建WebService测试框架 http://www.docin.com/p-775523285.html
- 基于Jws的WebService项目
基于Jws的WebService项目 1.服务器端建立 1.1.创建接口 [java] view plaincopy @WebService public interface IWebServi ...
- 【转】构建基于CXF的WebService服务
构建基于CXF的WebService服务 Apache CXF = Celtix+ XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF.C ...
- python发布及调用基于SOAP的webservice
现如今面向服务(SOA)的架构设计已经成为主流,把公用的服务打包成一个个webservice供各方调用是一种非常常用的做法,而应用最广泛的则是基于SOAP协议和wsdl的webservice.本文讲解 ...
- 基于JAX-WS的webService开发实例
最近因为工作原因接触到webService,所以记录下开发中碰到的问题,方便自己以后复习,顺便发扬一下开源精神.刚刚接触webServie如果有什么错误欢迎大家指正. 本地环境:myEclipse10 ...
- 基于PI的Webservice发布实例
[转自http://blog.csdn.net/yin_chuan_lang/article/details/6706816] 最近的项目中,接口较多,而Webservice技术是主要实现方式之一.下 ...
- Myeclipse8.5上基于JAX-WS开发WebService
1.JAX-WS介绍 JAX-WS规范是一组XML web services的JAVA API. 2.开发步骤 基于JAX-WS的WebService开发步骤如下: 2.1 新建一个Web Servi ...
- 使用sproxy.exe访问基于soap的webservice
使用vc访问基于soap的webservice有多种方法,其中有一种是使用atlsoap,关于这个可以搜索sproxy.exe文章,不在这介绍(主要是我的写作能力太差).我写这个日记主要是项记录访问w ...
- PHP基于SOAP实现webservice
简单对象访问协议(SOAP)是一种轻量的.简单的.基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息. SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( H ...
随机推荐
- 【转】nginx服务器安装及配置文件详解
原文:http://seanlook.com/2015/05/17/nginx-install-and-config/ nginx服务器安装及配置文件详解 nginx在工作中已经有好几个环境在使用了, ...
- ASP.net 探针
<%@ Page Language="JScript" ContentType="text/html" ResponseEncoding="gb ...
- Ubuntu Qt arm-linux-androideabi-gcc: Command not found
:-1: error: /opt/Qt/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm- ...
- Operator overloading
By defining other special methods, you can specify the behavior of operators on user-defined types. ...
- ORA-01810: 格式代码出现两次
今天在修改SQL语句的时候遇到这个小问题,提示的还是比较明显的,当然解决之道我是从百度上摘取的! 错误语句段:AND V.UPLOAD_DATE <=TO_DATE ('2013-11-11 2 ...
- NOIP2004 虫食算
描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子:43#9865#045+ 8468#6633= 44445506678其中#号代表 ...
- C#之泛型
泛型是C# 2.0版本才有的语言特性,是具有参数类型占位符的类.结构.接口和方法.这些占位符是类.结构.接口和方法所存储或使用的一个或多个占位符.简单来说,就是变量类型的参数化. 以下是详细demo: ...
- java基础回顾(六)——WeakReference、SoftReference
在Java里, 当一个对象o被创建时, 它被放在Heap里. 当GC运行的时候, 如果发现没有任何引用指向o, o就会被回收以腾出内存空间. 或者换句话说, 一个对象被回收, 必须满足两个条件: 1) ...
- ios项目记录
1,如何隐藏状态栏 在基类中重载UIViewController.h中的这个方法 - (BOOL)prefersStatusBarHidden { // iOS7后,[[UIApplication s ...
- .Net 乱序方法
前两天开发一个奇葩的功能,突然间想到了用打乱顺序的方式解决.记录代码如下: /// <summary> /// 把收集回来的列表打乱顺序之后返回 /// </summary> ...