Raiffeisenbank .NET แแแแแแแแแ แแ แกแแแแแแแแแแ แแแ แซแแแแแก ViennaNET-แแก แจแแแแแ แกแแก แแแแแ แแแแแฎแแแแแก. แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ แแ แ แแขแแ แแแแแแแ แแฅแแแแ,
แแ แกแขแแขแแแจแ แฉแแแ แแแแแแแขแแแ แฏแแ แแแแแ แแแกแแแแแแแกแฌแแแแแแ แแแแแแแแแแแแก แแแแแฌแแแแแฃแ แขแ แแแแแฅแชแแแแแแ, แ แแแแแแแ แแ แแแแแชแแแแ แแแแแแแแ แแฃแจแแแแแกแแแแก, แ แแแแแแแช แจแแแแซแแแแ แแฎแแแแ แฉแแแแก GitHub แกแแชแแแจแ (
ViennaNET.Sagas
แ แแแแกแแช แแ แแแฅแขแ แแแแแแแก DDD-แแ แแ แแแแ แแกแแ แแแกแแก แแ แฅแแขแแฅแขแฃแ แแแ, แแแจแแ แ แแแแกแแช แแแแแแก แแแแแแ แแแฌแแแแแแ แกแฎแแแแแกแฎแแ แกแแ แแแกแแแแ, แฉแแแแแ แแ แแแแแแ, แ แแแแแแช แแแแแแจแแ แแแฃแแแ แแแแแฌแแแแแฃแแ แขแ แแแแแฅแชแแแก แแแฅแแแแแแแก แแแแแ แแแแก แแฃแชแแแแแแแแแกแแแ, แ แแแแแ แแแแ แ แกแชแแแแ แ แฎแจแแ แแ แแแฅแแแแแแก แ แแแแแแแแ แแแแแแแ แแ แแแ แแฃแแแ. แแฅแแแ แจแแแแซแแแแ แแแแชแแแ แแกแแ แแแฅแแแแแแแแก แฃแคแ แ แแแขแแแฃแ แแ, แแแแแแแแแ,
แฉแแแแก แแ แแแฅแขแแแจแ แฉแแแ แแแแแแฎแแ แชแแแแแ แแแ แขแแแ, แแแแ แแ แกแแกแแ แแแแแ แแแฅแแแแแแ: แกแแแ, แฃแคแ แ แกแฌแแ แแ แแ แแแกแขแ แแ แแแแแ แแแคแฃแซแแแแฃแแ แกแแแ. แแแกแ แแ แกแ แจแแแแแแแ: แแ แกแแแแแก แแแ แแแแฃแแ แแแแแแก แกแชแแแแ แ, แ แแแแแจแแช แแฃแชแแแแแแแแ แแแแ แแชแแแแแก แแแแแแแแแแ แฃแแแ แจแแกแ แฃแแแแ แกแฎแแแแแกแฎแแ แกแแ แแแกแแแจแ แแ แแฃ แ แแแแ แแ แแแแแแ แฌแแ แแแแฅแแแแแ แ แแแแแแแ แแขแแแแ, แแฃแชแแแแแแแแ แแแแแซแแฎแแ แฃแแแ แแแแ แฃแแแแแก แแ แแชแแแฃแ แ แงแแแแ แฌแแแ แกแแคแแฎแฃแ แแ, แกแแแแช แแ แแก แแแแแแแแกแฌแแแแแฃแแ. แแแ แแแแ, แกแแแแก แแแแแก, แฌแแ แแแขแแแแก แแแฃแฎแแแแแแ, แฉแแแ แแแฆแแแ แแแแแแแแแแ แฃแ แแแแแชแแแแแก แงแแแแ แแแแแแจแ.
แฉแแแแ แแแแแแแแแขแแชแแ แแแแแ แจแแกแ แฃแแแแฃแแแ แแแกแ แซแแ แแแแแ แคแแ แแแ แแ แแ แแ แแก แแแแแแจแแ แแแฃแแ แกแฎแแ แกแแ แแแกแแแแแ แฃแ แแแแ แแฅแแแแแแแก แ แแแแ แแแแแแแก แแแแแงแแแแแแกแแแ. แแแกแ แแแแแงแแแแแ แ แแฃแแ แแ แแ แแก: แฃแแ แแแแ แจแแฅแแแแแ แกแแแแแแกแ แแแกแขแ แแฅแขแฃแแ แแแแกแแก แจแแแแแแแแแแ SagaBase<T>, แกแแแแช T แแ แแก แแฅแแแแ แแแแขแแฅแกแขแฃแ แ แแแแกแ, แ แแแแแจแแช แจแแแแซแแแแ แจแแแแแฎแแ แกแแแแก แแฃแจแแแแแกแแแแก แแฃแชแแแแแแแ แกแแฌแงแแกแ แแแแแชแแแแแ, แแกแแแ แ แแแแ แช แแแแแแ แแ แจแฃแแแแแฃแ แ แจแแแแแ. แแแแขแแฅแกแขแฃแ แ แแแแแแแแ แแแแแแชแแแ แงแแแแ แกแแคแแฎแฃแ แก แจแแกแ แฃแแแแแก แแ แแก. แแแแแ แกแแแ แแ แแก แแแฅแแแแฅแแแแแก แแ แแฅแแแ แแแแกแ, แแแแขแแ แแแกแขแแแชแแ แจแแแซแแแแ แแแแแแแกแแแก 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
แแ แแก แแแแแชแแแแ แแแแแกแแแ แแฃแจแแแแแก แแแแแแ แ แแแแกแแแแแ แฌแแ แขแแแ, แ แแแแแ แแฅ แแฅแแแแแ แกแแแฃแจแแ แแ แแแฃแแ, แกแแชแแแแแ แแแแแ แแขแฃแ แแ แแแฃแแแแแแ แแฃแจแแแแแกแแแแก, แแกแแแ แแ แซแแแแแแแแก แจแแแกแ แฃแแแแแแแ แแ แแแ แแแแแ แ SQL แแแแฎแแแแแแ. แแแแฏแแ แแแกแแฎแแ แฎแแแแแแ แแแแกแแก แจแแกแแซแแแแแแแแแแก แจแแแฆแฃแแแ แแแแแชแแแแ แแแแแกแแแ แแฃแจแแแแแกแแแแก, แแแแแแแแแ, แฃแแ แฃแแแแแงแแก แแฎแแแแ แแแแแชแแแแแแก แฌแแแแแฎแแแก แจแแกแแซแแแแแแแ. แแกแแแ แจแแแแฎแแแแแแแกแแแแก IEntityFactoryService
แแ แกแแแแแก แฌแแแแแแ แ - แแแขแแ แคแแแกแ IEntityRepositoryFactory
, แ แแแแแแช แแชแฎแแแแแก แแฎแแแแ แกแแชแแแแแแก แจแแฅแแแแก แแแแแแก.
แแแแแชแแแแ แแแแแแ แฃแจแฃแแแ แฌแแแแแแกแแแแก แแแแแแงแแแแแ แแ แแแแแแแ แแก แแแฅแแแแแแ. แแแแแแฃแ DBMS-แก, แ แแแแแกแแช แฉแแแ แแแงแแแแแ แฉแแแแก แแฃแแแแแจแ, แแฅแแก แกแแแฃแแแ แ แแแแฎแแ แชแแแแแแ: ViennaNET.Orm.MSSQL, ViennaNET.Orm.Oracle, ViennaNET.Orm.SQLite, ViennaNET.Orm.PostgreSql
.
แแแแแแ แแฃแแแ, แ แแแแแแแแ แแ แแแแแแแ แ แจแแแซแแแแ แแแ แแแแกแขแ แแ แแแก แแ แ แแแแแแแชแแแจแ แแ แแแ แแฃแแแ, แ แแช แกแแจแฃแแแแแแก แแซแแแแ, แแแแแแแแแ, แแ แแ แกแแ แแแกแแก แคแแ แแแแแจแ, แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแแคแแแแชแแแก แงแแแแแแแแ แ แฎแแ แฏแแแแก แแแ แแจแ, แแแแแฎแแ แชแแแแแก แแขแแแแแ แแแ แแแแ แแชแแ. แแ แแ DBMS แแแแ แแแ. แกแแญแแ แ แแแแจแแ แแก แจแแ แฉแแแแก แแแฅแแแแแแ แแ, แจแแกแแแแแแกแแ, แแ แแแแแแแ แ แแแแแ แแขแฃแแ แแ แแแฃแแแก แแแแกแแกแแแแก (แ แแแแแแแช แแฌแแ แแแ แแแแแชแแแแ แแแแแก แชแฎแ แแแแแแ แ แฃแแแแ) แแแแแ แแแแแ แแแแแฅแขแแก BoundedContext แแแแกแจแ (แจแแแชแแแก แแแแแแแก แแ แแแฃแแแแแก แ แแแแกแขแ แแชแแแก แแแแแแก) แแ แแแก แแแแแแแแ แแจแ แ แแแแกแขแ แแชแแแก แแแแ. ApplicationContext (แจแแแชแแแก แแแแแแแชแแแก แแ แแแฃแแแแแก แ แแแแกแขแ แแชแแแก แแแแแแแแก, แแแ แแแแแ แแแแฎแแแแแแกแ แแ แแ แซแแแแแแแก), แกแแแแช แแ แแฃแแแแขแแ แแแแฆแแแ แแแแจแแ แแก แแแแแขแแคแแแแขแแ แ แแแแคแแแฃแ แแชแแแแแ:
"db": [
{
"nick": "mssql_connection",
"dbServerType": "MSSQL",
"ConnectionString": "...",
"useCallContext": true
},
{
"nick": "oracle_connection",
"dbServerType": "Oracle",
"ConnectionString": "..."
}
],
แแแแแชแฎแแแแก แแแแขแแฅแกแขแแก แแแแแแแแ:
internal sealed class DbContext : ApplicationContext
{
public DbContext()
{
AddEntity<SomeEntity>("mssql_connection");
AddEntity<MigratedSomeEntity>("oracle_connection");
AddEntity<AnotherEntity>("oracle_connection");
}
}
แแฃ แแแแจแแ แแก ID แแ แแ แแก แแแแแแแแฃแแ, แแแจแแ แแแแแงแแแแแฃแแ แแฅแแแแ แแแแจแแ แ แกแแฎแแแแ โdefaultโ.
แแ แแแฃแแแแแก แแแ แแแแแ แ แ แฃแแ แแแแแชแแแแ แแแแแก แชแฎแ แแแแแแ แฎแแ แชแแแแแแแ แกแขแแแแแ แขแฃแแ NHibernate แแแกแขแ แฃแแแแขแแแแก แแแแแงแแแแแแ. แแฅแแแ แจแแแแซแแแแ แแแแแแงแแแแ แแฆแฌแแ แ แ แแแแ แช xml แคแแแแแแแก, แแกแแแ แแแแกแแแแก แกแแจแฃแแแแแแ. Unit แขแแกแขแแแจแ แกแแชแแแแแแก แแแกแแฎแแ แฎแแแแแ แฉแแฌแแ แแกแแแแก แแ แแก แแแแแแแแแแ ViennaNET.TestUtils.Orm
.
ViennaNET.Orm.* แแแแแงแแแแแแก แกแ แฃแแ แแแแแแแแแแ แจแแแแซแแแแ แแฎแแแแ
ViennaNET. Messaging.*
แแแแแแแแแแแแแก แแแแ แแแ แ แแแแแแแ แแฃแจแแแแแกแแแแก.
แ แแแแแแแ แแฃแจแแแแแกแแแแก แแ แฉแแฃแแ แแฅแแ แแแแแ แแแแแแแ, แ แแช แกแฎแแแแแกแฎแแ DBMS-แแแแแ, แแแ แซแแ, แแแฅแกแแแแแฃแ แแ แแ แแแแแ แแแแแแแ แแแแแแแแแแแกแแแ แแฃแจแแแแแก แแแแแกแแแ แแกแแ, แแแฃแฎแแแแแแ แแแแแงแแแแแฃแแ แ แแแแก แแแแแฏแแ แแกแ. แแแแแแแแแแ 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 = ...});
}
แแ แกแแแแแก แกแแแ แแแ แแแ แแแแขแ แแแกแแฏแแก แกแแ แแแแแแแชแแแกแ แแ แแแกแแ แแแแแแแชแแแกแแแแก: แแฎแแแแ แขแแฅแกแขแ, XML แแ JSON, แแแแ แแ แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ, แจแแแแซแแแแ แแแ แขแแแแ แแแแแแแแ แแฅแแแแ แกแแแฃแแแ แ แแแขแแ แคแแแกแแก แแแแแ แแแ. IMessageSerializer ะธ IMessageDeserializer
.
แฉแแแ แจแแแแชแแแแ แจแแแแแแแ แฉแฃแแแแแแ แแแแแแฃแแ แ แแแแก แแแแแฏแแ แแก แฃแแแแแแฃแ แ แจแแกแแซแแแแแแแแแ, แแแ. ViennaNET.Messaging.MQSeriesQueue
แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแแแแ แแ แ แแฎแแแแ แขแแฅแกแขแฃแ แ, แแ แแแแ แแแแขแ แจแแขแงแแแแแแแแแ แแ ViennaNET.Messaging.RabbitMQQueue
แแฎแแ แก แฃแญแแ แก แแแ แจแ แฃแขแแแแชแแแก แแ แคแ แแแแก แแ แแก แ แแแจแ. RabbitMQ-แแกแแแแก แฉแแแแ แแแแแขแแ แแก แจแแคแฃแแแ แแกแแแ แแฎแแ แชแแแแแแก RPC-แแก แแแ แแแแฃแ แแกแแแแกแแแแก: แฉแแแ แแแแแแแแแ แจแแขแงแแแแแแแแก แแ แแแแแแแแแ แแแกแฃแฎแก แกแแแชแแแแฃแ แ แแ แแแแแแ แ แแแแแแ, แ แแแแแแช แแฅแแแแแ แแฎแแแแ แแ แแ แกแแแแกแฃแฎแ แจแแขแงแแแแแแแแกแแแแก.
ViennaNET.CallContext
แฉแแแ แแแงแแแแแ แ แแแแแก แแ แ แแฎแแแแ แกแฎแแแแแกแฎแแ แกแแกแขแแแแแก แจแแ แแก แแแขแแแ แแชแแแกแแแแก, แแ แแแแ แแ แแ แแ แแแแแ แแ แแแ แแแแก แแแแ แแกแแ แแแกแแแก แจแแ แแก แแแแฃแแแแแชแแแกแแแแก, แแแแแแแแแ, แกแแแแก แคแแ แแแแแจแ. แแแแ แแแแแแฌแแแ แจแแขแงแแแแแแแแกแแแ แแ แแแ แแกแแแ แแแแฎแแแ แ แแแแแชแแแแแแก แแแแแชแแแแก แแฃแชแแแแแแแแ, แ แแแแ แแชแแ แแแแฎแแแ แแแแแก แจแแกแแแ, แแแแฎแแแแแก แแแแแขแแคแแแแขแแ แ แแแแแแแ แแแแแแแ แจแแกแแแแกแแแแก, แฌแงแแ แแก IP แแแกแแแแ แแ แแ แแแขแแ แแแแชแแแก แแแแแชแแแแแ. แแ แแแแแชแแแแแแก แแแแแแแแแแแก แแแแกแแฎแแ แชแแแแแแแแ, แฉแแแ แจแแแแแฃแจแแแแ แแแแแแแแแแ ViennaNET.CallContext
, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แจแแแแแฎแแ แแแแแชแแแแแ แกแแ แแแกแจแ แจแแกแฃแแ แแแแฎแแแแแแแ. แแ แจแแแแฎแแแแแจแ, แแ แแฅแแก แแแแจแแแแแแแ, แ แแแแ แแแฎแแ แแแแฎแแแแ, แ แแแแก แกแแจแฃแแแแแแ แแฃ Http-แแก แกแแจแฃแแแแแแ. แจแแแแแ, แแแแแแแแ แแแแฎแแแแแก แแ แจแแขแงแแแแแแแแก แแแแแแแแแแแ, แแแแแชแแแแแ แแฆแแแฃแแแ แแแแขแแฅแกแขแแแแ แแ แแแแกแแแแ แกแแแแฃแ แแแจแ. แแแ แแแแ, แจแแแแแแ แกแแ แแแกแ แแฆแแแก แแแแฎแแแ แ แแแแแชแแแแแก แแ แแแ แแแแก แแแก แแแแแ แแแแ.
แแแแแแแแ แงแฃแ แแแฆแแแแกแแแแก, แฉแแแ แแแฃแแแแแแแ แแแแแ แแฅแแแแก แแแแแแขแแ แก แแ แแฎแแแแแแก!
แฌแงแแ แ: www.habr.com