使用WCF开发ERP系统,但是里面的实体类就有800多个,每个实体类都需要一个Service来进行CRUD操作,在加上其他的Service就会有1000多个Service.
难道就只能New 1000多个ServiceHost来运行服务吗?要是能把这么多实体类的Serivce合并成一个就好了。如果不用WCF,用泛型是可以的,比如:    public class EntityService
    {
        public void CreateEntity<T>(T model)
        {
            //...
        }
         
        public T GetEntity<T>(int id)
        {
            return default(T);
        }
    //***
    }可是在WCF中不能这样用啊,请问有什么替代办法?

解决方案 »

  1.   

    泛型是可以使用,但是在这种情况下需要用KnownType来指定T的类型,把800个实体类都指定一下类型不知道可不可以,就算可以也觉得这种做法怪怪的
      

  2.   

    WCF并不推荐在应用程序域中创建多个ServiceHost实例。如果要托管多个服务,完全可以在一个宿主中通过多个Endpoint公开多个WCF服务。由于应用程序域对安全进行了隔离,如果需要提供不同的安全上下文,则有必要创建多个ServiceHost实例。
      

  3.   

    个人认为应该改变你的EntityService的模式,使用门面模式(Facade)是个不错的选择
      

  4.   

    @fei997yang:
    一个Service对应一个ServiceHost,再多的Endpoint也只能用在一个ServiceImplement上。
      

  5.   

    把实体类序列化成xml字符串传输
    这样在服务端只有一个参数为字符串的泛型函数的服务了
    具体的处理中把xml反序列化出来就得到你要的实体类实例了
      

  6.   

    关注,目前我是一个服务对应一个Host.