เบเบธเบกเบเบปเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒ Raiffeisenbank .NET เบชเบทเบเบเปเปเบเบปเบเบเบงเบเปเบเบทเปเบญเปเบเบเบญเบ ViennaNET เปเบเบเบซเบเปเป. เบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบเปเบฅเบฐเปเบเบฑเบเบซเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบกเบฒเบเบตเป,
เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเบฑเบเบเปเปเปเบเปเบฎเบฑเบเบเบฒเบเบเบดเบเบฒเบฅเบฐเบเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบธเบฅเบฐเบเปเบฒเปเบเบเบขเบฒเบ, เปเบเบงเปเบฅเบฐเบเบฒเบเบเปเปเบกเบนเบ, เปเบเบดเปเบเบชเบฒเบกเบฒเบเบเบปเบเปเบเปเบขเบนเปเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบ GitHub เบเบญเบเบเบงเบเปเบฎเบปเบฒ (
ViennaNET.Sagas
เปเบกเบทเปเบญเปเบเบเบเบฒเบเบเปเบฝเบเปเบเปเบเป DDD เปเบฅเบฐเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบธเบฅเบฐเบเบฒเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบซเบเบเบปเบเบเบฒเบเบเบธเบฅเบฐเบเบดเบเบเบทเบเปเบเบเบขเบฒเบเปเบเบเบปเปเบงเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบเบฑเบเบซเบฒเบเบตเปเปเบเบตเบเบเบทเปเบเบเบฑเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบเบเบปเบเปเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบตเปเปเบเบเบขเบฒเบ, เปเบเบฒเบฐเบงเปเบฒเบซเบผเบฒเบเปเบชเบฐเบเบฒเบเบฐเบเบฒเบเบกเบฑเบเบเบฐเบชเบปเปเบเบเบปเบเบเบฐเบเบปเบเบเปเปเบซเบฅเบฒเบเปเบเปเบกเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบฎเบนเปเบเบฑเบเบเบฑเบเบเบปเบเปเบเบเบฑเปเบเบเปเบฒเบงเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ,
เปเบเปเบเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฐเบเบดเบเบฑเบเบเบปเบเปเบเบเบตเปเบเปเบฒเบเบเบฒเบเปเบเปเบกเบตเบเบฐเปเบซเบเบ: saga, เบซเบผเบทเปเบเบเบเบตเปเบเบฐเปเบเบฑเบ saga เบญเบตเบเปเบชเป orchestration. เปเบเบเปเบเบทเปเบญเปเบเปเปเบฅเปเบงเบเบญเบเบกเบฑเบเปเบกเปเบเบเบฑเปเบเบเบตเป: เบกเบตเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบธเบฅเบฐเบเบดเบเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบเบเบตเปเบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฒเบกเบฅเปเบฒเบเบฑเบเปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เปเบฅเบฐเบเปเบฒเบเบฑเบเบซเบฒเปเบเปเปเบเบตเบเบเบทเปเบเปเบเบเบฑเปเบเบเบญเบเปเบเบเปเปเบเบฒเบก, เบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบซเบฒเบเบฑเปเบเบเบญเบเบเบฒเบเบเบฑเบเบเบทเบเบชเปเบฒเบฅเบฑเบเบเบฑเปเบเบเบญเบเบเบตเปเบเปเบฒเบเบกเบฒเบเบฑเบเบซเบกเบปเบ, เบเปเบญเบเบเบตเปเบกเบฑเบเบขเบนเป. เบชเบฐเบซเบเบญเบเปเบซเป. เบเบฑเปเบเบเบฑเปเบ, เปเบเบเบญเบเบเปเบฒเบเบเบญเบ saga, เปเบเบเบเปเปเบเปเบฒเบเบถเบเปเบเบดเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเปเปเบกเบนเบเบเบตเปเบชเบญเบเบเปเบญเบเปเบเบเบธเบเปเบเปเบกเบ.
เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบเบเบฑเบเปเบฎเบฑเบเบขเบนเปเปเบเบฎเบนเบเปเบเบเบเบทเปเบเบเบฒเบเบเบญเบเบกเบฑเบ เปเบฅเบฐเบเปเปเปเบเปเบเบดเบเบเบฑเบเบเบฑเบเบเบฒเบเปเบเปเบงเบดเบเบตเบเบฒเบเบเบปเบงเบเบฑเบเปเบเปเบเบฑเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบญเบทเปเบเป. เบกเบฑเบเบเปเปเบเบฒเบเบเบตเปเบเบฐเปเบเป: เบเบฝเบเปเบเปเปเบฎเบฑเบเปเบซเปเบฅเบนเบเบซเบฅเบฒเบเบเบญเบเบเบฑเปเบเบฎเบฝเบเบเบตเปเบเปเปเบกเบตเบเบปเบงเบเบปเบ SagaBase<T>, เบเปเบญเบเบเบตเป T เปเบกเปเบเบซเปเบญเบเบฎเบฝเบเบชเบฐเบเบฒเบเบเบฒเบเบเบญเบเบเปเบฒเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเปเบเบทเปเบญเบเบเบปเปเบเบเบตเปเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบ saga เปเบฎเบฑเบเบงเบฝเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฒเบเบเบปเบเปเบเปเบฎเบฑเบเบฅเบฐเบเบฑเบเบเบฒเบเบเบฒเบ. เบชเบฐเบเบฒเบเบเบฒเบเบเบปเบงเบขเปเบฒเบเบเบฐเบเบทเบเบชเบปเปเบเบเปเบฒเบเปเบเบเบธเบเบเบฑเปเบเบเบญเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ. Saga เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเปเบเบฑเบเบซเปเบญเบเบฎเบฝเบเบเบตเปเบเปเปเบกเบตเบฅเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบเบปเบงเบขเปเบฒเบเบชเบฒเบกเบฒเบเบเบทเบเบเบฑเบเปเบชเปเปเบ DI เปเบเบฑเบ Singleton เปเบเบทเปเบญเปเบซเปเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบเบตเปเบเปเบฒเปเบเบฑเบ.
เบเบปเบงเบขเปเบฒเบเปเบเบชเบฐเบเบฒ:
public class ExampleSaga : SagaBase<ExampleContext>
{
public ExampleSaga()
{
Step("Step 1")
.WithAction(c => ...)
.WithCompensation(c => ...);
AsyncStep("Step 2")
.WithAction(async c => ...);
}
}
เบเบปเบงเบขเปเบฒเบเบเบฒเบเปเบ:
var saga = new ExampleSaga();
var context = new ExampleContext();
await saga.Execute(context);
เบเบปเบงเบขเปเบฒเบเบญเบฑเบเปเบเบฑเบกเบเบตเปเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเปเบเป
ViennaNET.Orm.*
เบเบธเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเบเปเบฒเบเปเบเปเบฒเบ Nhibernate. เบเบงเบเปเบฎเบปเบฒเปเบเปเบงเบดเบเบตเบเบฒเบ DB-First เปเบเบเปเบเป Liquibase, เบเบฑเปเบเบเบฑเปเบเบเบฝเบเปเบเปเบกเบตเบซเบเปเบฒเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเปเปเบกเบนเบเปเบเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเบฝเบกเบเปเบญเบก.
ViennaNET.Orm.Seedwork ะธ ViennaNET.Orm
- เบชเบฐเบเบฒเปเบซเปเบเบเบปเปเบเบเปเบเบตเปเบเบฐเบเบญเบเบเปเบงเบเบเบฒเบเปเบเปเบเบญเบเบเบทเปเบเบเบฒเบเปเบฅเบฐเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบเบงเบเปเบเบปเบฒ, เบเบฒเบกเบฅเปเบฒเบเบฑเบ. เปเบซเปเปเบเบดเปเบเปเบเบทเปเบญเปเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก.
เบเบฒเบเปเบเปเบเบญเบ IEntityFactoryService
เปเบฅเบฐโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบญเบโเบเบปเบโ EntityFactoryService
เปเบเบฑเบเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบเบเบปเปเบเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ, เบเบฑเบเบเบฑเปเบเปเบเปเบซเบเปเบงเบเบเบฒเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ, repositories เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบซเบเปเบงเบเบเบฒเบเบชเบฐเปเบเบฒเบฐ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบนเปเบเบฐเบเบดเบเบฑเบเบเปเบฒเบชเบฑเปเบเปเบฅเบฐเบเบฒเบเบชเบญเบเบเบฒเบก SQL เปเบเบเบเบปเบเปเบกเปเบเบชเปเบฒเบเบขเบนเปเบเบตเปเบเบตเป. เบเบฒเบเบเบฑเปเบเบกเบฑเบเบชเบฐเบเบงเบเบเบตเปเบเบฐเบเปเบฒเบเบฑเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบญเบเบซเปเบญเบเบฎเบฝเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ, เบเบปเบงเบขเปเบฒเบ, เบชเบฐเบซเบเบญเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบญเปเบฒเบเบเปเปเบกเบนเบเปเบเบปเปเบฒเบเบฑเปเบ. เบชเปเบฒเบฅเบฑเบเบเปเบฅเบฐเบเบตเบเบฑเปเบเบเปเบฒเบง IEntityFactoryService
เบกเบตเบเบฑเบเบเบฐเบเบธเบฅเบธเบ - เบเบฒเบเปเบเปเบเบญเบ IEntityRepositoryFactory
, เปเบเบดเปเบเบเบฝเบเปเบเปเบเบฐเบเบฒเบเบงเบดเบเบตเบเบฒเบเบชเปเบฒเบ repositories.
เปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบเปเปเบกเบนเบเปเบเบเบเบปเบ, เบเบปเบเปเบเบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเบเบทเบเบเปเบฒเปเบเป. เปเบเปเบฅเบฐ DBMS เบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบขเบนเปเปเบเบเบตเบกเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบกเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบเบปเบเปเบญเบ: ViennaNET.Orm.MSSQL, ViennaNET.Orm.Oracle, ViennaNET.Orm.SQLite, ViennaNET.Orm.PostgreSql
.
เปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเบซเบผเบฒเบเปเบเบปเบเบชเบฒเบกเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเบขเบนเปเปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบซเบเบถเปเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เปเบเบดเปเบเบญเบฐเบเบธเบเบฒเบเปเบซเป, เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเบฒเบเปเบเบเบญเบเบเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบซเบเบถเปเบ, เปเบเบเบเปเปเบกเบตเบเปเบฒเปเบเปเบเปเบฒเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเปเบเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบ, เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเบทเปเบญเบเบเปเบฒเบเบเบฑเปเบเบเบญเบเปเบเบเบเบฑเปเบเบเบญเบเบเบฒเบ. เบซเบเบถเปเบ DBMS เบเบฑเบเบญเบตเบ. เบเบปเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฅเบทเบญเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบเปเบญเบเบเบฒเบเปเบฅเบฐเบเบฑเปเบเบเบฑเปเบ, เบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฑเปเบ entity เบชเบฐเปเบเบฒเบฐ (เบชเปเบฒเบฅเบฑเบเปเบเบเบเบตเปเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเปเปเบกเบนเบเปเบกเปเบเบเบฝเบ) เปเบกเปเบเบเบฐเบเบดเบเบฑเบเปเบเบเบเปเบฒเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบ entity เปเบ BoundedContext class (เบกเบตเบงเบดเบเบตเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเบซเบเปเบงเบเบเบฒเบเปเบเปเบกเบ) เบซเบผเบทเบเบนเปเบชเบทเบเบเบญเบเบเบญเบเบกเบฑเบ. ApplicationContext (เบเบฐเบเบญเบเบเปเบงเบเบงเบดเบเบตเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเบซเบเปเบงเบเบเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ, เบเบฒเบเบฎเปเบญเบเบเปเปเบเบเบเบปเบเปเบฅเบฐเบเปเบฒเบชเบฑเปเบ), เบเปเบญเบเบเบตเปเบเบปเบงเบฅเบฐเบเบธเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบทเบเบเบญเบกเบฎเบฑเบเปเบเบฑเบเบเบฒเบเปเบเปเบเบฝเบ:
"db": [
{
"nick": "mssql_connection",
"dbServerType": "MSSQL",
"ConnectionString": "...",
"useCallContext": true
},
{
"nick": "oracle_connection",
"dbServerType": "Oracle",
"ConnectionString": "..."
}
],
เบเบปเบงโเบขเปเบฒเบ ApplicationContext:
internal sealed class DbContext : ApplicationContext
{
public DbContext()
{
AddEntity<SomeEntity>("mssql_connection");
AddEntity<MigratedSomeEntity>("oracle_connection");
AddEntity<AnotherEntity>("oracle_connection");
}
}
เบเปเบฒ ID เบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโเบเปเปโเปเบเปโเบฅเบฐโเบเบธโเปเบงเปโ, เบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโเบเบตเปโเบกเบตโเบเบทเป "เบเปเบฒโเปเบฅเบตเปเบกโเบเบปเปเบโ" เบเบฐโเบเบทเบโเบเปเบฒโเปเบเปโ.
เบเบฒเบเบชเปเบฒเบเปเบเบเบเบตเปเปเบเบเบเบปเบเบเบญเบเบซเบเปเบงเบเบเบฒเบเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเปเปเบกเบนเบเปเบกเปเบเบเบฐเบเบดเบเบฑเบเปเบเบเปเบเปเปเบเบทเปเบญเบเบกเบท NHibernate เบกเบฒเบเบเบฐเบเบฒเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเปเบฒเบญเบฐเบเบดเบเบฒเบเบเบฑเบเบเปเบฒเบเปเบเบฅเป xml เปเบฅเบฐเบเปเบฒเบเบซเปเบญเบเบฎเบฝเบ. เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฝเบเบเบตเปเบชเบฐเบเบงเบเบเบญเบ stub repositories เปเบ Unit tests, เบกเบตเบซเปเบญเบเบชเบฐเบซเบกเบธเบ ViennaNET.TestUtils.Orm
.
เบเบปเบงเบขเปเบฒเบเบญเบฑเบเปเบเบฑเบกเบเบตเปเบเบญเบเบเบฒเบเปเบเป ViennaNET.Orm.* เบชเบฒเบกเบฒเบเบเบปเบเปเบเป
ViennaNET.เบเบฒเบเบชเบปเปเบเบเปเปเบเบงเบฒเบก.*
เบเบธเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบดเบง.
เปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบดเบง, เบงเบดเบเบตเบเบฒเบเบเบฝเบงเบเบฑเบเปเบเปเบเบทเบเปเบฅเบทเบญเบเปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบ DBMSs เบเปเบฒเบเป, เบเบท, เบงเบดเบเบตเบเบฒเบเบเบตเปเปเบเบฑเบเปเบญเบเบฐเบเบฒเบเบชเบนเบเบชเบธเบเบเบตเปเปเบเบฑเบเปเบเปเบเปเปเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ, เบเปเปเบงเปเบฒเบเบฐเปเบเบฑเบเบเบนเปเบเบฑเบเบเบฒเบเบเบดเบงเบเบตเปเปเบเป. เบซเปเบชเบฐเปเบธเบ ViennaNET.Messaging
เปเบกเปเบเบเบงเบฒเบกเบฎเบฑเบเบเบดเบเบเบญเบเบขเปเบฒเบเปเบเปเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเบงเบกเบเบตเป, เปเบฅเบฐ ViennaNET.Messaging.MQSeriesQueue, ViennaNET.Messaging.RabbitMQQueue ะธ ViennaNET.Messaging.KafkaQueue
เบกเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบงเบเบฑเบเปเบเบเบชเปเบฒเบฅเบฑเบ IBM MQ, RabbitMQ เปเบฅเบฐ Kafka, เบเบฒเบกเบฅเปเบฒเบเบฑเบ.
เปเบกเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบดเบง, เบกเบตเบชเบญเบเบเบฐเบเบงเบเบเบฒเบ: เบฎเบฑเบเบเปเปเบเบงเบฒเบกเปเบฅเบฐเบชเบปเปเบเบกเบฑเบ.
เบเบดเบเบฒเบฅเบฐเบเบฒเบฎเบฑเบ. เบกเบต 2 เบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเบตเป: เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบฅเบฐเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเปเบฎเบฑเบเบเปเปเบเบงเบฒเบกเบเบฝเบง. เปเบเบทเปเบญเบเบฑเบเปเบเบงเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ, เบเปเบญเบเบญเบทเปเบ เปเบปเบ เบเปเบฒเบเบเปเบญเบเบญเบฐเบเบดเบเบฒเบเปเบเบดเบเบเบฑเปเบเบเบฐเบกเบงเบเบเบปเบเบเบตเปเบชเบทเบเบเบญเบเบกเบฒเบเบฒเบ IMessageProcessor
, เปเบเบดเปเบเบเบฐเบฎเบฑเบเบเบดเบเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเปเปเบเบงเบฒเบกเบเบตเปเปเบเบปเปเบฒเบกเบฒ. เบเปเปเปเบ, เบกเบฑเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบ "เปเบเบทเปเบญเบกเบเปเป" เบเบฑเบเปเบเบงเบชเบฐเปเบเบฒเบฐ; เบเบตเปเปเบกเปเบเปเบฎเบฑเบเปเบเปเปเบเบเบเปเบฒเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเปเบ IQueueReactorFactory
เบเบตเปเบเบญเบเบเบปเบงเบฅเบฐเบเบธเปเบเบงเบเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒ:
"messaging": {
"ApplicationName": "MyApplication"
},
"rabbitmq": {
"queues": [
{
"id": "myQueue",
"queuename": "lalala",
...
}
]
},
เบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบฑเบ:
_queueReactorFactory.Register<MyMessageProcessor>("myQueue");
var queueReactor = queueReactorFactory.CreateQueueReactor("myQueue");
queueReactor.StartProcessing();
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบกเบทเปเบญเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบฅเบฐเบงเบดเบเบตเบเบฒเบเบเบทเบเปเบญเบตเปเบเปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเบฑเบ, เบเปเปเบเบงเบฒเบกเบเบฑเบเบซเบกเบปเบเบเบฒเบเปเบเบงเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเบเบฐเปเบเบซเบฒเปเบเปเบเบเปเบเบตเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ.
เปเบเบทเปเบญเบฎเบฑเบเบเปเปเบเบงเบฒเบกเบเบฝเบงเปเบเบเบฒเบเปเบเปเบเบญเบเบเบญเบเปเบฎเบเบเบฒเบ IMessagingComponentFactory
เบกเบตโเบงเบดโเบเบตโเบเบฒเบโ CreateMessageReceiver
เปเบเบดเปเบเบเบฐเบชเปเบฒเบเบเบนเปเบฎเบฑเบเบเบตเปเบฅเปเบเปเบฒเบเปเปเบเบงเบฒเบกเบเบฒเบเปเบเบงเบเบตเปเบฅเบฐเบเบธเปเบงเปเบเบฑเบเบกเบฑเบ:
using (var receiver = _messagingComponentFactory.CreateMessageReceiver<TestMessage>("myQueue"))
{
var message = receiver.Receive();
}
เปเบเบทเปเบญเบชเบปเปเบเบเปเปเบเบงเบฒเบก เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบฝเบงเบเบฑเบ IMessagingComponentFactory
เปเบฅเบฐโเบชเปเบฒเบโเบเบนเปโเบชเบปเปเบโเบเปเปโเบเบงเบฒเบกโ:
using (var sender = _messagingComponentFactory.CreateMessageSender<MyMessage>("myQueue"))
{
sender.SendMessage(new MyMessage { Value = ...});
}
เบกเบตเบชเบฒเบกเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเปเบญเบกเบเบตเปเบเบฐเปเบฎเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบ serializing เปเบฅเบฐ deserializing เบเปเปเบเบงเบฒเบก: เบเบฝเบเปเบเปเบเปเปเบเบงเบฒเบก, XML เปเบฅเบฐ JSON, เปเบเปเบเปเบฒเบซเบฒเบเบงเปเบฒเบกเบตเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเปเบเบฒเบเปเบเปเบเบญเบเบเบญเบเบเปเบฒเบเปเบญเบเปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบ. IMessageSerializer ะธ IMessageDeserializer
.
เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฐเบเบฒเบเบฒเบกเบฎเบฑเบเบชเบฒเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบดเปเบชเบเบเบญเบเปเบเปเบฅเบฐเบเบนเปเบเบฑเบเบเบฒเบเปเบเบง, e.g. ViennaNET.Messaging.MQSeriesQueue
เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบปเปเบเบเปเปเบเบงเบฒเบกเบเปเปเบเบฝเบเปเบเป, เปเบเปเบเบฑเบเบเปเปเบเบงเบฒเบก byte, เปเบฅเบฐ ViennaNET.Messaging.RabbitMQQueue
เบชเบฐโเบซเบเบฑเบโเบชเบฐโเบซเบเบนเบโเบเบฒเบโเปเบชเบฑเปเบโเบเบฒเบโเปเบฅเบฐโเบเบฒเบโเบเปเปโเบเบดเบงโเบเบดเบโ. wrapper เบญเบฐเปเบเบเปเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบฅเบฑเบ RabbitMQ เบเบฑเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบฅเบฑเบเบชเบฐเบเบฐเบเบญเบ RPC: เบเบงเบเปเบฎเบปเบฒเบชเบปเปเบเบเปเปเบเบงเบฒเบกเปเบฅเบฐเบฅเปเบเปเบฒเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบเบฒเบเปเบเบงเบเบปเปเบงเบเบฒเบงเบเบดเปเบชเบ, เปเบเบดเปเบเบเบทเบเบชเปเบฒเบเบเบทเปเบเบเบฝเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเปเปเบเบงเบฒเบกเบเบญเบเบชเบฐเบซเบเบญเบเบซเบเบถเปเบเปเบเบปเปเบฒเบเบฑเปเบ.
เบเบตเปเบเบตเป
ViennaNET.CallContext
เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบดเบงเบเปเปเบเบฝเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบฅเบฐเบซเบงเปเบฒเบเบฅเบฐเบเบปเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เปเบเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบทเปเบชเบฒเบเบฅเบฐเบซเบงเปเบฒเบ microservices เบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฝเบงเบเบฑเบ, เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเบฒเบเปเบ saga. เบญเบฑเบเบเบตเปเปเบฎเบฑเบเปเบซเปเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบชเบปเปเบเบเปเบญเบกเบเบฑเบเบเปเปเบเบงเบฒเบกเบเปเปเบกเบนเบเบเปเบงเบเปเบเบฑเปเบเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเบเบญเบเบเบนเปเปเบเป, เบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบฎเปเบญเบเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเปเบเบเบญเบเบเปเบฒเบ, เบเบตเปเบขเบนเป IP เปเบซเบผเปเบเปเบฅเบฐเบเปเปเบกเบนเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบ. เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบฒเบเบชเบปเปเบเบเปเปเบเปเปเบกเบนเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฑเบเบเบฐเบเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบ ViennaNET.CallContext
, เปเบเบดเปเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบเปเปเบกเบนเบเบเบฒเบเบเบฒเบเบฎเปเบญเบเบเปเบเบตเปเปเบเบปเปเบฒเบกเบฒเปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบงเบดเบเบตเบเบฒเบเบฎเปเบญเบเบเปเปเบเปเบเบทเบเบเปเบฒเปเบเบตเบ, เบเปเบฒเบเปเบเบงเบซเบผเบทเบเปเบฒเบ Http, เบเปเปเบชเปเบฒเบเบฑเบ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบญเบเบเบตเปเบเบฐเบชเบปเปเบเบเปเบฒเบฎเปเบญเบเบเปเบซเบผเบทเบเปเปเบเบงเบฒเบกเบญเบญเบ, เบเปเปเบกเบนเบเบเบทเบเปเบญเบปเบฒเบกเบฒเบเบฒเบเบชเบฐเบเบฒเบเบเบฒเบเปเบฅเบฐเบงเบฒเบเปเบงเปเปเบเบซเบปเบง. เบเบฑเปเบเบเบฑเปเบ, เบเบฒเบเบเปเบฅเบดเบเบฒเบเบเปเปเปเบเปเบเปเบฎเบฑเบเบเปเปเบกเบนเบเบเปเบงเบเปเบฅเบฐเบเบธเปเบกเบเบญเบเบกเบฑเบเปเบเบเบฒเบเบเบฝเบงเบเบฑเบ.
เบเปโเบเบญเบโเปเบโเบเปเบฒเบโเบชเปเบฒโเบฅเบฑเบโเบเบงเบฒเบกโเบชเบปเบโเปเบโเบเบญเบโเบเปเบฒเบโ, เบเบงเบโเปเบฎเบปเบฒโเบซเบงเบฑเบโเบงเปเบฒโเบเปเบฒเบโเบเบฐโเบกเบตโเบเปเบฒโเปเบซเบฑเบโเปเบฅเบฐโเบเบถเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโ!
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com