12,162
社区成员
发帖
与我相关
我的任务
分享
void Application_Start(object sender, EventArgs e)
{
WebServiceHostFactory factory = new CustomerWebServiceHostFactory(); //自定义HostFactory 扩展
RouteTable.Routes.Add(new ServiceRoute("Domain1Service",factory,typeof(MEFDemo.Domain1.Service.Domain1Service)));
RouteTable.Routes.Add(new ServiceRoute("Domain2Service", factory, typeof(MEFDemo.Domain2.Service.Domain2Servie)));
}
public partial class Domain1Service
{
[WebGet(UriTemplate = "product/{id}", ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
public ResponseResult<Product> GetProduct(string id)
{
var tempId = 0;
int.TryParse(id, out tempId);
var result = ObjectFactory<ProductProcessor>.Instance.Get(tempId);
return new ResponseResult<Product> { Result = result };
}
[WebInvoke(UriTemplate = "product/query", Method = "Get", ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
public ResponseResult<List<Product>> QueryProducts(ProductRequest request)
{
//todo request maping produtFilter
var result= ObjectFactory<IProductDA>.Instance.Query(new ProductQueryFilter { ProductName=request.ProdutName});
return new ResponseResult<List<Product>> { Result = result };
}
}
public partial class Domain1Service
{
[WebInvoke(UriTemplate = "product/create", Method = "Post", ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
public void CreateProduct(ProductRequest request)
{
//todo request maping Produt
ObjectFactory<ProductProcessor>.Instance.Add(new Product { ProductName = request.ProdutName });
}
}
namespace MEFDemo.Domain1.BizProcess
{
[VersionExport(typeof(ProductProcessor), "1.0")]
public class ProductProcessor
{
public Product Get(int id)
{
var product = ObjectFactory<IProductDA>.Instance.Get(id);
if (product == null)
{
throw new BizException("商品不存在", "521"); //业务异常
}
if (product.ProductName == "B")
{
var simpException = product.ProductName.Substring(100, 1111); //系统异常
}
return product;
}
public void Add(Product product)
{
if (ObjectFactory<IProductDA>.Instance.Get(product.ProductName) != null)
{
throw new BizException("商品名称已存在", "521");
}
ObjectFactory<IProductDA>.Instance.Add(product);
throw new BizException("添加成功", "520");
}
}
}
namespace MEFDemo.Domain1.IDataAccess
{
public interface IProductDA
{
Product Get(int id);
Product Get(string name);
void Add(Product product);
List<Product> Query(ProductQueryFilter filter);
}
}
namespace MEFDemo.Domain1.DataAccess
{
[VersionExport(typeof(IProductDA), "1.0")]
public class ProductDA : IProductDA
{
private static List<Product> Data = new List<Product>
{
new Product{ProductId=1,ProductName="A"},
new Product{ProductId=2,ProductName="B"},
new Product{ProductId=3,ProductName="C"},
};
public Product Get(int id)
{
return Data.FirstOrDefault<Product>(p => p.ProductId == id);
}
public Product Get(string name)
{
return Data.FirstOrDefault<Product>(p => p.ProductName == name);
}
public void Add(Product product)
{
Data.Add(product);
}
public List<Product> Query(ProductQueryFilter filter)
{
return Data.Where<Product>(p => p.ProductName == filter.ProductName).ToList();
}
}
}