学习如何在平台平台上开发组件是另一回事,您必需要知道如何开始。本指南将为您提供一些有关如何设置第一个平台项目的建议。这包括您需要在平台上部署开发工具以及一些可用于确保成功的最佳实践。
我需要什么工具?
以下是帮助您入门的基本列表:
- 基于 Windows 的电脑。您的 Windows 版本应该能够安装和运行 Internet 信息服务 (IIS)。
- Visual Studio 2019 或更高版本。 它应该是一个能够与 ASP.NET Web应用程序和类库一起使用的版本。如果您没有Visual Studio,那么有一个免费的社区版本,适用于个人开发人员和小型开发团队。请务必查看许可条款。
- SQL Server 2012 或更高版本。对于本地开发,SQL Server Express 是足以应对的。
- Limyee 电商平台。在您的 Windows PC上本地运行。这涉及遵循所有安装步骤,包括确保已在本地安装 IIS。由于这是一台开发计算机,所有组件都应可以安装在这一台PC上。
安装这些工具中的任何一个都超出了本主题的范围。如果您不熟悉其中任何一个,请参阅厂商的文档。这里假定您知道如何在 Visual Studio 中使用项目。
启用开发人员模式
强烈建议您在刚安装的本地平台上启用开发人员模式。这为平台本身提供了许多高级开发功能,当您想更多地参与自定义开发时,您可能会发现这些功能很有用。
简化的作业服务
作业服务是 Limyee 电商平台的必需组件,但是当在本地开发计算机上进行开发时,单独的服务会增加开销并使调试具有挑战性。除了通过 Windows 服务执行作业之外,有 2 种替代方法,您只能将其用于开发,而不能用于生产。这包括从作业服务的可执行文件手动执行作业服务,或者您可以强制所有作业在平台 Web 进程中运行。
手动运行 EXE
作业服务里的 Limyee.JobScheduler.exe 是驱动作业服务的主要可执行文件。您可以双击此文件执行它,它将开始在控制台模式下运行。此方法非常有用,因为它显示正在运行的作业,并将在控制台中显示任何错误。这确实要求您根据文档正确设置作业服务,因为它与~/config目录下的 connections.config、limyee_override.config 和文件权限有关。
在 Web 进程中运行作业
您还可以放弃作业服务,并允许作业作为 Web 进程的一部分运行。当您需要调试自定义作业时,这非常有用,因为您可以将调试器附加到 Web 进程,像其他进程内代码一样。要强制作业在进程中运行,请将 ~/config/jobs.config 的 <jobs> 节点的 RunJobsInternally 属性设置为 true:
请确保没有通过 Windows 服务运行作业服务实例,也没有在控制台模式下运行可执行文件。此外,请确保不要在存在此设置的情况下将 jobs.config 部署到生产环境。
设置项目
我们将要使用的项目类型是 Visual Studio 中的类库项目类型。这是因为您通常只会创建要部署到平台的已编译程序集(.dll)。但是,您仍然可以将补充类型文件添加到此类项目中,例如图像或脚本,使其成为最理想的选择。在开始新项目时,注意一些不该做的事情也很重要。
不要尝试在 Visual Studio 中打开您的 Limyee 电商平台作为网站。 它不是为这种特定意义上的网站而设计的,当您尝试构建它时,您可能会遇到问题。通常,您不会在 Limyee 电商平台中操作任何文件,只会添加新文件,主要是程序集。
不要使用可运行的应用程序,如控制台应用程序或新的 Web 应用程序。 这在一定程度上取决于测试类型的测试项目。如果你是一个狂热的测试驱动开发人员,这可能会引发警报,但它不应该,在单元测试主题中,我们将解决这个问题。这样做的主要原因是所有平台 API 和组件都需要它们在非常特定的上下文才能运行。在正在运行的平台站点之外没有受支持的方法创建此上下文,因此任何平台 API 都只能在平台应用程序中运行。
打开 Visual Studio 并启动类库类型的新项目。
添加引用
要使用平台进程 API,或创建自定义插件,您的项目将需要引用某些 Limyee 电商平台库(.dll)。您需要哪些内容因您正在构建的内容而异,因此您应该查阅有关当前正在处理的内容的相应主题,或者参考开发人员文档以获取更多技术参考。
为了保持项目的整洁,并在以后轻松更新 Limyee 电商平台 DLL 引用,最好在解决方案文件夹中创建一个名为引用或类似名称的文件夹。然后,从 Limyee 电商平台站点的 bin 文件夹中,找到正在构建的组件所需的.dll文件并复制到此新文件夹中。不要将 Limyee 电商平台 DLL 直接引用到站点的 bin 文件夹中。
虽然不是一个兼容性列表,但大多数常见的 Limyee 电商平台 DLL 可用于自定义开发的组件是:
- Limyee.Components.dll
- Limyee.Core.dll
- Limyee.Api.dll
将所有这些文件复制到“引用”文件夹后,通过浏览这些 Limyee 电商平台的 .dll 文件,在 Visual Studio 项目中添加对这些文件的引用。您还应该添加 System.Web 的 .NET 框架引用,因为许多组件都需要 Web 功能。
现在,您已准备好通过添加新类并从那里开始您的第一个组件。这也有助于在项目中保证事情井井有条。例如,您可以将所有插件一起保存在一个文件夹中,如果您公开自己的 API,则可以将其保存在 API 文件夹中。此外,如果您的项目将包含的不仅仅是平台组件,则可能需要将所有内容放在平台文件夹中并在那里进行组织,或者创建第二个项目。如果您已经在多个应用程序之间共享代码,并且您想要做的就是创建组件并将其绑定到平台中,则建议您在单独的项目中创建集成并引用共享库。
使用正确的 API
当您添加对平台 DLL 引用时,您可以访问我们支持的 API 集和扩展入口,但您也可以访问不应在代码中使用的内部 API。仅使用受支持的、有文档记录的 API 非常重要,原因如下:
- 有文档记录和支持的 API 保证不会在升级过程中中断。 这意味着,如果您使用的是平台升级版本,则使用有文档记录和支持的 API 来编写的任何代码都将在新版本中工作。唯一的例外可能是,如果您使用的是旧版本,并且升级了多个主要版本,并且在 API 中有某个版本已被弃用。在删除 API 之前,我们至少提供 2 个主要版本通知。
- 有文档记录和支持的 API 是安全的。 从这些 API 获取数据时会执行用户权限,从而确保您的代码不会意外地提供对敏感数据的访问权限。
- 对有文档记录和支持的 API 进行性能审查。 这并不意味着如果您使用这些 API,您的所有代码都将表现良好。它只是意味着,如果使用得当,单个 API 应该按照我们的标准执行。例如,当使用API分页列表时,最多只能返回100个项目,以防止将整个数据集加载到内存中。仍然有一个合理的期望,即这些 API 的实现是经过测试以高性能的方式完成的。
能够识别这些受支持的 API 非常重要。最简单的方法是通过文档。我们在 API 文档中记录了所有支持的 API。此外,本主题也概述了 API 的安全用法。
另一种方法是我们所有支持的 API 共享一个命名空间模式。所有 API 都有一个特定的命名空间命名模式,其中包含 2 条关键信息。第一个是“Extensibility”这个词。如果命名空间包含“Extensibility”一词,则将其视为 API。下面是一个示例:
由于 IPlugin 位于 Limyee.Extensibility.Version1 名称中,因此它是受支持的 API。命名空间中的另一个关键数据是 Version1,因为这是我们表示 API 版本的方式。如果由于某种原因我们想更改 IPlugin,我们将在 Limyee.Extensibility.Version2 的下一个版本中创建一个新的 IPlugin,然后在几个版本后删除 Version1。不需要将版本视为 API,只需将"Extensibility"一词视为就可以了。
如果命名空间缺少"Extensibility"一词,则它不是受支持的 API,不应在代码中使用它。您可以查找等效的 API 或联系支持人员以获取更多帮助。
自定义数据库架构
很多时候,您的应用程序需要自定义数据结构。通过一些准则将自定义表和存储过程添加到 Limyee 电商平台数据库中:
- 任何自定义表都不应与 Limyee 电商平台表定义外键关系。 您仍然可以在表中存储引用,如内容标识符,但应用程序应强制实施完整性,而不是在数据库级别。
- 不应该对 Limyee 电商平台表编写自定义 SQL。 这意味着无需操作核心表中的数据,也无需直接从数据库表中选择数据。如果存在允许的数据库操作,它将被记录为类似于其他 API 的 API。
如果您的自定义数据位于另一个数据库中,则这是最佳解决方案,因为它确实会创建一个分离,使升级更安全,并且不太可能影响性能。如果由于某种原因不能采用这种情况,您可以在 Limyee 电商平台数据库中创建内容。您应该将对象存储在它们自己的架构中,或者为对象提供某种前缀,该前缀与 Limyee 电商平台前缀(limyee_)分开。