插件案例 —— 快速部署的服务接口

案例背景
有的时候,我们的业务插件里面需要于服务端进行交互,包装接口之类的。简单点自用的时候,我们可以调用通版已经封装好的服务,DbServiceHelper、MetaDataServiceHelper之类的,直接取数、取元数据。那么我们自己要如何布置一套RPC服务呢?
案例说明
示例代码
App.Core
namespace XXX.K3.App.Core
{
[Kingdee.BOS.Util.HotUpdate]
public class XXXService : IXXXService
{
public void UpdateSaleOrder(Context ctx, List<int> entryIds)
{
string sbSql = "";
DBUtils.Execute(ctx, sbSql, param);
}
}
}Contract
IXXXService
using Kingdee.BOS;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Rpc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
namespace XXX.K3.Contracts
{
[RpcServiceError]
[ServiceContract]
public interface IXXXService
{
void UpdateSaleOrder(Context ctx, List<int> entryIds);
}
}ServiceFactory
namespace XXX.K3.Contracts
{
public class ServiceFactory
{
public static ServicesContainer _mapServer = new ServicesContainer();
static bool noRegistered = true;
static ServiceFactory()
{
RegisterService();
}
/// <summary>
/// 获及服务实例
/// </summary>
/// <typeparam name="T">服务接口类型</typeparam>
/// <param name="ctx">上下文</param>
/// <returns>服务实例</returns>
public static T GetService<T>(Context ctx)
{
return GetService<T>(ctx, ctx.ServerUrl);
}
static T GetService<T>(Context ctx, string url)
{
if (ctx == null)
{
throw new Exception("{ctx == null}");
}
if (noRegistered)
{
RegisterService();
}
var instance = _mapServer.GetServ插件案例 —— 快速部署的服务接口
案例背景有的时候,我们的业务插件里面需要于服务端进行交互,包装接口之类的。简单点自用的时候,我们可以调用通版已经封装好的服务,DbSe...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



