, 그건 서버 측이 .NET MVC
을 기반으로, 프런트 엔드면 우리는 API 응답, 전에서 대기 시간 문제에 직면하고있다 AngularJS와XRM SDK를 사용하는 Dynamics CRM의 속도 저하? 우리는 <code>XRM SDK</code>를 사용하여 <code>Microsoft Dynamics CRM</code>에 연결하는 시스템을 개발하고있다
에 내장되어 있습니다. 로그인 API는 성공 또는 잘못된 응답을 검색하기 위해 적어도 1.8 초이 필요하며이 API가 가장 빠릅니다.
다른 API도 속도가 느리기 때문에이 속도 저하 원인을 파악하려고했지만 운이 없었습니다. XRM SDK
, API 또는 CRM
입니다.
도움이 될만한 경우
var cols = new ColumnSet("exdyn_employeecontractid", "exdyn_contractstatus");
var secondEntityCols = new ColumnSet("exdyn_companyagreementid", "exdyn_agreementstatus");
var filter = new FilterExpression
{
Conditions =
{
new ConditionExpression
{
AttributeName = "exdyn_employeeid",
Operator = ConditionOperator.Equal,
Values = {model.EmployeeId}
},
new ConditionExpression
{
AttributeName = "exdyn_contractstatus",
Operator = ConditionOperator.Equal,
Values = { 3 } // approved {2} signed
},
},
FilterOperator = LogicalOperator.And
};
var secondFilter = new FilterExpression
{
Conditions =
{
new ConditionExpression
{
AttributeName = "exdyn_agreementstatus",
Operator = ConditionOperator.Equal,
Values = { 2 } // active {2}
}
}
};
var entity = _organizationService.GetEntityCollectionWithJoin
("exdyn_employeecontract", "exdyn_companyagreement",
"exdyn_companyagreementid", "exdyn_companyagreementid", JoinOperator.Inner,
cols, secondEntityCols, filter, secondFilter).Entities.FirstOrDefault();
==============
코드를 사용하면 연결 :
public class WebModule : Module
{
protected override void Load(ContainerBuilder builder)
{
// Register your Web API controllers.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
// Register your MVC controllers.
builder.RegisterControllers(Assembly.GetExecutingAssembly());
// OPTIONAL: Register web abstractions like HttpContextBase.
builder.RegisterModule<AutofacWebTypesModule>();
builder.RegisterFilterProvider();
builder.Register(c => new WebConfigurationSettings()).As<IWebSettings>().SingleInstance();
builder.Register(GetOrganizationServiceManagement).SingleInstance();
builder.Register(GetOrganizationProxy).InstancePerRequest();
builder.Register(c => new ExceptionHandler()).SingleInstance();
builder.Register(c => new EmployeeService(c.Resolve<IOrganizationService>()))
.As<IEmployeeService>()
.EnableInterfaceInterceptors()
.InterceptedBy(typeof(ExceptionHandler))
.InstancePerRequest();
builder.Register(c => new AttendanceService(c.Resolve<IOrganizationService>()))
.As<IAttendanceService>().EnableInterfaceInterceptors()
.InterceptedBy(typeof(ExceptionHandler))
.InstancePerRequest();
builder.Register(c => new ContractService(c.Resolve<IOrganizationService>()))
.As<IContractService>().EnableInterfaceInterceptors()
.InterceptedBy(typeof(ExceptionHandler))
.InstancePerRequest();
builder.Register(c => new InquiryService(c.Resolve<IOrganizationService>(), c.Resolve<ILookupService>()))
.As<IInquiryService>().EnableInterfaceInterceptors()
.InterceptedBy(typeof(ExceptionHandler))
.InstancePerRequest();
builder.Register(c => new LookupService(c.Resolve<IOrganizationService>()))
.As<ILookupService>().EnableInterfaceInterceptors()
.InterceptedBy(typeof(ExceptionHandler))
.InstancePerRequest();
builder.Register(c => new LeaveRequestService(c.Resolve<IOrganizationService>(),
c.Resolve<IContractService>(), c.Resolve<ILookupService>()))
.As<ILeaveRequestService>().EnableInterfaceInterceptors()
.InterceptedBy(typeof(ExceptionHandler))
.InstancePerRequest();
builder.Register(c => new PurchaseRequestService(c.Resolve<IOrganizationService>(), c.Resolve<ILookupService>()))
.As<IPurchaseRequestService>().EnableInterfaceInterceptors()
.InterceptedBy(typeof(ExceptionHandler))
.InstancePerRequest();
builder.Register(c => new NotificationService(c.Resolve<IOrganizationService>()))
.As<INotificationService>().EnableInterfaceInterceptors()
.InterceptedBy(typeof(ExceptionHandler))
.InstancePerRequest();
builder.Register(c => new CacheClient())
.As<ICacheClient>()
.SingleInstance();
}
private static IServiceManagement<IOrganizationService> GetOrganizationServiceManagement(IComponentContext ctx)
{
var settings = ctx.Resolve<IWebSettings>();
return ServiceConfigurationFactory.CreateManagement<IOrganizationService>(
new Uri(settings.OrganizationUrl));
}
private static IOrganizationService GetOrganizationProxy(IComponentContext ctx)
{
var svcMgmt = ctx.Resolve<IServiceManagement<IOrganizationService>>();
var settings = ctx.Resolve<IWebSettings>();
var credentials = new AuthenticationCredentials();
credentials.ClientCredentials.UserName.UserName = settings.SystemUserName;
credentials.ClientCredentials.UserName.Password = settings.SystemUserPassword;
var authCredentials = svcMgmt.Authenticate(credentials);
//return new OrganizationServiceProxy(svcMgmt, authCredentials.SecurityTokenResponse);
return new OrganizationServiceProxy(svcMgmt, authCredentials.ClientCredentials);
}
}
온 - 프레미스 또는 온라인입니까? 비누 엔드 포인트 또는 나머지 엔드 포인트를 사용하고 있습니까? – Sxntk
일부 코드를 게시해야합니다. SDK는 어떻게 사용됩니까? 연결은 어떻게 인스턴스화됩니까? 연결 문자열 형식? – dynamicallyCRM
나에게 맞는 소리.내 경험에 따르면 Dynamics CRM Online은 확장 성이 뛰어나지 않습니다. 다운 될 경우 아무 것도 할 수 없습니다. SQL Server에 밑줄을 긋거나 성능이 좋지 않습니다. –