зеркало из https://github.com/Azure/TypeEdge.git
Коммит
3793e2f496
30
README.md
30
README.md
|
@ -2,20 +2,20 @@
|
|||
|
||||
[![Build Status](https://dev.azure.com/epicstuff/TypeEdge/_apis/build/status/Azure.TypeEdge)](https://dev.azure.com/epicstuff/TypeEdge/_build/latest?definitionId=15)
|
||||
|
||||
**TypeEdge** introduces a strongly-typed flavor of the inherently loosely coupled vanilla [Azure IoT Edge](https:/azure.microsoft.com/en-us/services/iot-edge).
|
||||
**TypeEdge** is a strongly-typed development experience for [Azure IoT Edge](https:/azure.microsoft.com/en-us/services/iot-edge).
|
||||
|
||||
Specifically, **TypeEdge**:
|
||||
**TypeEdge**:
|
||||
|
||||
- Removes all configuration burden from an IoT Edge application, because configuration can be now automatically generated.
|
||||
- Introduces compile-time types checking across all modules
|
||||
- Adds the ability to **emulate an IoT Edge device in-memory** with no containers involved
|
||||
- Simplifies the IoT Edge development, down to an single F5 experience
|
||||
- Removes all plain-text configuration files from an IoT Edge application. Configuration is automatically generated by TypeEdge code bindings.
|
||||
- Introduces compile-time type checking across all modules.
|
||||
- Adds the ability to **emulate an IoT Edge device in-memory** without containers.
|
||||
- Simplifies IoT Edge development, down to a simple F5 experience.
|
||||
|
||||
Here is a quick video that demonstrates the value of **TypeEdge**
|
||||
|
||||
[![TypeEdge: Into](images/image.png)](https://youtu.be/_vWcpEjjtI0)
|
||||
|
||||
>Note: **TypeEdge** is an **experiment** created by a customer facing team at Microsoft called, Commercial Software Engineering. We work with customers on a daily basis and as a result of that work we created **TypeEdge**. It is being used by partners today across the globe. Please help us improve it by trying it out and providing us feedback.
|
||||
>Note: **TypeEdge** is an **experiment** created by a customer facing team at Microsoft called, Commercial Software Engineering. We work with customers on a daily basis and as a result of that work we created **TypeEdge**. It is being used by partners today around the globe. Please help us improve it by trying it out and providing us feedback.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
|
@ -30,7 +30,7 @@ To be able to publish your application, you will also need:
|
|||
|
||||
|
||||
## Create a new **TypeEdge** application
|
||||
Here is the quickest way to get started with **TypeEdge**. In this quick start you will create an IoT Edge application with two modules and run it in the emulator:
|
||||
Here is the quickest way to get started with **TypeEdge**. In this quickstart you will create an IoT Edge application with two modules and run it in the emulator:
|
||||
|
||||
1. Install the TypeEdge .NET Core solution template. Just type:
|
||||
```
|
||||
|
@ -63,22 +63,22 @@ After you use the template to create a new **TypeEdge** application, all you hav
|
|||
|
||||
1. Open in VS Code/Visual Studio 2017 and hit F5:
|
||||
|
||||
- For VS Code run
|
||||
- VS Code:
|
||||
|
||||
code .
|
||||
|
||||
- For VS 2017 run
|
||||
- Visual Studio:
|
||||
|
||||
Thermostat.sln
|
||||
|
||||
- To run the application in the command line (no IDE):
|
||||
- .NET Core:
|
||||
```
|
||||
dotnet build Thermostat.sln
|
||||
cd Thermostat.Emulator
|
||||
dotnet run
|
||||
```
|
||||
|
||||
>Note: In all three cases, your application is being emulated in-memory **without any containers involved**. This is very useful for quick develop and test iterations.
|
||||
>Note: In all three cases, your application is being emulated in-memory **without containers**. This is very useful for quick develop and test iterations.
|
||||
|
||||
You should see now the Edge Hub starting up..
|
||||
|
||||
|
@ -89,7 +89,7 @@ You should see now the Edge Hub starting up..
|
|||
|
||||
## Debugging inside the containers
|
||||
|
||||
If your modules have system dependencies and you want to debug them inside the containers, you can leverage the *docker support* feature of VS 2017. Simply right click the **docker-compose** project and start it from VS 2017 to **debug your application inside the docker containers**.
|
||||
If your modules have system dependencies and you want to debug them inside the containers, you can leverage Visual Studio's *docker support* feature. Simply right click the **docker-compose** project and start it to **debug your application inside the docker containers**.
|
||||
|
||||
|
||||
Alternatively, you can run your application inside the containers in command line:
|
||||
|
@ -186,7 +186,8 @@ public class SensorModule : TypeModule, ISensorModule
|
|||
```
|
||||
</details>
|
||||
<br>
|
||||
A <b>TypeEdge</b> module can override any of the virtual methods of the base class ``TypeModule``. As demonstrated in the above example, the ``RunAsync`` method is used for defining long running loops, typically useful for modules that read sensor values. Another virtual method is ``Configure``, which can be used to read custom module configuration during startup.
|
||||
|
||||
A **TypeEdge** module can override any of the virtual methods of the base class ``TypeModule``. As demonstrated in the above example, the ``RunAsync`` method is used for defining long running loops, typically useful for modules that read sensor values. Another virtual method is ``Configure``, which can be used to read custom module configuration during startup.
|
||||
|
||||
The complete ``TypeModule`` definition is:
|
||||
|
||||
|
@ -210,6 +211,7 @@ public abstract class TypeModule : IDisposable
|
|||
### Module Subscriptions
|
||||
**TypeEdge** uses the pub/sub pattern for all module I/O, except for the direct methods. This means that a module can subscribe to other module outputs, and publish messages to their inputs. To do this, a reference to the module interface definition is required. **TypeEdge** uses dependency injection to determine the referenced modules.
|
||||
|
||||
|
||||
Below is the constructor of the second module included in the application template called ``PreprocessorModule``, that references the ``SensorModule`` via its interface. Using this proxy, the ``PreprocessorModule`` module can subscribe to the ``SensorModule``:
|
||||
|
||||
```cs
|
||||
|
|
Загрузка…
Ссылка в новой задаче