WCF 简单示例

示例很简单,client端,server端,中间信道走的是SOAP协议。

SOAP
client:一个请求消息
server:一个响应消息
XML一个信封

服务端实现:
1.具体动作的方法,可单独一个类库
2.定义服务合同接口
3.实现服务接口

[ServiceContract]
    public interface IRoomService {
        [OperationContract]
        string GetData(int value);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);

        // TODO: 在此添加您的服务操作
        [OperationContract]
        int GetInt(int value);
    }



public class RoomService : IRoomService {
        public string GetData(int value) {
            return string.Format("You entered: {0}", value);
        }

        public CompositeType GetDataUsingDataContract(CompositeType composite) {
            if (composite == null) {
                throw new ArgumentNullException("composite");
            }
            if (composite.BoolValue) {
                composite.StringValue += "Suffix";
            }
            return composite;
        }

        public int GetInt(int v){
            return v;
        }
    }


服务端可以在winform或者控制台程序中被启动,确实可以哟

class Program {
        internal static ServiceHost myService = null;
        private  static ServiceHost Start(){
            if (myService == null) {
                myService = new ServiceHost(typeof(WcfServiceLibraryOne.RoomService));
            }
            return myService;
        }

        private static void Stop(){
            if (myService.State != CommunicationState.Closed) {
                myService.Close();
            }
        }

        static void Main(string[] args) {
            Start();
            Console.WriteLine("wcf is start to running, press enter to exit!!!");
            Console.ReadLine();
            Stop();


        }
    }


然后可以把WCF测试客户端打开查看,http://blog.sina.com.cn/s/blog_55a69f170100qjid.html


----------------------------------------------------------------------------------------------------------------------------------------------

到这里server端已经建好,下面是客户端来调用服务端

---------------------------------------------------------------------------------------------------------------------------------------------

可以新建一个控制台项目,服务引用刚才的server端地址,就会把相应需要应用的dll都引用进来。


static void Main(string[] args) {
            RoomServiceClient client = new RoomServiceClient();
            int ret = client.GetInt(1000);
            Console.WriteLine("get return value from wcf server side : {0}",ret);
            Console.ReadLine();
        }


给客户程序创建代理有三种方式:
1.VS添加服务引用,需要访问WSDL文档
2.serviceModel元数据实用工具svcutil.exe
3.ChannelFactory类


end.


posted @ 2012-05-29 16:00  lein.wang  Views(134)  Comments(0Edit  收藏  举报